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
|
@@ -1,11 +1,11 @@
|
|
|
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
|
|
|
8
7
|
require 'erubis'
|
|
8
|
+
require 'erubis/preprocessing'
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
module Erubis
|
|
@@ -30,54 +30,91 @@ module Erubis
|
|
|
30
30
|
## require 'erubis/helpers/rails_helper'
|
|
31
31
|
## #Erubis::Helpers::RailsHelper.engine_class = Erubis::Eruby # or Erubis::FastEruby
|
|
32
32
|
## #Erubis::Helpers::RailsHelper.init_properties = {}
|
|
33
|
-
## #Erubis::Helpers::RailsHelper.show_src = false
|
|
33
|
+
## #Erubis::Helpers::RailsHelper.show_src = false # set true for debugging
|
|
34
|
+
## #Erubis::Helpers::RailsHelper.preprocessing = true # set true to enable preprocessing
|
|
34
35
|
##
|
|
35
|
-
## 2.
|
|
36
|
+
## 2. restart web server.
|
|
36
37
|
##
|
|
37
|
-
##
|
|
38
|
-
##
|
|
39
|
-
##
|
|
40
|
-
## 3. restart web server.
|
|
41
|
-
##
|
|
42
|
-
## if Erubis::Helper::Rails.show_src is ture, Erubis prints converted Ruby code
|
|
43
|
-
## into log file ('log/development.log' or so). This may be useful for debug.
|
|
38
|
+
## if Erubis::Helper::Rails.show_src is true, Erubis prints converted Ruby code
|
|
39
|
+
## into log file ('log/development.log' or so). if false, it doesn't.
|
|
40
|
+
## if nil, Erubis prints converted Ruby code if ENV['RAILS_ENV'] == 'development'.
|
|
44
41
|
##
|
|
45
42
|
module RailsHelper
|
|
46
43
|
|
|
47
44
|
#cattr_accessor :init_properties
|
|
48
|
-
@@engine_class = Erubis::Eruby
|
|
49
|
-
#@@engine_class = Erubis::FastEruby
|
|
50
|
-
|
|
45
|
+
@@engine_class = ::Erubis::Eruby
|
|
46
|
+
#@@engine_class = ::Erubis::FastEruby
|
|
51
47
|
def self.engine_class
|
|
52
48
|
@@engine_class
|
|
53
49
|
end
|
|
54
|
-
|
|
55
50
|
def self.engine_class=(klass)
|
|
56
51
|
@@engine_class = klass
|
|
57
52
|
end
|
|
58
53
|
|
|
59
54
|
#cattr_accessor :init_properties
|
|
60
55
|
@@init_properties = {}
|
|
61
|
-
|
|
62
56
|
def self.init_properties
|
|
63
57
|
@@init_properties
|
|
64
58
|
end
|
|
65
|
-
|
|
66
59
|
def self.init_properties=(hash)
|
|
67
60
|
@@init_properties = hash
|
|
68
61
|
end
|
|
69
62
|
|
|
70
63
|
#cattr_accessor :show_src
|
|
71
|
-
@@show_src =
|
|
72
|
-
|
|
64
|
+
@@show_src = nil
|
|
73
65
|
def self.show_src
|
|
74
66
|
@@show_src
|
|
75
67
|
end
|
|
76
|
-
|
|
77
68
|
def self.show_src=(flag)
|
|
78
69
|
@@show_src = flag
|
|
79
70
|
end
|
|
80
71
|
|
|
72
|
+
#cattr_accessor :preprocessing
|
|
73
|
+
@@preprocessing = false
|
|
74
|
+
def self.preprocessing
|
|
75
|
+
@@preprocessing
|
|
76
|
+
end
|
|
77
|
+
def self.preprocessing=(flag)
|
|
78
|
+
@@preprocessing = flag
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
## define class for backward-compatibility
|
|
83
|
+
class PreprocessingEruby < Erubis::PreprocessingEruby # :nodoc:
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
module TemplateConverter
|
|
88
|
+
## covert eRuby string into ruby code
|
|
89
|
+
def _convert_template(template) # :nodoc:
|
|
90
|
+
#src = ::Erubis::Eruby.new(template).src
|
|
91
|
+
klass = ::Erubis::Helpers::RailsHelper.engine_class
|
|
92
|
+
properties = ::Erubis::Helpers::RailsHelper.init_properties
|
|
93
|
+
show_src = ::Erubis::Helpers::RailsHelper.show_src
|
|
94
|
+
show_src = ENV['RAILS_ENV'] == 'development' if show_src.nil?
|
|
95
|
+
## preprocessing
|
|
96
|
+
if ::Erubis::Helpers::RailsHelper.preprocessing
|
|
97
|
+
preprocessor = _create_preprocessor(template)
|
|
98
|
+
template = preprocessor.evaluate(_preprocessing_context_object())
|
|
99
|
+
_logger_info "** Erubis: preprocessed==<<'END'\n#{template}END\n" if show_src
|
|
100
|
+
end
|
|
101
|
+
## convert into ruby code
|
|
102
|
+
src = klass.new(template, properties).src
|
|
103
|
+
#src.insert(0, '_erbout = ')
|
|
104
|
+
_logger_info "** Erubis: src==<<'END'\n#{src}END\n" if show_src
|
|
105
|
+
return src
|
|
106
|
+
end
|
|
107
|
+
def _create_preprocessor(template)
|
|
108
|
+
return PreprocessingEruby.new(template, :escape=>true)
|
|
109
|
+
end
|
|
110
|
+
def _preprocessing_context_object
|
|
111
|
+
return self
|
|
112
|
+
end
|
|
113
|
+
def _logger_info(message)
|
|
114
|
+
logger.info message
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
81
118
|
end
|
|
82
119
|
|
|
83
120
|
end
|
|
@@ -85,60 +122,154 @@ module Erubis
|
|
|
85
122
|
end
|
|
86
123
|
|
|
87
124
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
125
|
+
class ActionView::Base # :nodoc:
|
|
126
|
+
include ::Erubis::Helpers::RailsHelper::TemplateConverter
|
|
127
|
+
include ::Erubis::PreprocessingHelper
|
|
128
|
+
private
|
|
129
|
+
# convert template into ruby code
|
|
130
|
+
def convert_template_into_ruby_code(template)
|
|
131
|
+
#ERB.new(template, nil, @@erb_trim_mode).src
|
|
132
|
+
return _convert_template(template)
|
|
133
|
+
end
|
|
134
|
+
end
|
|
91
135
|
|
|
92
|
-
require 'action_pack/version'
|
|
93
136
|
|
|
94
|
-
|
|
137
|
+
require 'action_pack/version'
|
|
95
138
|
|
|
96
|
-
|
|
139
|
+
rails22 = false
|
|
140
|
+
|
|
141
|
+
if ActionPack::VERSION::MAJOR >= 2 ### Rails 2.X
|
|
97
142
|
|
|
98
|
-
private
|
|
99
143
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
144
|
+
if ActionPack::VERSION::MINOR >=2 ### Rails 2.2, 2.3 or higher
|
|
145
|
+
|
|
146
|
+
rails22 = true
|
|
147
|
+
module ActionView
|
|
148
|
+
module TemplateHandlers
|
|
149
|
+
class ErubisHandler < TemplateHandler
|
|
150
|
+
include Compilable
|
|
151
|
+
include ::Erubis::Helpers::RailsHelper::TemplateConverter
|
|
152
|
+
include ::Erubis::PreprocessingHelper
|
|
153
|
+
def compile(template)
|
|
154
|
+
#src = ::ERB.new("<% __in_erb_template=true %>#{template.source}", nil, erb_trim_mode, '@output_buffer').src
|
|
155
|
+
return _convert_template("<% __in_erb_template=true %>#{template.source}")
|
|
156
|
+
end
|
|
157
|
+
end
|
|
103
158
|
end
|
|
159
|
+
handler_klass = TemplateHandlers::ErubisHandler
|
|
160
|
+
Template.register_default_template_handler :erb, handler_klass
|
|
161
|
+
Template.register_template_handler :rhtml, handler_klass
|
|
162
|
+
end
|
|
163
|
+
module Erubis::Helpers::RailsHelper::TemplateConverter
|
|
164
|
+
def _logger_info(message)
|
|
165
|
+
#logger.info message # logger.info seems not available in Rails 2.2
|
|
166
|
+
ActionController::Base.new.logger.info message
|
|
167
|
+
end
|
|
168
|
+
end
|
|
104
169
|
|
|
170
|
+
elsif ActionPack::VERSION::MINOR >=1 ### Rails 2.1
|
|
171
|
+
|
|
172
|
+
module ActionView
|
|
173
|
+
module TemplateHandlers # :nodoc:
|
|
174
|
+
class ErubisHandler < TemplateHandler
|
|
175
|
+
include Compilable
|
|
176
|
+
include Erubis::Helpers::RailsHelper::TemplateConverter
|
|
177
|
+
include Erubis::PreprocessingHelper
|
|
178
|
+
#
|
|
179
|
+
def compile(template)
|
|
180
|
+
return _convert_template(template.source) # template.is_a?(ActionView::Template)
|
|
181
|
+
end
|
|
182
|
+
def logger #:nodoc:
|
|
183
|
+
return @view.controller.logger
|
|
184
|
+
end
|
|
185
|
+
def _preprocessing_context_object #:nodoc:
|
|
186
|
+
return @view.controller.instance_variable_get('@template')
|
|
187
|
+
end
|
|
188
|
+
#
|
|
189
|
+
def cache_fragment(block, name = {}, options = nil) #:nodoc:
|
|
190
|
+
@view.fragment_for(block, name, options) do
|
|
191
|
+
#eval(ActionView::Base.erb_variable, block.binding)
|
|
192
|
+
eval('_buf', block.binding)
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
handler_klass = TemplateHandlers::ErubisHandler
|
|
198
|
+
Template.register_default_template_handler :erb, handler_klass
|
|
199
|
+
Template.register_template_handler :rhtml, handler_klass
|
|
200
|
+
end
|
|
105
201
|
|
|
106
|
-
|
|
202
|
+
elsif ActionPack::VERSION::TINY >= 2 ### Rails 2.0.X (X >= 2)
|
|
107
203
|
|
|
204
|
+
module ActionView
|
|
205
|
+
module TemplateHandlers # :nodoc:
|
|
206
|
+
class ErubisHandler < TemplateHandler
|
|
207
|
+
include Erubis::Helpers::RailsHelper::TemplateConverter
|
|
208
|
+
include Erubis::PreprocessingHelper
|
|
209
|
+
def compile(template)
|
|
210
|
+
return _convert_template(template) # template.is_a?(String)
|
|
211
|
+
end
|
|
212
|
+
def logger #:nodoc:
|
|
213
|
+
return @view.controller.logger
|
|
214
|
+
end
|
|
215
|
+
def _preprocessing_context_object #:nodoc:
|
|
216
|
+
return @view.controller.instance_variable_get('@template')
|
|
217
|
+
end
|
|
218
|
+
end
|
|
219
|
+
end
|
|
220
|
+
Base.class_eval do
|
|
221
|
+
handler_klass = TemplateHandlers::ErubisHandler
|
|
222
|
+
register_default_template_handler :erb, handler_klass
|
|
223
|
+
register_template_handler :rhtml, handler_klass
|
|
224
|
+
end
|
|
225
|
+
end
|
|
108
226
|
|
|
109
|
-
|
|
227
|
+
else ### Rails 2.0.0 or 2.0.1
|
|
228
|
+
|
|
229
|
+
class ActionView::Base # :nodoc:
|
|
230
|
+
private
|
|
231
|
+
# Method to create the source code for a given template.
|
|
110
232
|
def create_template_source(extension, template, render_symbol, locals)
|
|
111
233
|
if template_requires_setup?(extension)
|
|
112
234
|
body = case extension.to_sym
|
|
113
|
-
when :rxml
|
|
235
|
+
when :rxml, :builder
|
|
236
|
+
content_type_handler = (controller.respond_to?(:response) ? "controller.response" : "controller")
|
|
237
|
+
"#{content_type_handler}.content_type ||= Mime::XML\n" +
|
|
114
238
|
"xml = Builder::XmlMarkup.new(:indent => 2)\n" +
|
|
115
|
-
|
|
116
|
-
|
|
239
|
+
template +
|
|
240
|
+
"\nxml.target!\n"
|
|
117
241
|
when :rjs
|
|
118
|
-
"
|
|
242
|
+
"controller.response.content_type ||= Mime::JS\n" +
|
|
119
243
|
"update_page do |page|\n#{template}\nend"
|
|
120
244
|
end
|
|
121
245
|
else
|
|
122
246
|
#body = ERB.new(template, nil, @@erb_trim_mode).src
|
|
123
247
|
body = convert_template_into_ruby_code(template)
|
|
124
248
|
end
|
|
125
|
-
|
|
249
|
+
#
|
|
126
250
|
@@template_args[render_symbol] ||= {}
|
|
127
251
|
locals_keys = @@template_args[render_symbol].keys | locals
|
|
128
252
|
@@template_args[render_symbol] = locals_keys.inject({}) { |h, k| h[k] = true; h }
|
|
129
|
-
|
|
253
|
+
#
|
|
130
254
|
locals_code = ""
|
|
131
255
|
locals_keys.each do |key|
|
|
132
|
-
locals_code << "#{key} = local_assigns[:#{key}]
|
|
256
|
+
locals_code << "#{key} = local_assigns[:#{key}]\n"
|
|
133
257
|
end
|
|
134
|
-
|
|
258
|
+
#
|
|
135
259
|
"def #{render_symbol}(local_assigns)\n#{locals_code}#{body}\nend"
|
|
136
260
|
end
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
end #if
|
|
137
264
|
|
|
138
265
|
|
|
139
|
-
else
|
|
266
|
+
else ### Rails 1.X
|
|
140
267
|
|
|
141
268
|
|
|
269
|
+
if ActionPack::VERSION::MINOR > 12 ### Rails 1.2
|
|
270
|
+
|
|
271
|
+
class ActionView::Base # :nodoc:
|
|
272
|
+
private
|
|
142
273
|
# Create source code for given template
|
|
143
274
|
def create_template_source(extension, template, render_symbol, locals)
|
|
144
275
|
if template_requires_setup?(extension)
|
|
@@ -155,57 +286,68 @@ else ### Rails 1.2 or later
|
|
|
155
286
|
#body = ERB.new(template, nil, @@erb_trim_mode).src
|
|
156
287
|
body = convert_template_into_ruby_code(template)
|
|
157
288
|
end
|
|
158
|
-
|
|
289
|
+
#
|
|
159
290
|
@@template_args[render_symbol] ||= {}
|
|
160
291
|
locals_keys = @@template_args[render_symbol].keys | locals
|
|
161
292
|
@@template_args[render_symbol] = locals_keys.inject({}) { |h, k| h[k] = true; h }
|
|
162
|
-
|
|
293
|
+
#
|
|
163
294
|
locals_code = ""
|
|
164
295
|
locals_keys.each do |key|
|
|
165
296
|
locals_code << "#{key} = local_assigns[:#{key}]\n"
|
|
166
297
|
end
|
|
167
|
-
|
|
298
|
+
#
|
|
168
299
|
"def #{render_symbol}(local_assigns)\n#{locals_code}#{body}\nend"
|
|
169
300
|
end
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
end ###
|
|
173
|
-
|
|
174
|
-
|
|
175
301
|
end
|
|
176
302
|
|
|
177
|
-
|
|
303
|
+
else ### Rails 1.1
|
|
178
304
|
|
|
179
|
-
|
|
305
|
+
class ActionView::Base # :nodoc:
|
|
306
|
+
private
|
|
307
|
+
# Create source code for given template
|
|
308
|
+
def create_template_source(extension, template, render_symbol, locals)
|
|
309
|
+
if template_requires_setup?(extension)
|
|
310
|
+
body = case extension.to_sym
|
|
311
|
+
when :rxml
|
|
312
|
+
"xml = Builder::XmlMarkup.new(:indent => 2)\n" +
|
|
313
|
+
"@controller.headers['Content-Type'] ||= 'application/xml'\n" +
|
|
314
|
+
template
|
|
315
|
+
when :rjs
|
|
316
|
+
"@controller.headers['Content-Type'] ||= 'text/javascript'\n" +
|
|
317
|
+
"update_page do |page|\n#{template}\nend"
|
|
318
|
+
end
|
|
319
|
+
else
|
|
320
|
+
#body = ERB.new(template, nil, @@erb_trim_mode).src
|
|
321
|
+
body = convert_template_into_ruby_code(template)
|
|
322
|
+
end
|
|
323
|
+
#
|
|
324
|
+
@@template_args[render_symbol] ||= {}
|
|
325
|
+
locals_keys = @@template_args[render_symbol].keys | locals
|
|
326
|
+
@@template_args[render_symbol] = locals_keys.inject({}) { |h, k| h[k] = true; h }
|
|
327
|
+
#
|
|
328
|
+
locals_code = ""
|
|
329
|
+
locals_keys.each do |key|
|
|
330
|
+
locals_code << "#{key} = local_assigns[:#{key}] if local_assigns.has_key?(:#{key})\n"
|
|
331
|
+
end
|
|
332
|
+
#
|
|
333
|
+
"def #{render_symbol}(local_assigns)\n#{locals_code}#{body}\nend"
|
|
334
|
+
end
|
|
335
|
+
end
|
|
180
336
|
|
|
337
|
+
end #if
|
|
181
338
|
|
|
182
|
-
##
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
show_src = Erubis::Helpers::RailsHelper.show_src
|
|
190
|
-
src = klass.new(template, properties).src
|
|
191
|
-
#src.insert(0, '_erbout = ')
|
|
192
|
-
logger.debug "** Erubis: src==<<'END'\n#{src}END\n" if show_src
|
|
193
|
-
src
|
|
339
|
+
## make h() method faster (only for Rails 1.X)
|
|
340
|
+
module ERB::Util # :nodoc:
|
|
341
|
+
ESCAPE_TABLE = { '&'=>'&', '<'=>'<', '>'=>'>', '"'=>'"', "'"=>''', }
|
|
342
|
+
def h(value)
|
|
343
|
+
value.to_s.gsub(/[&<>"]/) {|s| ESCAPE_TABLE[s] }
|
|
344
|
+
end
|
|
345
|
+
module_function :h
|
|
194
346
|
end
|
|
195
|
-
end
|
|
196
|
-
|
|
197
347
|
|
|
198
|
-
|
|
199
|
-
module ERB::Util # :nodoc:
|
|
200
|
-
ESCAPE_TABLE = { '&'=>'&', '<'=>'<', '>'=>'>', '"'=>'"', "'"=>''', }
|
|
201
|
-
def h(value)
|
|
202
|
-
value.to_s.gsub(/[&<>"]/) { |s| ESCAPE_TABLE[s] }
|
|
203
|
-
end
|
|
204
|
-
module_function :h
|
|
205
|
-
end
|
|
348
|
+
end ###
|
|
206
349
|
|
|
207
350
|
|
|
208
351
|
## finish
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
#$stdout.puts "** Erubis #{Erubis::VERSION}"
|
|
352
|
+
ActionController::Base.new.logger.info "** Erubis #{::Erubis::VERSION}"
|
|
353
|
+
$stdout.puts "** Erubis #{::Erubis::VERSION}" if rails22
|