@@ -127,6 +127,15 @@ defmodule Phoenix.HTML.Tag do
127127 { :safe , attrs |> Enum . to_list ( ) |> build_attrs ( ) }
128128 end
129129
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+
130139 defp build_attrs ( [ { "data" , v } | t ] ) when is_list ( v ) ,
131140 do: nested_attrs ( v , " data" , t )
132141
@@ -145,15 +154,6 @@ defmodule Phoenix.HTML.Tag do
145154 defp build_attrs ( [ { :class , v } | t ] ) when is_list ( v ) ,
146155 do: [ " class=\" " , class_value ( v ) , ?" | build_attrs ( t ) ]
147156
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-
157157 defp build_attrs ( [ { k , v } | t ] ) ,
158158 do: [ ?\s , key_escape ( k ) , ?= , ?" , attr_escape ( v ) , ?" | build_attrs ( t ) ]
159159
@@ -172,10 +172,11 @@ defmodule Phoenix.HTML.Tag do
172172 value
173173 |> Enum . filter ( & & 1 )
174174 |> Enum . join ( " " )
175+ |> attr_escape ( )
175176 end
176177
177178 defp class_value ( value ) do
178- value
179+ attr_escape ( value )
179180 end
180181
181182 defp key_escape ( value ) when is_atom ( value ) , do: String . replace ( Atom . to_string ( value ) , "_" , "-" )
0 commit comments