Class Erubis::Ejavascript
In: erubis/engine/ejavascript.rb
Parent: Engine

engine for JavaScript

Methods

Public Class methods

[Source]

# File erubis/engine/ejavascript.rb, line 26
    def initialize(input, properties={})
      @indent = properties[:indent] || ''
      @buf = properties[:out] || '_buf'
      #@bufclass = properties[:outclass] || 'StringBuffer'
      super
    end

Public Instance methods

[Source]

# File erubis/engine/ejavascript.rb, line 80
    def add_expr_debug(src, code)
      add_indent(src, @indent)
      code.strip!
      src << "alert(\"*** debug: #{code}=\"+(#{code}));"
    end

[Source]

# File erubis/engine/ejavascript.rb, line 75
    def add_expr_escaped(src, code)
      add_indent(src, @indent)
      src << @buf << '.push(' << escaped_expr(code) << ');'
    end

[Source]

# File erubis/engine/ejavascript.rb, line 70
    def add_expr_literal(src, code)
      add_indent(src, @indent)
      src << @buf << '.push(' << code.strip << ');'
    end

[Source]

# File erubis/engine/ejavascript.rb, line 49
    def add_indent(src, indent)
      src << (src.empty? || src[-1] == ?\n ? indent : ' ')
    end

[Source]

# File erubis/engine/ejavascript.rb, line 86
    def add_postamble(src)
      src << "\n" if src[-1] == ?;
      src << @indent << 'document.write(' << @buf << ".join(\"\"));\n"
    end

[Source]

# File erubis/engine/ejavascript.rb, line 33
    def add_preamble(src)
      src << "#{@indent}var #{@buf} = [];"
    end

[Source]

# File erubis/engine/ejavascript.rb, line 66
    def add_stmt(src, code)
      src << code
    end

[Source]

# File erubis/engine/ejavascript.rb, line 53
    def add_text(src, text)
      return if text.empty?
      add_indent(src, @indent)
      src << @buf << '.push("'
      s = escape_text(text)
      if s[-1] == ?\n
        s[-2, 2] = ''
        src << s << "\");\n"
      else
        src << s << "\");"
      end
    end

[Source]

# File erubis/engine/ejavascript.rb, line 37
    def escape_text(text)
      @@table_ ||= { "\r"=>"\\r", "\n"=>"\\n\\\n", "\t"=>"\\t", '"'=>'\\"', "\\"=>"\\\\" }
      return text.gsub!(/[\r\n\t"\\]/) { |m| @@table_[m] } || text
    end

[Validate]