|
@@ -20,27 +20,28 @@
|
|
|
|
|
|
|
|
|
emit_tag(TagName, Props) ->
|
|
|
- [<<"<">>, TagName] ++ write_props(Props) ++ [<<"/>">>].
|
|
|
+ [<<"<">>, TagName] ++ write_props(TagName, Props) ++ [<<"/>">>].
|
|
|
|
|
|
emit_tag(TagName, C, Props) when C == undefined orelse C == [[]] orelse C == [undefined] ->
|
|
|
emit_tag(TagName, [], Props);
|
|
|
emit_tag(TagName, C, Props) when (C == [] orelse C == <<>>) and ?VOID(TagName) ->
|
|
|
emit_tag(TagName, Props);
|
|
|
emit_tag(TagName, [], Props) ->
|
|
|
- [<<"<">>, TagName, write_props(Props), <<">">>, <<"</">>, TagName, <<">">>];
|
|
|
+ [<<"<">>, TagName, write_props(TagName, Props), <<">">>, <<"</">>, TagName, <<">">>];
|
|
|
emit_tag(TagName, Content, Props) ->
|
|
|
- [<<"<">>, TagName, write_props(Props), <<">">>, Content,<<"</">>, TagName, <<">">>].
|
|
|
+ [<<"<">>, TagName, write_props(TagName, Props), <<">">>, Content,<<"</">>, TagName, <<">">>].
|
|
|
|
|
|
+write_props(TagName, Props) -> [ display_property(TagName, Prop) || Prop <- Props].
|
|
|
|
|
|
-write_props(Props) -> lists:map(fun display_property/1, Props).
|
|
|
-
|
|
|
-display_property({_, undefined}) ->
|
|
|
+display_property(_, {_, undefined}) ->
|
|
|
[];
|
|
|
-display_property({Id, []}) when (Id =/= <<"value">>) andalso (Id =/= <<"disabled value">>) andalso (Id =/= <<"selected value">>) andalso (Id =/= <<"selected disabled value">>) -> %% fix empty string value option
|
|
|
+display_property(TagName, {Id, []}) when TagName =/= <<"option">> orelse
|
|
|
+((Id =/= <<"value">>) andalso (Id =/= <<"disabled value">>) andalso
|
|
|
+(Id =/= <<"selected value">>) andalso (Id =/= <<"selected disabled value">>)) -> %% fix empty string value option
|
|
|
[];
|
|
|
-display_property({Id, Value} = P) when (Id == <<"class">> andalso (erlang:is_list(Value) andalso erlang:is_atom(hd(Value)))) orelse Id == <<"data-toggle">> ->
|
|
|
+display_property(_, {Id, Value} = P) when (Id == <<"class">> andalso (erlang:is_list(Value) andalso erlang:is_atom(hd(Value)))) orelse Id == <<"data-toggle">> ->
|
|
|
prop(P);
|
|
|
-display_property({Prop, Value}) -> [<<" ">>, nitro:to_binary(Prop), <<"=\"">>, nitro:to_binary(Value), <<"\"">>].
|
|
|
+display_property(_, {Prop, Value}) -> [<<" ">>, nitro:to_binary(Prop), <<"=\"">>, nitro:to_binary(Value), <<"\"">>].
|
|
|
|
|
|
prop({Id, Value}) when erlang:is_atom(Value) ->
|
|
|
[<<" ">>, Id, <<"=\"">>, nitro:to_binary(Value), <<"\"">>];
|