erubis 2.1.0 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/{ChangeLog → CHANGES} +139 -6
- data/MIT-LICENSE +20 -0
- data/README.txt +20 -5
- data/benchmark/erubybench.rb +465 -229
- data/benchmark/erubybench.rhtml +39 -15
- data/benchmark/erubybench.yaml +126 -46
- data/bin/erubis +2 -2
- data/bin/notext +3 -3
- data/contrib/action_view_base_rb.patch +23 -0
- data/contrib/erubis +466 -308
- data/contrib/inline-require +2 -2
- data/doc-api/classes/ERB.html +101 -0
- data/doc-api/classes/Erubis.html +59 -6
- data/doc-api/classes/Erubis/ArrayEnhancer.html +12 -12
- data/doc-api/classes/Erubis/Basic/Converter.html +61 -57
- data/doc-api/classes/Erubis/BiPatternEnhancer.html +14 -14
- data/doc-api/classes/Erubis/CGenerator.html +60 -60
- data/doc-api/classes/Erubis/Context.html +125 -29
- data/doc-api/classes/Erubis/Converter.html +73 -22
- data/doc-api/classes/Erubis/Engine.html +55 -39
- data/doc-api/classes/Erubis/EscapeEnhancer.html +6 -6
- data/doc-api/classes/Erubis/Evaluator.html +19 -19
- data/doc-api/classes/Erubis/Generator.html +16 -10
- data/doc-api/classes/Erubis/HeaderFooterEnhancer.html +14 -14
- data/doc-api/classes/Erubis/{Helper.html → Helpers.html} +5 -6
- data/doc-api/classes/Erubis/Helpers/RailsHelper.html +296 -0
- data/doc-api/classes/Erubis/JavaGenerator.html +54 -54
- data/doc-api/classes/Erubis/JavascriptGenerator.html +60 -60
- data/doc-api/classes/Erubis/Main.html +42 -30
- data/doc-api/classes/Erubis/NoCodeEnhancer.html +5 -5
- data/doc-api/classes/Erubis/NoTextEnhancer.html +7 -7
- data/doc-api/classes/Erubis/OptimizedEruby.html +6 -6
- data/doc-api/classes/Erubis/OptimizedGenerator.html +72 -72
- data/doc-api/classes/Erubis/OptimizedXmlEruby.html +6 -6
- data/doc-api/classes/Erubis/PI/Converter.html +28 -81
- data/doc-api/classes/Erubis/PI/Ec.html +6 -6
- data/doc-api/classes/Erubis/PI/Ejava.html +6 -6
- data/doc-api/classes/Erubis/PI/Ejavascript.html +6 -6
- data/doc-api/classes/Erubis/PI/Eperl.html +6 -6
- data/doc-api/classes/Erubis/PI/Ephp.html +6 -6
- data/doc-api/classes/Erubis/PI/Eruby.html +7 -7
- data/doc-api/classes/Erubis/PI/Escheme.html +6 -6
- data/doc-api/classes/Erubis/PI/TinyEruby.html +66 -79
- data/doc-api/classes/Erubis/PercentLineEnhancer.html +8 -8
- data/doc-api/classes/Erubis/PerlGenerator.html +54 -54
- data/doc-api/classes/Erubis/PhpGenerator.html +54 -54
- data/doc-api/classes/Erubis/PrintEnabledEnhancer.html +21 -21
- data/doc-api/classes/Erubis/PrintOutEnhancer.html +30 -30
- data/doc-api/classes/Erubis/RubyEvaluator.html +12 -12
- data/doc-api/classes/Erubis/RubyGenerator.html +9 -9
- data/doc-api/classes/Erubis/SimplifyEnhancer.html +7 -6
- data/doc-api/classes/Erubis/StdoutEnhancer.html +12 -12
- data/doc-api/classes/Erubis/StringBufferEnhancer.html +13 -13
- data/doc-api/classes/Erubis/TinyEruby.html +56 -68
- data/doc-api/classes/Erubis/XmlHelper.html +20 -23
- data/doc-api/created.rid +1 -1
- data/doc-api/files/{__/README_txt.html → README_txt.html} +35 -20
- data/doc-api/files/erubis/context_rb.html +2 -2
- data/doc-api/files/erubis/converter_rb.html +2 -2
- data/doc-api/files/erubis/engine/ec_rb.html +2 -2
- 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 -3
- 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 +2 -2
- data/doc-api/files/erubis/helper_rb.html +2 -2
- data/doc-api/files/erubis/{helper/rails_rb.html → helpers/rails_helper_rb.html} +6 -31
- 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/tiny_rb.html +2 -2
- data/doc-api/files/erubis_rb.html +2 -2
- data/doc-api/fr_class_index.html +3 -3
- data/doc-api/fr_file_index.html +2 -2
- data/doc-api/fr_method_index.html +142 -147
- data/doc-api/index.html +1 -1
- data/doc/users-guide.html +387 -218
- data/lib/erubis.rb +21 -25
- data/lib/erubis/context.rb +34 -4
- data/lib/erubis/converter.rb +159 -115
- data/lib/erubis/engine.rb +29 -12
- data/lib/erubis/engine/ec.rb +2 -2
- data/lib/erubis/engine/ejava.rb +2 -2
- data/lib/erubis/engine/ejavascript.rb +2 -2
- data/lib/erubis/engine/enhanced.rb +2 -2
- data/lib/erubis/engine/eperl.rb +2 -2
- data/lib/erubis/engine/ephp.rb +2 -2
- data/lib/erubis/engine/eruby.rb +5 -6
- data/lib/erubis/engine/escheme.rb +2 -2
- data/lib/erubis/engine/optimized.rb +2 -2
- data/lib/erubis/enhancer.rb +33 -7
- data/lib/erubis/error.rb +2 -2
- data/lib/erubis/evaluator.rb +2 -2
- data/lib/erubis/generator.rb +6 -3
- data/lib/erubis/helper.rb +6 -23
- data/lib/erubis/helpers/rails_helper.rb +202 -0
- data/lib/erubis/local-setting.rb +4 -4
- data/lib/erubis/main.rb +90 -35
- data/lib/erubis/tiny.rb +57 -52
- data/test/assert-text-equal.rb +2 -2
- data/test/test-engines.rb +5 -5
- data/test/test-erubis.rb +173 -63
- data/test/test-main.rb +135 -27
- data/test/test-notext.rb +2 -2
- data/test/test.rb +2 -2
- data/test/testutil.rb +2 -2
- metadata +16 -16
- data/LGPL +0 -504
- data/doc-api/classes/Erubis/Helper/CachedRailsTemplate.html +0 -198
- data/doc-api/classes/Erubis/Helper/RailsTemplate.html +0 -366
- data/lib/erubis/helper/rails.rb +0 -159
data/lib/erubis/engine.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
##
|
2
|
-
## $Rev:
|
3
|
-
## $Release: 2.
|
4
|
-
## copyright(c) 2006 kuwata-lab all rights reserved.
|
2
|
+
## $Rev: 55 $
|
3
|
+
## $Release: 2.2.0 $
|
4
|
+
## copyright(c) 2006-2007 kuwata-lab all rights reserved.
|
5
5
|
##
|
6
6
|
|
7
7
|
|
@@ -23,11 +23,6 @@ module Erubis
|
|
23
23
|
#include Converter
|
24
24
|
#include Generator
|
25
25
|
|
26
|
-
# convert input string and set it to @src
|
27
|
-
def convert!(input)
|
28
|
-
@src = convert(input)
|
29
|
-
end
|
30
|
-
|
31
26
|
def initialize(input=nil, properties={})
|
32
27
|
#@input = input
|
33
28
|
init_generator(properties)
|
@@ -36,12 +31,34 @@ module Erubis
|
|
36
31
|
@src = convert(input) if input
|
37
32
|
end
|
38
33
|
|
39
|
-
|
34
|
+
|
35
|
+
##
|
36
|
+
## convert input string and set it to @src
|
37
|
+
##
|
38
|
+
def convert!(input)
|
39
|
+
@src = convert(input)
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
##
|
44
|
+
## load file, write cache file, and return engine object.
|
45
|
+
## this method create cache file (filename + '.cache') automatically.
|
46
|
+
##
|
40
47
|
def self.load_file(filename, properties={})
|
41
|
-
|
42
|
-
input.untaint # is it ok?
|
48
|
+
cachename = filename + '.cache'
|
43
49
|
properties[:filename] = filename
|
44
|
-
|
50
|
+
if test(?f, cachename) && File.mtime(filename) <= File.mtime(cachename)
|
51
|
+
engine = self.new(nil, properties)
|
52
|
+
engine.src = File.read(cachename)
|
53
|
+
else
|
54
|
+
input = File.open(filename, 'rb') { |f| f.read }
|
55
|
+
engine = self.new(input, properties)
|
56
|
+
File.open(cachename, 'w') do |f|
|
57
|
+
f.flock(File::LOCK_EX)
|
58
|
+
f.write(engine.src)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
engine.src.untaint # ok?
|
45
62
|
return engine
|
46
63
|
end
|
47
64
|
|
data/lib/erubis/engine/ec.rb
CHANGED
data/lib/erubis/engine/ejava.rb
CHANGED
data/lib/erubis/engine/eperl.rb
CHANGED
data/lib/erubis/engine/ephp.rb
CHANGED
data/lib/erubis/engine/eruby.rb
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
##
|
2
|
-
## $Rev:
|
3
|
-
## $Release: 2.
|
4
|
-
## copyright(c) 2006 kuwata-lab all rights reserved.
|
2
|
+
## $Rev: 54 $
|
3
|
+
## $Release: 2.2.0 $
|
4
|
+
## copyright(c) 2006-2007 kuwata-lab all rights reserved.
|
5
5
|
##
|
6
6
|
|
7
7
|
require 'erubis/engine'
|
8
8
|
require 'erubis/enhancer'
|
9
|
-
require 'abstract'
|
10
9
|
|
11
10
|
|
12
11
|
module Erubis
|
@@ -17,8 +16,8 @@ module Erubis
|
|
17
16
|
##
|
18
17
|
module RubyGenerator
|
19
18
|
include Generator
|
20
|
-
#include
|
21
|
-
include
|
19
|
+
#include ArrayBufferEnhancer
|
20
|
+
include StringBufferEnhancer
|
22
21
|
|
23
22
|
def init_generator(properties={})
|
24
23
|
super
|
data/lib/erubis/enhancer.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
##
|
2
|
-
## $Rev:
|
3
|
-
## $Release: 2.
|
4
|
-
## copyright(c) 2006 kuwata-lab all rights reserved.
|
2
|
+
## $Rev: 60 $
|
3
|
+
## $Release: 2.2.0 $
|
4
|
+
## copyright(c) 2006-2007 kuwata-lab all rights reserved.
|
5
5
|
##
|
6
6
|
|
7
7
|
|
@@ -214,7 +214,7 @@ module Erubis
|
|
214
214
|
|
215
215
|
def add_postamble(src)
|
216
216
|
src << "\n" unless src[-1] == ?\n
|
217
|
-
src << "_buf\n"
|
217
|
+
src << "_buf.to_s\n"
|
218
218
|
end
|
219
219
|
|
220
220
|
end
|
@@ -243,6 +243,31 @@ module Erubis
|
|
243
243
|
end
|
244
244
|
|
245
245
|
|
246
|
+
#--
|
247
|
+
###
|
248
|
+
### set buffer variable name to '_erbout' as well as '_buf'
|
249
|
+
###
|
250
|
+
### this is only for Eruby.
|
251
|
+
###
|
252
|
+
#module ErboutEnhancer
|
253
|
+
#
|
254
|
+
# def self.desc # :nodoc:
|
255
|
+
# "set buffer name '_erbout' as well as '_buf'"
|
256
|
+
# end
|
257
|
+
#
|
258
|
+
# def add_preamble(src)
|
259
|
+
# src << "_erbout = _buf = '';"
|
260
|
+
# end
|
261
|
+
#
|
262
|
+
# def add_postamble(src)
|
263
|
+
# src << "\n" unless src[-1] == ?\n
|
264
|
+
# src << "_buf.to_s\n"
|
265
|
+
# end
|
266
|
+
#
|
267
|
+
#end
|
268
|
+
#++
|
269
|
+
|
270
|
+
|
246
271
|
##
|
247
272
|
## remove text and leave code, especially useful when debugging.
|
248
273
|
##
|
@@ -323,9 +348,10 @@ module Erubis
|
|
323
348
|
#regexp = pattern_regexp(@pattern)
|
324
349
|
pos = 0
|
325
350
|
input.scan(SIMPLE_REGEXP) do |indicator, code|
|
326
|
-
|
327
|
-
|
328
|
-
pos
|
351
|
+
match = Regexp.last_match
|
352
|
+
index = match.begin(0)
|
353
|
+
text = input[pos, index - pos]
|
354
|
+
pos = match.end(0)
|
329
355
|
add_text(src, text)
|
330
356
|
if !indicator # <% %>
|
331
357
|
add_stmt(src, code)
|
data/lib/erubis/error.rb
CHANGED
data/lib/erubis/evaluator.rb
CHANGED
data/lib/erubis/generator.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
##
|
2
|
-
## $Rev:
|
3
|
-
## $Release: 2.
|
4
|
-
## copyright(c) 2006 kuwata-lab all rights reserved.
|
2
|
+
## $Rev: 42 $
|
3
|
+
## $Release: 2.2.0 $
|
4
|
+
## copyright(c) 2006-2007 kuwata-lab all rights reserved.
|
5
5
|
##
|
6
6
|
|
7
7
|
require 'abstract'
|
@@ -9,6 +9,9 @@ require 'abstract'
|
|
9
9
|
module Erubis
|
10
10
|
|
11
11
|
|
12
|
+
##
|
13
|
+
## code generator, called by Converter module
|
14
|
+
##
|
12
15
|
module Generator
|
13
16
|
|
14
17
|
def self.supported_properties() # :nodoc:
|
data/lib/erubis/helper.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
##
|
2
|
-
## $Rev:
|
3
|
-
## $Release: 2.
|
4
|
-
## copyright(c) 2006 kuwata-lab all rights reserved.
|
2
|
+
## $Rev: 64 $
|
3
|
+
## $Release: 2.2.0 $
|
4
|
+
## copyright(c) 2006-2007 kuwata-lab all rights reserved.
|
5
5
|
##
|
6
6
|
|
7
7
|
|
@@ -22,28 +22,11 @@ module Erubis
|
|
22
22
|
"'" => ''',
|
23
23
|
}
|
24
24
|
|
25
|
-
def escape_xml(
|
26
|
-
#
|
27
|
-
#
|
28
|
-
obj.to_s.gsub(/[&<>"]/) { |s| ESCAPE_TABLE[s] } # or /[&<>"']/
|
29
|
-
#obj.to_s.gsub(SCAN_REGEXP) { |s| ESCAPE_TABLE[s] }
|
30
|
-
#obj.to_s.gsub(/[&<>"]/) { ESCAPE_TABLE[$&] }
|
25
|
+
def escape_xml(value)
|
26
|
+
value.to_s.gsub(/[&<>"]/) { |s| ESCAPE_TABLE[s] } # or /[&<>"']/
|
27
|
+
#value.to_s.gsub(/[&<>"]/) { ESCAPE_TABLE[$&] }
|
31
28
|
end
|
32
29
|
|
33
|
-
#--
|
34
|
-
#def escape_xml(obj)
|
35
|
-
# str = obj.to_s.dup
|
36
|
-
# #str = obj.to_s
|
37
|
-
# #str = str.dup if obj.__id__ == str.__id__
|
38
|
-
# str.gsub!(/&/, '&')
|
39
|
-
# str.gsub!(/</, '<')
|
40
|
-
# str.gsub!(/>/, '>')
|
41
|
-
# str.gsub!(/"/, '"')
|
42
|
-
# str.gsub!(/'/, ''')
|
43
|
-
# return str
|
44
|
-
#end
|
45
|
-
#++
|
46
|
-
|
47
30
|
alias h escape_xml
|
48
31
|
alias html_escape escape_xml
|
49
32
|
|
@@ -0,0 +1,202 @@
|
|
1
|
+
###
|
2
|
+
### $Rev: 64 $
|
3
|
+
### $Release: 2.2.0 $
|
4
|
+
### copyright(c) 2006-2007 kuwata-lab all rights reserved.
|
5
|
+
###
|
6
|
+
|
7
|
+
|
8
|
+
require 'erubis'
|
9
|
+
|
10
|
+
|
11
|
+
module Erubis
|
12
|
+
|
13
|
+
module Helpers
|
14
|
+
|
15
|
+
##
|
16
|
+
## helper module for Ruby on Rails
|
17
|
+
##
|
18
|
+
## howto:
|
19
|
+
##
|
20
|
+
## 1. add the folliwng code in your 'config/environment.rb'
|
21
|
+
##
|
22
|
+
## require 'erubis/helpers/rails_helper'
|
23
|
+
## #Erubis::Helpers::RailsHelper.engine_class = Erubis::Eruby
|
24
|
+
## #Erubis::Helpers::RailsHelper.init_properties = {}
|
25
|
+
## #Erubis::Helpers::RailsHelper.show_src = false
|
26
|
+
##
|
27
|
+
## 2. (optional) apply the patch for 'action_view/base.rb'
|
28
|
+
##
|
29
|
+
## $ cd /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_view/
|
30
|
+
## $ sudo patch -p1 < /tmp/erubis_2.X.X/contrib/action_view_base_rb.patch
|
31
|
+
##
|
32
|
+
## 3. restart web server.
|
33
|
+
##
|
34
|
+
## if Erubis::Helper::Rails.show_src is ture, Erubis prints converted Ruby code
|
35
|
+
## into log file ('log/development.log' or so). This may be useful for debug.
|
36
|
+
##
|
37
|
+
module RailsHelper
|
38
|
+
|
39
|
+
#cattr_accessor :init_properties
|
40
|
+
@@engine_class = Erubis::Eruby
|
41
|
+
|
42
|
+
def self.engine_class
|
43
|
+
@@engine_class
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.engine_class=(klass)
|
47
|
+
@@engine_class = klass
|
48
|
+
end
|
49
|
+
|
50
|
+
#cattr_accessor :init_properties
|
51
|
+
@@init_properties = {}
|
52
|
+
|
53
|
+
def self.init_properties
|
54
|
+
@@init_properties
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.init_properties=(hash)
|
58
|
+
@@init_properties = hash
|
59
|
+
end
|
60
|
+
|
61
|
+
#cattr_accessor :show_src
|
62
|
+
@@show_src = false
|
63
|
+
|
64
|
+
def self.show_src
|
65
|
+
@@show_src
|
66
|
+
end
|
67
|
+
|
68
|
+
def self.show_src=(flag)
|
69
|
+
@@show_src = flag
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
|
78
|
+
|
79
|
+
method_name = 'convert_template_into_ruby_code'
|
80
|
+
unless ActionView::Base.private_instance_methods.include?(method_name) ||
|
81
|
+
ActionView::Base.instance_methods.include?(method_name)
|
82
|
+
|
83
|
+
require 'action_pack/version'
|
84
|
+
|
85
|
+
module ActionView # :nodoc:
|
86
|
+
|
87
|
+
class Base # :nodoc:
|
88
|
+
|
89
|
+
private
|
90
|
+
|
91
|
+
# convert template into ruby code
|
92
|
+
def convert_template_into_ruby_code(template)
|
93
|
+
ERB.new(template, nil, @@erb_trim_mode).src
|
94
|
+
end
|
95
|
+
|
96
|
+
|
97
|
+
if ActionPack::VERSION::MINOR <= 12 ### Rails 1.1
|
98
|
+
|
99
|
+
|
100
|
+
# Create source code for given template
|
101
|
+
def create_template_source(extension, template, render_symbol, locals)
|
102
|
+
if template_requires_setup?(extension)
|
103
|
+
body = case extension.to_sym
|
104
|
+
when :rxml
|
105
|
+
"xml = Builder::XmlMarkup.new(:indent => 2)\n" +
|
106
|
+
"@controller.headers['Content-Type'] ||= 'application/xml'\n" +
|
107
|
+
template
|
108
|
+
when :rjs
|
109
|
+
"@controller.headers['Content-Type'] ||= 'text/javascript'\n" +
|
110
|
+
"update_page do |page|\n#{template}\nend"
|
111
|
+
end
|
112
|
+
else
|
113
|
+
#body = ERB.new(template, nil, @@erb_trim_mode).src
|
114
|
+
body = convert_template_into_ruby_code(template)
|
115
|
+
end
|
116
|
+
|
117
|
+
@@template_args[render_symbol] ||= {}
|
118
|
+
locals_keys = @@template_args[render_symbol].keys | locals
|
119
|
+
@@template_args[render_symbol] = locals_keys.inject({}) { |h, k| h[k] = true; h }
|
120
|
+
|
121
|
+
locals_code = ""
|
122
|
+
locals_keys.each do |key|
|
123
|
+
locals_code << "#{key} = local_assigns[:#{key}] if local_assigns.has_key?(:#{key})\n"
|
124
|
+
end
|
125
|
+
|
126
|
+
"def #{render_symbol}(local_assigns)\n#{locals_code}#{body}\nend"
|
127
|
+
end
|
128
|
+
|
129
|
+
|
130
|
+
else ### Rails 1.2 or later
|
131
|
+
|
132
|
+
|
133
|
+
# Create source code for given template
|
134
|
+
def create_template_source(extension, template, render_symbol, locals)
|
135
|
+
if template_requires_setup?(extension)
|
136
|
+
body = case extension.to_sym
|
137
|
+
when :rxml
|
138
|
+
"controller.response.content_type ||= 'application/xml'\n" +
|
139
|
+
"xml = Builder::XmlMarkup.new(:indent => 2)\n" +
|
140
|
+
template
|
141
|
+
when :rjs
|
142
|
+
"controller.response.content_type ||= 'text/javascript'\n" +
|
143
|
+
"update_page do |page|\n#{template}\nend"
|
144
|
+
end
|
145
|
+
else
|
146
|
+
#body = ERB.new(template, nil, @@erb_trim_mode).src
|
147
|
+
body = convert_template_into_ruby_code(template)
|
148
|
+
end
|
149
|
+
|
150
|
+
@@template_args[render_symbol] ||= {}
|
151
|
+
locals_keys = @@template_args[render_symbol].keys | locals
|
152
|
+
@@template_args[render_symbol] = locals_keys.inject({}) { |h, k| h[k] = true; h }
|
153
|
+
|
154
|
+
locals_code = ""
|
155
|
+
locals_keys.each do |key|
|
156
|
+
locals_code << "#{key} = local_assigns[:#{key}]\n"
|
157
|
+
end
|
158
|
+
|
159
|
+
"def #{render_symbol}(local_assigns)\n#{locals_code}#{body}\nend"
|
160
|
+
end
|
161
|
+
|
162
|
+
|
163
|
+
end ###
|
164
|
+
|
165
|
+
|
166
|
+
end
|
167
|
+
|
168
|
+
end
|
169
|
+
|
170
|
+
end
|
171
|
+
|
172
|
+
|
173
|
+
## set Erubis as eRuby compiler in Ruby on Rails instead of ERB
|
174
|
+
class ActionView::Base # :nodoc:
|
175
|
+
private
|
176
|
+
def convert_template_into_ruby_code(template)
|
177
|
+
#src = Erubis::Eruby.new(template).src
|
178
|
+
klass = Erubis::Helpers::RailsHelper.engine_class
|
179
|
+
properties = Erubis::Helpers::RailsHelper.init_properties
|
180
|
+
show_src = Erubis::Helpers::RailsHelper.show_src
|
181
|
+
src = klass.new(template, properties).src
|
182
|
+
src.insert(0, '_erbout = ')
|
183
|
+
logger.debug "** Erubis: src==<<'END'\n#{src}END\n" if show_src
|
184
|
+
src
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
|
189
|
+
## make h() method faster
|
190
|
+
module ERB::Util # :nodoc:
|
191
|
+
ESCAPE_TABLE = { '&'=>'&', '<'=>'<', '>'=>'>', '"'=>'"', "'"=>''', }
|
192
|
+
def h(value)
|
193
|
+
value.to_s.gsub(/[&<>"]/) { |s| ESCAPE_TABLE[s] }
|
194
|
+
end
|
195
|
+
module_function :h
|
196
|
+
end
|
197
|
+
|
198
|
+
|
199
|
+
## finish
|
200
|
+
ac = ActionController::Base.new
|
201
|
+
ac.logger.info "** Erubis #{Erubis::VERSION}"
|
202
|
+
#$stdout.puts "** Erubis #{Erubis::VERSION}"
|