lib/temple/html/attribute_merger.rb in temple-0.3.4 vs lib/temple/html/attribute_merger.rb in temple-0.3.5

- old
+ new

@@ -1,17 +1,18 @@ module Temple module HTML # @api public class AttributeMerger < Filter default_options[:attr_delimiter] = {'id' => '_', 'class' => ' '} + default_options[:sort_attrs] = true def on_html_attrs(*attrs) + names = [] result = {} attrs.each do |attr| raise(InvalidExpression, 'Attribute is not a html attr') if attr[0] != :html || attr[1] != :attr name, value = attr[2].to_s, attr[3] - next if empty_exp?(value) if result[name] delimiter = options[:attr_delimiter][name] raise "Multiple #{name} attributes specified" unless delimiter if empty_exp?(value) result[name] = [:html, :attr, name, @@ -35,12 +36,14 @@ [:static, delimiter], [:dynamic, tmp]]]]] end else result[name] = attr + names << name end end - [:multi, *result.sort.map {|name,attr| compile(attr) }] + result = options[:sort_attrs] ? result.sort : names.map {|k| [k, result[k]] } + [:multi, *result.map {|name,attr| compile(attr) }] end def on_html_attr(name, value) if empty_exp?(value) value