class Slimi::Filters::Attribute
Handle ‘[:slimi, :attributes, …]`.
Public Instance Methods
on_html_attr(name, value)
click to toggle source
@param [String] name @param [Array] value @return [Array]
Calls superclass method
# File lib/slimi/filters/attribute.rb, line 18 def on_html_attr(name, value) if value[0] == :slimi && value[1] == :attrvalue && !options[:merge_attrs][name] escape = value[2] code = value[3] case code when 'true' [:html, :attr, name, [:multi]] when 'false', 'nil' [:multi] else tmp = unique_name [:multi, [:code, "#{tmp} = #{code}"], [:if, tmp, [:if, "#{tmp} == true", [:html, :attr, name, [:multi]], [:html, :attr, name, [:escape, escape, [:dynamic, tmp]]]]]] end else @attr = name super end end
on_html_attrs(*expressions)
click to toggle source
@param [Array<Array>] expressions @return [Array]
# File lib/slimi/filters/attribute.rb, line 11 def on_html_attrs(*expressions) [:multi, *expressions.map { |expression| compile(expression) }] end
on_slimi_attrvalue(escape, code)
click to toggle source
@param [Boolean] escape @param [String] code\ @return [Array]\
# File lib/slimi/filters/attribute.rb, line 45 def on_slimi_attrvalue(escape, code) if (delimiter = options[:merge_attrs][@attr]) tmp = unique_name [:multi, [:code, "#{tmp} = #{code}"], [:if, "Array === #{tmp}", [:multi, [:code, "#{tmp} = #{tmp}.flatten"], [:code, "#{tmp}.map!(&:to_s)"], [:code, "#{tmp}.reject!(&:empty?)"], [:escape, escape, [:dynamic, "#{tmp}.join(#{delimiter.inspect})"]]], [:escape, escape, [:dynamic, tmp]]]] else [:escape, escape, [:dynamic, code]] end end