class Temple::HTML::AttributeMerger
def on_html_attrs(*attrs)
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] if result[name] delimiter = options[:attr_delimiter][name] raise "Multiple #{name} attributes specified" unless delimiter if empty_exp?(value) result[name] = [:html, :attr, name, [:multi, result[name][3], value]] elsif contains_static?(value) result[name] = [:html, :attr, name, [:multi, result[name][3], [:static, delimiter], value]] else tmp = unique_name result[name] = [:html, :attr, name, [:multi, result[name][3], [:capture, tmp, value], [:if, "!#{tmp}.empty?", [:multi, [:static, delimiter], [:dynamic, tmp]]]]] end else result[name] = attr names << name end end result = options[:sort_attrs] ? result.sort : names.map {|k| [k, result[k]] } [:multi, *result.map {|name,attr| compile(attr) }] end