@@ -127,6 +127,15 @@ defmodule Phoenix.HTML.Tag do
127
127
{ :safe , attrs |> Enum . to_list ( ) |> build_attrs ( ) }
128
128
end
129
129
130
+ defp build_attrs ( [ { k , true } | t ] ) ,
131
+ do: [ ?\s , key_escape ( k ) | build_attrs ( t ) ]
132
+
133
+ defp build_attrs ( [ { _ , false } | t ] ) ,
134
+ do: build_attrs ( t )
135
+
136
+ defp build_attrs ( [ { _ , nil } | t ] ) ,
137
+ do: build_attrs ( t )
138
+
130
139
defp build_attrs ( [ { "data" , v } | t ] ) when is_list ( v ) ,
131
140
do: nested_attrs ( v , " data" , t )
132
141
@@ -145,15 +154,6 @@ defmodule Phoenix.HTML.Tag do
145
154
defp build_attrs ( [ { :class , v } | t ] ) when is_list ( v ) ,
146
155
do: [ " class=\" " , class_value ( v ) , ?" | build_attrs ( t ) ]
147
156
148
- defp build_attrs ( [ { k , true } | t ] ) ,
149
- do: [ ?\s , key_escape ( k ) | build_attrs ( t ) ]
150
-
151
- defp build_attrs ( [ { _ , false } | t ] ) ,
152
- do: build_attrs ( t )
153
-
154
- defp build_attrs ( [ { _ , nil } | t ] ) ,
155
- do: build_attrs ( t )
156
-
157
157
defp build_attrs ( [ { k , v } | t ] ) ,
158
158
do: [ ?\s , key_escape ( k ) , ?= , ?" , attr_escape ( v ) , ?" | build_attrs ( t ) ]
159
159
@@ -172,10 +172,11 @@ defmodule Phoenix.HTML.Tag do
172
172
value
173
173
|> Enum . filter ( & & 1 )
174
174
|> Enum . join ( " " )
175
+ |> attr_escape ( )
175
176
end
176
177
177
178
defp class_value ( value ) do
178
- value
179
+ attr_escape ( value )
179
180
end
180
181
181
182
defp key_escape ( value ) when is_atom ( value ) , do: String . replace ( Atom . to_string ( value ) , "_" , "-" )
0 commit comments