erubis 2.3.1 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/{CHANGES → CHANGES.txt} +373 -3
- data/MIT-LICENSE +1 -1
- data/README.txt +6 -5
- data/benchmark/bench.rb +18 -11
- data/bin/erubis +3 -4
- data/contrib/erubis +3462 -5
- data/contrib/inline-require +54 -28
- data/doc/docstyle.css +25 -4
- data/doc/users-guide.html +814 -110
- data/doc-api/classes/ActionView/TemplateHandlers/ErubisHandler.html +209 -0
- data/doc-api/classes/ActionView.html +105 -0
- data/doc-api/classes/Erubis/ArrayBufferEnhancer.html +14 -14
- data/doc-api/classes/Erubis/ArrayEnhancer.html +16 -16
- data/doc-api/classes/Erubis/Basic/Converter.html +36 -31
- data/doc-api/classes/Erubis/BiPatternEnhancer.html +16 -13
- data/doc-api/classes/Erubis/CGenerator.html +70 -70
- data/doc-api/classes/Erubis/Context.html +49 -49
- data/doc-api/classes/Erubis/Converter.html +30 -29
- data/doc-api/classes/Erubis/CppGenerator.html +382 -0
- data/doc-api/classes/Erubis/DeleteIndentEnhancer.html +7 -7
- data/doc-api/classes/Erubis/Ecpp.html +126 -0
- data/doc-api/classes/Erubis/Engine.html +46 -43
- data/doc-api/classes/Erubis/ErboutEnhancer.html +16 -16
- data/doc-api/classes/Erubis/EscapeEnhancer.html +7 -7
- data/doc-api/classes/Erubis/EscapedEcpp.html +120 -0
- data/doc-api/classes/Erubis/Evaluator.html +22 -22
- data/doc-api/classes/Erubis/Generator.html +70 -70
- data/doc-api/classes/Erubis/HeaderFooterEnhancer.html +18 -15
- data/doc-api/classes/Erubis/Helpers/RailsFormHelper.html +787 -0
- data/doc-api/classes/Erubis/Helpers/RailsHelper/TemplateConverter.html +213 -0
- data/doc-api/classes/Erubis/Helpers/RailsHelper.html +103 -54
- data/doc-api/classes/Erubis/Helpers.html +6 -1
- data/doc-api/classes/Erubis/InterpolationEnhancer.html +42 -41
- data/doc-api/classes/Erubis/JavaGenerator.html +69 -69
- data/doc-api/classes/Erubis/JavascriptGenerator.html +79 -74
- data/doc-api/classes/Erubis/Main.html +49 -48
- data/doc-api/classes/Erubis/NoCodeEnhancer.html +35 -35
- data/doc-api/classes/Erubis/NoTextEnhancer.html +7 -7
- data/doc-api/classes/Erubis/OptimizedEruby.html +7 -7
- data/doc-api/classes/Erubis/OptimizedGenerator.html +84 -84
- data/doc-api/classes/Erubis/OptimizedXmlEruby.html +7 -7
- data/doc-api/classes/Erubis/PI/Converter.html +23 -22
- data/doc-api/classes/Erubis/PI/Ec.html +7 -7
- data/doc-api/classes/Erubis/PI/Ecpp.html +166 -0
- data/doc-api/classes/Erubis/PI/Ejava.html +7 -7
- data/doc-api/classes/Erubis/PI/Ejavascript.html +7 -7
- data/doc-api/classes/Erubis/PI/Eperl.html +7 -7
- data/doc-api/classes/Erubis/PI/Ephp.html +7 -7
- data/doc-api/classes/Erubis/PI/Eruby.html +6 -6
- data/doc-api/classes/Erubis/PI/Escheme.html +7 -7
- data/doc-api/classes/Erubis/PI/TinyEruby.html +28 -27
- data/doc-api/classes/Erubis/PI.html +1 -0
- data/doc-api/classes/Erubis/PercentLineEnhancer.html +18 -29
- data/doc-api/classes/Erubis/PerlGenerator.html +63 -63
- data/doc-api/classes/Erubis/PhpGenerator.html +63 -63
- data/doc-api/classes/Erubis/PrefixedLineEnhancer.html +210 -0
- data/doc-api/classes/Erubis/PrefixedLineEruby.html +120 -0
- data/doc-api/classes/Erubis/PreprocessingEruby.html +183 -0
- data/doc-api/classes/Erubis/PreprocessingHelper.html +212 -0
- data/doc-api/classes/Erubis/PrintEnabledEnhancer.html +23 -23
- data/doc-api/classes/Erubis/PrintOutEnhancer.html +38 -38
- data/doc-api/classes/Erubis/RubyEvaluator.html +59 -22
- data/doc-api/classes/Erubis/RubyGenerator.html +53 -52
- data/doc-api/classes/Erubis/SchemeGenerator.html +70 -70
- data/doc-api/classes/Erubis/SimplifyEnhancer.html +10 -9
- data/doc-api/classes/Erubis/StdoutEnhancer.html +3 -3
- data/doc-api/classes/Erubis/StringBufferEnhancer.html +16 -16
- data/doc-api/classes/Erubis/TinyEruby.html +33 -33
- data/doc-api/classes/Erubis/XmlHelper.html +80 -15
- data/doc-api/classes/Erubis.html +25 -1
- data/doc-api/classes/Kernel.html +155 -0
- data/doc-api/created.rid +1 -1
- data/doc-api/files/README_txt.html +8 -8
- data/doc-api/files/erubis/context_rb.html +2 -2
- data/doc-api/files/erubis/converter_rb.html +3 -3
- data/doc-api/files/erubis/engine/ec_rb.html +2 -2
- data/doc-api/files/erubis/engine/ecpp_rb.html +115 -0
- data/doc-api/files/erubis/engine/ejava_rb.html +2 -2
- data/doc-api/files/erubis/engine/ejavascript_rb.html +2 -2
- data/doc-api/files/erubis/engine/enhanced_rb.html +2 -2
- data/doc-api/files/erubis/engine/eperl_rb.html +2 -2
- data/doc-api/files/erubis/engine/ephp_rb.html +2 -2
- data/doc-api/files/erubis/engine/eruby_rb.html +2 -2
- data/doc-api/files/erubis/engine/escheme_rb.html +2 -2
- data/doc-api/files/erubis/engine/optimized_rb.html +2 -2
- data/doc-api/files/erubis/engine_rb.html +2 -2
- data/doc-api/files/erubis/enhancer_rb.html +2 -2
- data/doc-api/files/erubis/error_rb.html +2 -2
- data/doc-api/files/erubis/evaluator_rb.html +2 -2
- data/doc-api/files/erubis/generator_rb.html +3 -3
- data/doc-api/files/erubis/helper_rb.html +2 -2
- data/doc-api/files/erubis/helpers/rails_form_helper_rb.html +107 -0
- data/doc-api/files/erubis/helpers/rails_helper_rb.html +3 -2
- data/doc-api/files/erubis/local-setting_rb.html +2 -2
- data/doc-api/files/erubis/main_rb.html +4 -2
- data/doc-api/files/erubis/preprocessing_rb.html +114 -0
- data/doc-api/files/erubis/tiny_rb.html +2 -2
- data/doc-api/files/erubis/util_rb.html +107 -0
- data/doc-api/files/erubis_rb.html +2 -2
- data/doc-api/fr_class_index.html +13 -0
- data/doc-api/fr_file_index.html +4 -0
- data/doc-api/fr_method_index.html +237 -179
- data/examples/basic/Makefile +7 -2
- data/examples/basic/example.ecpp +33 -0
- data/lib/erubis/context.rb +2 -3
- data/lib/erubis/converter.rb +17 -11
- data/lib/erubis/engine/ec.rb +2 -3
- data/lib/erubis/engine/ecpp.rb +113 -0
- data/lib/erubis/engine/ejava.rb +9 -10
- data/lib/erubis/engine/ejavascript.rb +14 -9
- data/lib/erubis/engine/enhanced.rb +7 -3
- data/lib/erubis/engine/eperl.rb +2 -3
- data/lib/erubis/engine/ephp.rb +2 -3
- data/lib/erubis/engine/eruby.rb +8 -8
- data/lib/erubis/engine/escheme.rb +2 -3
- data/lib/erubis/engine/optimized.rb +2 -3
- data/lib/erubis/engine.rb +13 -11
- data/lib/erubis/enhancer.rb +101 -34
- data/lib/erubis/error.rb +2 -3
- data/lib/erubis/evaluator.rb +27 -10
- data/lib/erubis/generator.rb +3 -4
- data/lib/erubis/helper.rb +14 -3
- data/lib/erubis/helpers/rails_form_helper.rb +197 -0
- data/lib/erubis/helpers/rails_helper.rb +219 -77
- data/lib/erubis/local-setting.rb +2 -3
- data/lib/erubis/main.rb +85 -60
- data/lib/erubis/preprocessing.rb +58 -0
- data/lib/erubis/tiny.rb +9 -9
- data/lib/erubis/util.rb +22 -0
- data/lib/erubis.rb +4 -4
- data/test/assert-text-equal.rb +2 -3
- data/test/data/users-guide/bufvar-example.rb +10 -0
- data/test/data/users-guide/bufvar-example.result +17 -0
- data/test/data/users-guide/def_method.rb +14 -0
- data/test/data/users-guide/def_method.result +3 -0
- data/test/data/users-guide/example.ecpp +30 -0
- data/test/data/users-guide/example1.rb +1 -0
- data/test/data/users-guide/example_c.result +22 -19
- data/test/data/users-guide/fasteruby-example.rb +8 -0
- data/test/data/users-guide/fasteruby-example.result +18 -0
- data/test/data/users-guide/main_program1.rb +8 -0
- data/test/data/users-guide/main_program1.result +6 -0
- data/test/data/users-guide/main_program2.rb +8 -0
- data/test/data/users-guide/main_program2.result +6 -0
- data/test/data/users-guide/percentline-example.rhtml +3 -1
- data/test/data/users-guide/percentline_example.result +5 -3
- data/test/data/users-guide/prefixedline-example.rb +9 -0
- data/test/data/users-guide/prefixedline-example.rhtml +6 -0
- data/test/data/users-guide/prefixedline_example.result +9 -0
- data/test/data/users-guide/tail_260.result +4 -0
- data/test/data/users-guide/tailnewline.rhtml +3 -0
- data/test/data/users-guide/template1.rhtml +4 -0
- data/test/data/users-guide/template2.rhtml +4 -0
- data/test/test-engines.rb +88 -5
- data/test/test-enhancers.rb +83 -6
- data/test/test-erubis.rb +115 -11
- data/test/test-index-cgi.rb +191 -0
- data/test/test-main.rb +143 -31
- data/test/test-users-guide.rb +20 -3
- data/test/test.rb +18 -3
- data/test/testutil.rb +44 -8
- metadata +104 -67
- data/contrib/action_view_base_rb.patch +0 -23
data/lib/erubis/converter.rb
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
##
|
|
2
|
-
## $
|
|
3
|
-
##
|
|
4
|
-
## copyright(c) 2006-2007 kuwata-lab.com all rights reserved.
|
|
2
|
+
## $Release: 2.7.0 $
|
|
3
|
+
## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
|
|
5
4
|
##
|
|
6
5
|
|
|
7
|
-
require '
|
|
6
|
+
require 'erubis/util'
|
|
8
7
|
|
|
9
8
|
module Erubis
|
|
10
9
|
|
|
@@ -36,6 +35,7 @@ module Erubis
|
|
|
36
35
|
@preamble.nil? ? add_preamble(codebuf) : (@preamble && (codebuf << @preamble))
|
|
37
36
|
convert_input(codebuf, input)
|
|
38
37
|
@postamble.nil? ? add_postamble(codebuf) : (@postamble && (codebuf << @postamble))
|
|
38
|
+
@_proc = nil # clear cached proc object
|
|
39
39
|
return codebuf # or codebuf.join()
|
|
40
40
|
end
|
|
41
41
|
|
|
@@ -110,10 +110,10 @@ module Erubis
|
|
|
110
110
|
|
|
111
111
|
## return regexp of pattern to parse eRuby script
|
|
112
112
|
def pattern_regexp(pattern)
|
|
113
|
-
prefix, postfix = pattern.split() # '<% %>' => '<%', '%>'
|
|
114
|
-
#return /(.*?)(^[ \t]*)?#{prefix}(=+|\#)?(.*?)-?#{postfix}([ \t]*\r?\n)?/m
|
|
115
|
-
#return /(^[ \t]*)?#{prefix}(=+|\#)?(.*?)-?#{postfix}([ \t]*\r?\n)?/m
|
|
116
|
-
return /#{prefix}(
|
|
113
|
+
@prefix, @postfix = pattern.split() # '<% %>' => '<%', '%>'
|
|
114
|
+
#return /(.*?)(^[ \t]*)?#{@prefix}(=+|\#)?(.*?)-?#{@postfix}([ \t]*\r?\n)?/m
|
|
115
|
+
#return /(^[ \t]*)?#{@prefix}(=+|\#)?(.*?)-?#{@postfix}([ \t]*\r?\n)?/m
|
|
116
|
+
return /#{@prefix}(=+|-|\#|%)?(.*?)([-=])?#{@postfix}([ \t]*\r?\n)?/m
|
|
117
117
|
end
|
|
118
118
|
module_function :pattern_regexp
|
|
119
119
|
|
|
@@ -129,7 +129,7 @@ module Erubis
|
|
|
129
129
|
regexp = pat.nil? || pat == '<% %>' ? DEFAULT_REGEXP : pattern_regexp(pat)
|
|
130
130
|
pos = 0
|
|
131
131
|
is_bol = true # is beginning of line
|
|
132
|
-
input.scan(regexp) do |indicator, code, rspace|
|
|
132
|
+
input.scan(regexp) do |indicator, code, tailch, rspace|
|
|
133
133
|
match = Regexp.last_match()
|
|
134
134
|
len = match.begin(0) - pos
|
|
135
135
|
text = input[pos, len]
|
|
@@ -141,6 +141,7 @@ module Erubis
|
|
|
141
141
|
## * when '<%= %>', do nothing
|
|
142
142
|
## * when '<% %>' or '<%# %>', delete spaces iff only spaces are around '<% %>'
|
|
143
143
|
if ch == ?= # <%= %>
|
|
144
|
+
rspace = nil if tailch && !tailch.empty?
|
|
144
145
|
add_text(src, lspace) if lspace
|
|
145
146
|
add_expr(src, code, indicator)
|
|
146
147
|
add_text(src, rspace) if rspace
|
|
@@ -153,6 +154,9 @@ module Erubis
|
|
|
153
154
|
add_stmt(src, "\n" * n)
|
|
154
155
|
add_text(src, rspace) if rspace
|
|
155
156
|
end
|
|
157
|
+
elsif ch == ?% # <%% %>
|
|
158
|
+
s = "#{lspace}#{@prefix||='<%'}#{code}#{tailch}#{@postfix||='%>'}#{rspace}"
|
|
159
|
+
add_text(src, s)
|
|
156
160
|
else # <% %>
|
|
157
161
|
if @trim && lspace && rspace
|
|
158
162
|
add_stmt(src, "#{lspace}#{code}#{rspace}")
|
|
@@ -163,7 +167,8 @@ module Erubis
|
|
|
163
167
|
end
|
|
164
168
|
end
|
|
165
169
|
end
|
|
166
|
-
rest = $' || input
|
|
170
|
+
#rest = $' || input # ruby1.8
|
|
171
|
+
rest = pos == 0 ? input : input[pos..-1] # ruby1.9
|
|
167
172
|
add_text(src, rest)
|
|
168
173
|
end
|
|
169
174
|
|
|
@@ -259,7 +264,8 @@ module Erubis
|
|
|
259
264
|
add_pi_expr(codebuf, expr1 || expr2, indicator1 || indicator2)
|
|
260
265
|
end
|
|
261
266
|
end
|
|
262
|
-
rest = $' || input
|
|
267
|
+
#rest = $' || input # ruby1.8
|
|
268
|
+
rest = pos == 0 ? input : input[pos..-1] # ruby1.9
|
|
263
269
|
add_text(codebuf, rest)
|
|
264
270
|
end
|
|
265
271
|
|
data/lib/erubis/engine/ec.rb
CHANGED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
##
|
|
2
|
+
## $Release: 2.7.0 $
|
|
3
|
+
## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
|
|
4
|
+
##
|
|
5
|
+
|
|
6
|
+
require 'erubis/engine'
|
|
7
|
+
require 'erubis/enhancer'
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
module Erubis
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
module CppGenerator
|
|
14
|
+
include Generator
|
|
15
|
+
|
|
16
|
+
def self.supported_properties() # :nodoc:
|
|
17
|
+
return [
|
|
18
|
+
[:indent, '', "indent spaces (ex. ' ')"],
|
|
19
|
+
[:bufvar, '_buf', "buffer variable name"],
|
|
20
|
+
]
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def init_generator(properties={})
|
|
24
|
+
super
|
|
25
|
+
@escapefunc ||= "escape"
|
|
26
|
+
@indent = properties[:indent] || ''
|
|
27
|
+
@bufvar = properties[:bufvar] || '_buf'
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def add_preamble(src)
|
|
31
|
+
src << "#line 1 \"#{self.filename}\"\n" if self.filename
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def escape_text(text)
|
|
35
|
+
@@table_ ||= { "\r"=>"\\r", "\n"=>"\\n", "\t"=>"\\t", '"'=>'\\"', "\\"=>"\\\\" }
|
|
36
|
+
text.gsub!(/[\r\n\t"\\]/) { |m| @@table_[m] }
|
|
37
|
+
return text
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def escaped_expr(code)
|
|
41
|
+
return "#{@escapefunc}(#{code.strip})"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def add_text(src, text)
|
|
45
|
+
return if text.empty?
|
|
46
|
+
src << (src.empty? || src[-1] == ?\n ? @indent : ' ')
|
|
47
|
+
src << "_buf << "
|
|
48
|
+
i = 0
|
|
49
|
+
text.each_line do |line|
|
|
50
|
+
src << "\n" << @indent << " " if i > 0
|
|
51
|
+
i += 1
|
|
52
|
+
src << '"' << escape_text(line) << '"'
|
|
53
|
+
end
|
|
54
|
+
src << ";" #<< (text[-1] == ?\n ? "\n" : "")
|
|
55
|
+
src << "\n" if text[-1] == ?\n
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def add_stmt(src, code)
|
|
59
|
+
src << code
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def add_expr_literal(src, code)
|
|
63
|
+
src << @indent if src.empty? || src[-1] == ?\n
|
|
64
|
+
src << " _buf << (" << code.strip << ");"
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def add_expr_escaped(src, code)
|
|
68
|
+
src << @indent if src.empty? || src[-1] == ?\n
|
|
69
|
+
src << ' ' << escaped_expr(code) << ';'
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def add_expr_debug(src, code)
|
|
73
|
+
code.strip!
|
|
74
|
+
src << @indent if src.empty? || src[-1] == ?\n
|
|
75
|
+
src << " std::cerr << \"*** debug: #{code.gsub(/(")/, '\\\&')}=\" << (#{code});"
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def add_postamble(src)
|
|
79
|
+
# empty
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
##
|
|
86
|
+
## engine for C
|
|
87
|
+
##
|
|
88
|
+
class Ecpp < Basic::Engine
|
|
89
|
+
include CppGenerator
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
class EscapedEcpp < Ecpp
|
|
94
|
+
include EscapeEnhancer
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
#class XmlEcpp < Ecpp
|
|
99
|
+
# include EscapeEnhancer
|
|
100
|
+
#end
|
|
101
|
+
|
|
102
|
+
class PI::Ecpp < PI::Engine
|
|
103
|
+
include CppGenerator
|
|
104
|
+
|
|
105
|
+
def init_converter(properties={})
|
|
106
|
+
@pi = 'cpp'
|
|
107
|
+
super(properties)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
end
|
data/lib/erubis/engine/ejava.rb
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
##
|
|
2
|
-
## $
|
|
3
|
-
##
|
|
4
|
-
## copyright(c) 2006-2007 kuwata-lab.com all rights reserved.
|
|
2
|
+
## $Release: 2.7.0 $
|
|
3
|
+
## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
|
|
5
4
|
##
|
|
6
5
|
|
|
7
6
|
require 'erubis/engine'
|
|
@@ -17,7 +16,7 @@ module Erubis
|
|
|
17
16
|
def self.supported_properties() # :nodoc:
|
|
18
17
|
return [
|
|
19
18
|
[:indent, '', "indent spaces (ex. ' ')"],
|
|
20
|
-
[:
|
|
19
|
+
[:bufvar, '_buf', "output buffer variable name"],
|
|
21
20
|
[:bufclass, 'StringBuffer', "output buffer class (ex. 'StringBuilder')"],
|
|
22
21
|
]
|
|
23
22
|
end
|
|
@@ -26,12 +25,12 @@ module Erubis
|
|
|
26
25
|
super
|
|
27
26
|
@escapefunc ||= 'escape'
|
|
28
27
|
@indent = properties[:indent] || ''
|
|
29
|
-
@
|
|
28
|
+
@bufvar = properties[:bufvar] || '_buf'
|
|
30
29
|
@bufclass = properties[:bufclass] || 'StringBuffer'
|
|
31
30
|
end
|
|
32
31
|
|
|
33
32
|
def add_preamble(src)
|
|
34
|
-
src << "#{@indent}#{@bufclass} #{@
|
|
33
|
+
src << "#{@indent}#{@bufclass} #{@bufvar} = new #{@bufclass}();"
|
|
35
34
|
end
|
|
36
35
|
|
|
37
36
|
def escape_text(text)
|
|
@@ -42,7 +41,7 @@ module Erubis
|
|
|
42
41
|
def add_text(src, text)
|
|
43
42
|
return if text.empty?
|
|
44
43
|
src << (src.empty? || src[-1] == ?\n ? @indent : ' ')
|
|
45
|
-
src << @
|
|
44
|
+
src << @bufvar << ".append("
|
|
46
45
|
i = 0
|
|
47
46
|
text.each_line do |line|
|
|
48
47
|
src << "\n" << @indent << ' + ' if i > 0
|
|
@@ -59,7 +58,7 @@ module Erubis
|
|
|
59
58
|
def add_expr_literal(src, code)
|
|
60
59
|
src << @indent if src.empty? || src[-1] == ?\n
|
|
61
60
|
code.strip!
|
|
62
|
-
src << " #{@
|
|
61
|
+
src << " #{@bufvar}.append(#{code});"
|
|
63
62
|
end
|
|
64
63
|
|
|
65
64
|
def add_expr_escaped(src, code)
|
|
@@ -74,8 +73,8 @@ module Erubis
|
|
|
74
73
|
|
|
75
74
|
def add_postamble(src)
|
|
76
75
|
src << "\n" if src[-1] == ?;
|
|
77
|
-
src << @indent << "return " << @
|
|
78
|
-
#src << @indent << "System.out.print(" << @
|
|
76
|
+
src << @indent << "return " << @bufvar << ".toString();\n"
|
|
77
|
+
#src << @indent << "System.out.print(" << @bufvar << ".toString());\n"
|
|
79
78
|
end
|
|
80
79
|
|
|
81
80
|
end
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
##
|
|
2
|
-
## $
|
|
3
|
-
##
|
|
4
|
-
## copyright(c) 2006-2007 kuwata-lab.com all rights reserved.
|
|
2
|
+
## $Release: 2.7.0 $
|
|
3
|
+
## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
|
|
5
4
|
##
|
|
6
5
|
|
|
7
6
|
require 'erubis/engine'
|
|
@@ -17,7 +16,8 @@ module Erubis
|
|
|
17
16
|
def self.supported_properties() # :nodoc:
|
|
18
17
|
list = []
|
|
19
18
|
#list << [:indent, '', "indent spaces (ex. ' ')"]
|
|
20
|
-
#list << [:
|
|
19
|
+
#list << [:bufvar, '_buf', "output buffer variable name"]
|
|
20
|
+
list << [:docwrite, true, "use 'document.write()' when true"]
|
|
21
21
|
return list
|
|
22
22
|
end
|
|
23
23
|
|
|
@@ -25,11 +25,12 @@ module Erubis
|
|
|
25
25
|
super
|
|
26
26
|
@escapefunc ||= 'escape'
|
|
27
27
|
@indent = properties[:indent] || ''
|
|
28
|
-
@
|
|
28
|
+
@bufvar = properties[:bufvar] || '_buf'
|
|
29
|
+
@docwrite = properties[:docwrite] != false # '!= false' will be removed in the next release
|
|
29
30
|
end
|
|
30
31
|
|
|
31
32
|
def add_preamble(src)
|
|
32
|
-
src << "#{@indent}var #{@
|
|
33
|
+
src << "#{@indent}var #{@bufvar} = [];"
|
|
33
34
|
end
|
|
34
35
|
|
|
35
36
|
def escape_text(text)
|
|
@@ -44,7 +45,7 @@ module Erubis
|
|
|
44
45
|
def add_text(src, text)
|
|
45
46
|
return if text.empty?
|
|
46
47
|
add_indent(src, @indent)
|
|
47
|
-
src << @
|
|
48
|
+
src << @bufvar << '.push("'
|
|
48
49
|
s = escape_text(text)
|
|
49
50
|
if s[-1] == ?\n
|
|
50
51
|
s[-2, 2] = ''
|
|
@@ -61,7 +62,7 @@ module Erubis
|
|
|
61
62
|
def add_expr_literal(src, code)
|
|
62
63
|
add_indent(src, @indent)
|
|
63
64
|
code.strip!
|
|
64
|
-
src << "#{@
|
|
65
|
+
src << "#{@bufvar}.push(#{code});"
|
|
65
66
|
end
|
|
66
67
|
|
|
67
68
|
def add_expr_escaped(src, code)
|
|
@@ -76,7 +77,11 @@ module Erubis
|
|
|
76
77
|
|
|
77
78
|
def add_postamble(src)
|
|
78
79
|
src << "\n" if src[-1] == ?;
|
|
79
|
-
|
|
80
|
+
if @docwrite
|
|
81
|
+
src << @indent << 'document.write(' << @bufvar << ".join(\"\"));\n"
|
|
82
|
+
else
|
|
83
|
+
src << @indent << @bufvar << ".join(\"\");\n"
|
|
84
|
+
end
|
|
80
85
|
end
|
|
81
86
|
|
|
82
87
|
end
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
##
|
|
2
|
-
## $
|
|
3
|
-
##
|
|
4
|
-
## copyright(c) 2006-2007 kuwata-lab.com all rights reserved.
|
|
2
|
+
## $Release: 2.7.0 $
|
|
3
|
+
## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
|
|
5
4
|
##
|
|
6
5
|
|
|
7
6
|
require 'erubis/enhancer'
|
|
@@ -104,6 +103,11 @@ module Erubis
|
|
|
104
103
|
end
|
|
105
104
|
|
|
106
105
|
|
|
106
|
+
class PrefixedLineEruby < Eruby
|
|
107
|
+
include PrefixedLineEnhancer
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
|
|
107
111
|
class HeaderFooterEruby < Eruby
|
|
108
112
|
include HeaderFooterEnhancer
|
|
109
113
|
end
|
data/lib/erubis/engine/eperl.rb
CHANGED
data/lib/erubis/engine/ephp.rb
CHANGED
data/lib/erubis/engine/eruby.rb
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
##
|
|
2
|
-
## $
|
|
3
|
-
##
|
|
4
|
-
## copyright(c) 2006-2007 kuwata-lab.com all rights reserved.
|
|
2
|
+
## $Release: 2.7.0 $
|
|
3
|
+
## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
|
|
5
4
|
##
|
|
6
5
|
|
|
7
6
|
require 'erubis/engine'
|
|
@@ -22,6 +21,7 @@ module Erubis
|
|
|
22
21
|
def init_generator(properties={})
|
|
23
22
|
super
|
|
24
23
|
@escapefunc ||= "Erubis::XmlHelper.escape_xml"
|
|
24
|
+
@bufvar = properties[:bufvar] || "_buf"
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def self.supported_properties() # :nodoc:
|
|
@@ -38,12 +38,12 @@ module Erubis
|
|
|
38
38
|
|
|
39
39
|
#--
|
|
40
40
|
#def add_preamble(src)
|
|
41
|
-
# src << "
|
|
41
|
+
# src << "#{@bufvar} = [];"
|
|
42
42
|
#end
|
|
43
43
|
#++
|
|
44
44
|
|
|
45
45
|
def add_text(src, text)
|
|
46
|
-
src << "
|
|
46
|
+
src << " #{@bufvar} << '" << escape_text(text) << "';" unless text.empty?
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
def add_stmt(src, code)
|
|
@@ -53,11 +53,11 @@ module Erubis
|
|
|
53
53
|
end
|
|
54
54
|
|
|
55
55
|
def add_expr_literal(src, code)
|
|
56
|
-
src <<
|
|
56
|
+
src << " #{@bufvar} << (" << code << ').to_s;'
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
def add_expr_escaped(src, code)
|
|
60
|
-
src <<
|
|
60
|
+
src << " #{@bufvar} << " << escaped_expr(code) << ';'
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
def add_expr_debug(src, code)
|
|
@@ -68,7 +68,7 @@ module Erubis
|
|
|
68
68
|
|
|
69
69
|
#--
|
|
70
70
|
#def add_postamble(src)
|
|
71
|
-
# src << "\
|
|
71
|
+
# src << "\n#{@bufvar}.join\n"
|
|
72
72
|
#end
|
|
73
73
|
#++
|
|
74
74
|
|
data/lib/erubis/engine.rb
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
##
|
|
2
|
-
## $
|
|
3
|
-
##
|
|
4
|
-
## copyright(c) 2006-2007 kuwata-lab.com all rights reserved.
|
|
2
|
+
## $Release: 2.7.0 $
|
|
3
|
+
## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
|
|
5
4
|
##
|
|
6
5
|
|
|
7
6
|
|
|
@@ -42,21 +41,24 @@ module Erubis
|
|
|
42
41
|
|
|
43
42
|
##
|
|
44
43
|
## load file, write cache file, and return engine object.
|
|
45
|
-
## this method create cache file
|
|
44
|
+
## this method create code cache file automatically.
|
|
45
|
+
## cachefile name can be specified with properties[:cachename],
|
|
46
|
+
## or filname + 'cache' is used as default.
|
|
46
47
|
##
|
|
47
48
|
def self.load_file(filename, properties={})
|
|
48
|
-
cachename = filename + '.cache'
|
|
49
|
+
cachename = properties[:cachename] || (filename + '.cache')
|
|
49
50
|
properties[:filename] = filename
|
|
50
|
-
|
|
51
|
+
timestamp = File.mtime(filename)
|
|
52
|
+
if test(?f, cachename) && timestamp == File.mtime(cachename)
|
|
51
53
|
engine = self.new(nil, properties)
|
|
52
54
|
engine.src = File.read(cachename)
|
|
53
55
|
else
|
|
54
|
-
input = File.open(filename, 'rb') {
|
|
56
|
+
input = File.open(filename, 'rb') {|f| f.read }
|
|
55
57
|
engine = self.new(input, properties)
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
tmpname = cachename + rand().to_s[1,8]
|
|
59
|
+
File.open(tmpname, 'wb') {|f| f.write(engine.src) }
|
|
60
|
+
File.rename(tmpname, cachename)
|
|
61
|
+
File.utime(timestamp, timestamp, cachename)
|
|
60
62
|
end
|
|
61
63
|
engine.src.untaint # ok?
|
|
62
64
|
return engine
|