class Slim::Translator::DynamicTranslator

Public Instance Methods

call(exp) click to toggle source
# File lib/slim/translator.rb, line 92
def call(exp)
  @captures_count, @captures_var, @text = 0, unique_name, ''.dup

  result = compile(exp)

  if @captures_count > 0
    result.insert(1, [:code, "#{@captures_var}=[]"])
    result << [:slim, :output, false, "#{options[:tr_fn]}(#{@text.inspect}).gsub(/%(\\d+)/) { #{@captures_var}[$1.to_i-1] }", [:multi]]
  else
    result << [:slim, :output, false, "#{options[:tr_fn]}(#{@text.inspect})", [:multi]]
  end
end
on_slim_output(escape, code, content) click to toggle source
# File lib/slim/translator.rb, line 110
def on_slim_output(escape, code, content)
  @captures_count += 1
  @text << "%#{@captures_count}"
  [:capture, "#{@captures_var}[#{@captures_count-1}]", [:slim, :output, escape, code, content]]
end
on_static(text) click to toggle source
# File lib/slim/translator.rb, line 105
def on_static(text)
  @text << text
  [:multi]
end