Class: Slimi::Filters::Splat

Inherits:
Base
  • Object
show all
Defined in:
lib/slimi/filters/splat.rb

Defined Under Namespace

Classes: Builder

Instance Method Summary collapse

Methods inherited from Base

#on_slimi_control, #on_slimi_embedded, #on_slimi_output, #on_slimi_position, #on_slimi_text

Instance Method Details

#call(exp) ⇒ Array

Parameters:

  • exp (Array)

Returns:

  • (Array)


10
11
12
13
14
15
16
17
18
# File 'lib/slimi/filters/splat.rb', line 10

def call(exp)
  @splat_options = nil
  exp = compile(exp)
  if @splat_options
    [:multi, [:code, "#{@splat_options} = #{splat_builder_options.inspect}"], exp]
  else
    exp
  end
end

#on_html_attrs(*attrs) ⇒ Array

Parameters:

  • attrs (Array<Array>)

Returns:

  • (Array)


22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/slimi/filters/splat.rb', line 22

def on_html_attrs(*attrs)
  return super unless attrs.any? { |attr| splat?(attr) }

  @splat_options ||= unique_name
  builder = unique_name
  result = [:multi]
  result << [:code, "#{builder} = ::#{Builder.name}.new(#{@splat_options})"]
  attrs.each do |attr|
    result << compile_attribute(builder, attr)
  end
  result << [:dynamic, "#{builder}.to_s"]
end