| Module | Erubis::JavascriptGenerator |
| In: |
lib/erubis/engine/ejavascript.rb
|
# File lib/erubis/engine/ejavascript.rb, line 73
73: def add_expr_debug(src, code)
74: add_indent(src, @indent)
75: code.strip!
76: src << "alert(\"*** debug: #{code}=\"+(#{code}));"
77: end
# File lib/erubis/engine/ejavascript.rb, line 69
69: def add_expr_escaped(src, code)
70: add_expr_literal(src, escaped_expr(code))
71: end
# File lib/erubis/engine/ejavascript.rb, line 63
63: def add_expr_literal(src, code)
64: add_indent(src, @indent)
65: code.strip!
66: src << "#{@buf}.push(#{code});"
67: end
# File lib/erubis/engine/ejavascript.rb, line 42
42: def add_indent(src, indent)
43: src << (src.empty? || src[-1] == ?\n ? indent : ' ')
44: end
# File lib/erubis/engine/ejavascript.rb, line 79
79: def add_postamble(src)
80: src << "\n" if src[-1] == ?;
81: if @docwrite
82: src << @indent << 'document.write(' << @buf << ".join(\"\"));\n"
83: else
84: src << @indent << @buf << ".join(\"\");\n"
85: end
86: end
# File lib/erubis/engine/ejavascript.rb, line 33
33: def add_preamble(src)
34: src << "#{@indent}var #{@buf} = [];"
35: end
# File lib/erubis/engine/ejavascript.rb, line 59
59: def add_stmt(src, code)
60: src << code
61: end
# File lib/erubis/engine/ejavascript.rb, line 46
46: def add_text(src, text)
47: return if text.empty?
48: add_indent(src, @indent)
49: src << @buf << '.push("'
50: s = escape_text(text)
51: if s[-1] == ?\n
52: s[-2, 2] = ''
53: src << s << "\");\n"
54: else
55: src << s << "\");"
56: end
57: end
# File lib/erubis/engine/ejavascript.rb, line 37
37: def escape_text(text)
38: @@table_ ||= { "\r"=>"\\r", "\n"=>"\\n\\\n", "\t"=>"\\t", '"'=>'\\"', "\\"=>"\\\\" }
39: return text.gsub!(/[\r\n\t"\\]/) { |m| @@table_[m] } || text
40: end
# File lib/erubis/engine/ejavascript.rb, line 25
25: def init_generator(properties={})
26: super
27: @escapefunc ||= 'escape'
28: @indent = properties[:indent] || ''
29: @buf = properties[:out] || '_buf'
30: @docwrite = properties[:docwrite] != false # '!= false' will be removed in the next release
31: end