class Haml::Filters::Ruby2JS

Public Instance Methods

compile(node) click to toggle source
# File lib/ruby2js/haml.rb, line 26
def compile(node)
  temple = [:multi]
  temple << [:static, "<script type='text/javascript'>\n"]
  compile_ruby!( temple , node )
  temple << [:static, "\n</script>"]
  temple
end
compile_ruby!(temple, node) click to toggle source

Copird from text base, added ruby2js convert

# File lib/ruby2js/haml.rb, line 35
def compile_ruby!(temple, node)
  text = node.value[:text]
  if ::Haml::Util.contains_interpolation?(node.value[:text])
    # original: Haml::Filters#compile
    text = ::Haml::Util.unescape_interpolation(text).gsub(/(\\+)n/) do |s|
      escapes = $1.size
      next s if escapes % 2 == 0
      "#{'\\' * (escapes - 1)}\n"
    end
    text.prepend("\n")

    temple << [:dynamic, "::Ruby2JS.convert(#{text} ).to_s"]
  else
    temple << [:static, ::Ruby2JS.convert(text).to_s]
  end
end