Module: Opal::ERB

Defined in:
lib/opal/erb.rb,
lib/opal/erb/version.rb

Defined Under Namespace

Classes: Processor

Constant Summary collapse

VERSION =
'0.2.0'

Class Method Summary collapse

Class Method Details

.parse(str, name = '(erb)') ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
# File 'lib/opal/erb.rb', line 7

def self.parse(str, name='(erb)')
  body = str.gsub('"', '\\"').gsub(/<%=([\s\S]+?)%>/) do
    inner = $1.gsub(/\\'/, "'").gsub(/\\"/, '"')
    "\")\nout.<<(#{ inner })\nout.<<(\""
  end.gsub(/<%([\s\S]+?)%>/) do
    "\")\n#{ $1 }\nout.<<(\""
  end

  code = "ERB.new('#{name}') do\nout = []\nout.<<(\"#{ body }\")\nout.join\nend\n"
  Opal.parse code
end