| Module | Erubis::SchemeGenerator |
| In: |
lib/erubis/engine/escheme.rb
|
# File lib/erubis/engine/escheme.rb, line 72
72: def add_expr_debug(src, code)
73: s = (code.strip! || code).gsub(/\"/, '\\"')
74: src << "(display \"*** debug: #{s}=\")(display #{code.strip})(display \"\\n\")"
75: end
# File lib/erubis/engine/escheme.rb, line 68
68: def add_expr_escaped(src, code)
69: add_expr_literal(src, escaped_expr(code))
70: end
# File lib/erubis/engine/escheme.rb, line 63
63: def add_expr_literal(src, code)
64: code.strip!
65: src << "(#{@func} #{code})"
66: end
# File lib/erubis/engine/escheme.rb, line 77
77: def add_postamble(src)
78: return unless @func == '_add'
79: src << "\n" unless src[-1] == ?\n
80: src << " (reverse _buf))\n"
81: end
# File lib/erubis/engine/escheme.rb, line 29
29: def add_preamble(src)
30: return unless @func == '_add'
31: src << "(let ((_buf '())) " + \
32: "(define (_add x) (set! _buf (cons x _buf))) "
33: #src << "(let* ((_buf '())" + # " (_add (lambda (x) (set! _buf (cons x _buf))))) "
34: end
# File lib/erubis/engine/escheme.rb, line 48
48: def add_text(src, text)
49: return if text.empty?
50: t = escape_text(text)
51: if t[-1] == ?\n
52: t[-1, 1] = ''
53: src << "(#{@func} \"" << t << "\\n\")\n"
54: else
55: src << "(#{@func} \"" << t << '")'
56: end
57: end
# File lib/erubis/engine/escheme.rb, line 37
37: def escape_text(text)
38: @table_ ||= { '"'=>'\\"', '\\'=>'\\\\' }
39: text.gsub!(/["\\]/) { |m| @table_[m] }
40: return text
41: end
# File lib/erubis/engine/escheme.rb, line 43
43: def escaped_expr(code)
44: code.strip!
45: return "(#{@escapefunc} #{code})"
46: end