erubis 2.3.1 → 2.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (163) hide show
  1. data/{CHANGES → CHANGES.txt} +373 -3
  2. data/MIT-LICENSE +1 -1
  3. data/README.txt +6 -5
  4. data/benchmark/bench.rb +18 -11
  5. data/bin/erubis +3 -4
  6. data/contrib/erubis +3462 -5
  7. data/contrib/inline-require +54 -28
  8. data/doc/docstyle.css +25 -4
  9. data/doc/users-guide.html +814 -110
  10. data/doc-api/classes/ActionView/TemplateHandlers/ErubisHandler.html +209 -0
  11. data/doc-api/classes/ActionView.html +105 -0
  12. data/doc-api/classes/Erubis/ArrayBufferEnhancer.html +14 -14
  13. data/doc-api/classes/Erubis/ArrayEnhancer.html +16 -16
  14. data/doc-api/classes/Erubis/Basic/Converter.html +36 -31
  15. data/doc-api/classes/Erubis/BiPatternEnhancer.html +16 -13
  16. data/doc-api/classes/Erubis/CGenerator.html +70 -70
  17. data/doc-api/classes/Erubis/Context.html +49 -49
  18. data/doc-api/classes/Erubis/Converter.html +30 -29
  19. data/doc-api/classes/Erubis/CppGenerator.html +382 -0
  20. data/doc-api/classes/Erubis/DeleteIndentEnhancer.html +7 -7
  21. data/doc-api/classes/Erubis/Ecpp.html +126 -0
  22. data/doc-api/classes/Erubis/Engine.html +46 -43
  23. data/doc-api/classes/Erubis/ErboutEnhancer.html +16 -16
  24. data/doc-api/classes/Erubis/EscapeEnhancer.html +7 -7
  25. data/doc-api/classes/Erubis/EscapedEcpp.html +120 -0
  26. data/doc-api/classes/Erubis/Evaluator.html +22 -22
  27. data/doc-api/classes/Erubis/Generator.html +70 -70
  28. data/doc-api/classes/Erubis/HeaderFooterEnhancer.html +18 -15
  29. data/doc-api/classes/Erubis/Helpers/RailsFormHelper.html +787 -0
  30. data/doc-api/classes/Erubis/Helpers/RailsHelper/TemplateConverter.html +213 -0
  31. data/doc-api/classes/Erubis/Helpers/RailsHelper.html +103 -54
  32. data/doc-api/classes/Erubis/Helpers.html +6 -1
  33. data/doc-api/classes/Erubis/InterpolationEnhancer.html +42 -41
  34. data/doc-api/classes/Erubis/JavaGenerator.html +69 -69
  35. data/doc-api/classes/Erubis/JavascriptGenerator.html +79 -74
  36. data/doc-api/classes/Erubis/Main.html +49 -48
  37. data/doc-api/classes/Erubis/NoCodeEnhancer.html +35 -35
  38. data/doc-api/classes/Erubis/NoTextEnhancer.html +7 -7
  39. data/doc-api/classes/Erubis/OptimizedEruby.html +7 -7
  40. data/doc-api/classes/Erubis/OptimizedGenerator.html +84 -84
  41. data/doc-api/classes/Erubis/OptimizedXmlEruby.html +7 -7
  42. data/doc-api/classes/Erubis/PI/Converter.html +23 -22
  43. data/doc-api/classes/Erubis/PI/Ec.html +7 -7
  44. data/doc-api/classes/Erubis/PI/Ecpp.html +166 -0
  45. data/doc-api/classes/Erubis/PI/Ejava.html +7 -7
  46. data/doc-api/classes/Erubis/PI/Ejavascript.html +7 -7
  47. data/doc-api/classes/Erubis/PI/Eperl.html +7 -7
  48. data/doc-api/classes/Erubis/PI/Ephp.html +7 -7
  49. data/doc-api/classes/Erubis/PI/Eruby.html +6 -6
  50. data/doc-api/classes/Erubis/PI/Escheme.html +7 -7
  51. data/doc-api/classes/Erubis/PI/TinyEruby.html +28 -27
  52. data/doc-api/classes/Erubis/PI.html +1 -0
  53. data/doc-api/classes/Erubis/PercentLineEnhancer.html +18 -29
  54. data/doc-api/classes/Erubis/PerlGenerator.html +63 -63
  55. data/doc-api/classes/Erubis/PhpGenerator.html +63 -63
  56. data/doc-api/classes/Erubis/PrefixedLineEnhancer.html +210 -0
  57. data/doc-api/classes/Erubis/PrefixedLineEruby.html +120 -0
  58. data/doc-api/classes/Erubis/PreprocessingEruby.html +183 -0
  59. data/doc-api/classes/Erubis/PreprocessingHelper.html +212 -0
  60. data/doc-api/classes/Erubis/PrintEnabledEnhancer.html +23 -23
  61. data/doc-api/classes/Erubis/PrintOutEnhancer.html +38 -38
  62. data/doc-api/classes/Erubis/RubyEvaluator.html +59 -22
  63. data/doc-api/classes/Erubis/RubyGenerator.html +53 -52
  64. data/doc-api/classes/Erubis/SchemeGenerator.html +70 -70
  65. data/doc-api/classes/Erubis/SimplifyEnhancer.html +10 -9
  66. data/doc-api/classes/Erubis/StdoutEnhancer.html +3 -3
  67. data/doc-api/classes/Erubis/StringBufferEnhancer.html +16 -16
  68. data/doc-api/classes/Erubis/TinyEruby.html +33 -33
  69. data/doc-api/classes/Erubis/XmlHelper.html +80 -15
  70. data/doc-api/classes/Erubis.html +25 -1
  71. data/doc-api/classes/Kernel.html +155 -0
  72. data/doc-api/created.rid +1 -1
  73. data/doc-api/files/README_txt.html +8 -8
  74. data/doc-api/files/erubis/context_rb.html +2 -2
  75. data/doc-api/files/erubis/converter_rb.html +3 -3
  76. data/doc-api/files/erubis/engine/ec_rb.html +2 -2
  77. data/doc-api/files/erubis/engine/ecpp_rb.html +115 -0
  78. data/doc-api/files/erubis/engine/ejava_rb.html +2 -2
  79. data/doc-api/files/erubis/engine/ejavascript_rb.html +2 -2
  80. data/doc-api/files/erubis/engine/enhanced_rb.html +2 -2
  81. data/doc-api/files/erubis/engine/eperl_rb.html +2 -2
  82. data/doc-api/files/erubis/engine/ephp_rb.html +2 -2
  83. data/doc-api/files/erubis/engine/eruby_rb.html +2 -2
  84. data/doc-api/files/erubis/engine/escheme_rb.html +2 -2
  85. data/doc-api/files/erubis/engine/optimized_rb.html +2 -2
  86. data/doc-api/files/erubis/engine_rb.html +2 -2
  87. data/doc-api/files/erubis/enhancer_rb.html +2 -2
  88. data/doc-api/files/erubis/error_rb.html +2 -2
  89. data/doc-api/files/erubis/evaluator_rb.html +2 -2
  90. data/doc-api/files/erubis/generator_rb.html +3 -3
  91. data/doc-api/files/erubis/helper_rb.html +2 -2
  92. data/doc-api/files/erubis/helpers/rails_form_helper_rb.html +107 -0
  93. data/doc-api/files/erubis/helpers/rails_helper_rb.html +3 -2
  94. data/doc-api/files/erubis/local-setting_rb.html +2 -2
  95. data/doc-api/files/erubis/main_rb.html +4 -2
  96. data/doc-api/files/erubis/preprocessing_rb.html +114 -0
  97. data/doc-api/files/erubis/tiny_rb.html +2 -2
  98. data/doc-api/files/erubis/util_rb.html +107 -0
  99. data/doc-api/files/erubis_rb.html +2 -2
  100. data/doc-api/fr_class_index.html +13 -0
  101. data/doc-api/fr_file_index.html +4 -0
  102. data/doc-api/fr_method_index.html +237 -179
  103. data/examples/basic/Makefile +7 -2
  104. data/examples/basic/example.ecpp +33 -0
  105. data/lib/erubis/context.rb +2 -3
  106. data/lib/erubis/converter.rb +17 -11
  107. data/lib/erubis/engine/ec.rb +2 -3
  108. data/lib/erubis/engine/ecpp.rb +113 -0
  109. data/lib/erubis/engine/ejava.rb +9 -10
  110. data/lib/erubis/engine/ejavascript.rb +14 -9
  111. data/lib/erubis/engine/enhanced.rb +7 -3
  112. data/lib/erubis/engine/eperl.rb +2 -3
  113. data/lib/erubis/engine/ephp.rb +2 -3
  114. data/lib/erubis/engine/eruby.rb +8 -8
  115. data/lib/erubis/engine/escheme.rb +2 -3
  116. data/lib/erubis/engine/optimized.rb +2 -3
  117. data/lib/erubis/engine.rb +13 -11
  118. data/lib/erubis/enhancer.rb +101 -34
  119. data/lib/erubis/error.rb +2 -3
  120. data/lib/erubis/evaluator.rb +27 -10
  121. data/lib/erubis/generator.rb +3 -4
  122. data/lib/erubis/helper.rb +14 -3
  123. data/lib/erubis/helpers/rails_form_helper.rb +197 -0
  124. data/lib/erubis/helpers/rails_helper.rb +219 -77
  125. data/lib/erubis/local-setting.rb +2 -3
  126. data/lib/erubis/main.rb +85 -60
  127. data/lib/erubis/preprocessing.rb +58 -0
  128. data/lib/erubis/tiny.rb +9 -9
  129. data/lib/erubis/util.rb +22 -0
  130. data/lib/erubis.rb +4 -4
  131. data/test/assert-text-equal.rb +2 -3
  132. data/test/data/users-guide/bufvar-example.rb +10 -0
  133. data/test/data/users-guide/bufvar-example.result +17 -0
  134. data/test/data/users-guide/def_method.rb +14 -0
  135. data/test/data/users-guide/def_method.result +3 -0
  136. data/test/data/users-guide/example.ecpp +30 -0
  137. data/test/data/users-guide/example1.rb +1 -0
  138. data/test/data/users-guide/example_c.result +22 -19
  139. data/test/data/users-guide/fasteruby-example.rb +8 -0
  140. data/test/data/users-guide/fasteruby-example.result +18 -0
  141. data/test/data/users-guide/main_program1.rb +8 -0
  142. data/test/data/users-guide/main_program1.result +6 -0
  143. data/test/data/users-guide/main_program2.rb +8 -0
  144. data/test/data/users-guide/main_program2.result +6 -0
  145. data/test/data/users-guide/percentline-example.rhtml +3 -1
  146. data/test/data/users-guide/percentline_example.result +5 -3
  147. data/test/data/users-guide/prefixedline-example.rb +9 -0
  148. data/test/data/users-guide/prefixedline-example.rhtml +6 -0
  149. data/test/data/users-guide/prefixedline_example.result +9 -0
  150. data/test/data/users-guide/tail_260.result +4 -0
  151. data/test/data/users-guide/tailnewline.rhtml +3 -0
  152. data/test/data/users-guide/template1.rhtml +4 -0
  153. data/test/data/users-guide/template2.rhtml +4 -0
  154. data/test/test-engines.rb +88 -5
  155. data/test/test-enhancers.rb +83 -6
  156. data/test/test-erubis.rb +115 -11
  157. data/test/test-index-cgi.rb +191 -0
  158. data/test/test-main.rb +143 -31
  159. data/test/test-users-guide.rb +20 -3
  160. data/test/test.rb +18 -3
  161. data/test/testutil.rb +44 -8
  162. metadata +104 -67
  163. data/contrib/action_view_base_rb.patch +0 -23
@@ -1,11 +1,11 @@
1
1
  ###
2
- ### $Rev: 82 $
3
- ### $Release: 2.3.1 $
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 # set true for debugging
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. (optional) apply the patch for 'action_view/base.rb'
36
+ ## 2. restart web server.
36
37
  ##
37
- ## $ cd /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_view/
38
- ## $ sudo patch -p1 < /tmp/erubis_2.X.X/contrib/action_view_base_rb.patch
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 = false
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
- method_name = 'convert_template_into_ruby_code'
89
- unless ActionView::Base.private_instance_methods.include?(method_name) ||
90
- ActionView::Base.instance_methods.include?(method_name)
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
- module ActionView # :nodoc:
137
+ require 'action_pack/version'
95
138
 
96
- class Base # :nodoc:
139
+ rails22 = false
140
+
141
+ if ActionPack::VERSION::MAJOR >= 2 ### Rails 2.X
97
142
 
98
- private
99
143
 
100
- # convert template into ruby code
101
- def convert_template_into_ruby_code(template)
102
- ERB.new(template, nil, @@erb_trim_mode).src
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
- if ActionPack::VERSION::MINOR <= 12 ### Rails 1.1
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
- # Create source code for given template
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
- "@controller.headers['Content-Type'] ||= 'application/xml'\n" +
116
- template
239
+ template +
240
+ "\nxml.target!\n"
117
241
  when :rjs
118
- "@controller.headers['Content-Type'] ||= 'text/javascript'\n" +
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}] if local_assigns.has_key?(:#{key})\n"
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 ### Rails 1.2 or later
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
- end
303
+ else ### Rails 1.1
178
304
 
179
- end
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
- ## set Erubis as eRuby compiler in Ruby on Rails instead of ERB
183
- class ActionView::Base # :nodoc:
184
- private
185
- def convert_template_into_ruby_code(template)
186
- #src = Erubis::Eruby.new(template).src
187
- klass = Erubis::Helpers::RailsHelper.engine_class
188
- properties = Erubis::Helpers::RailsHelper.init_properties
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 = { '&'=>'&amp;', '<'=>'&lt;', '>'=>'&gt;', '"'=>'&quot;', "'"=>'&#039;', }
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
- ## make h() method faster
199
- module ERB::Util # :nodoc:
200
- ESCAPE_TABLE = { '&'=>'&amp;', '<'=>'&lt;', '>'=>'&gt;', '"'=>'&quot;', "'"=>'&#039;', }
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
- ac = ActionController::Base.new
210
- ac.logger.info "** Erubis #{Erubis::VERSION}"
211
- #$stdout.puts "** Erubis #{Erubis::VERSION}"
352
+ ActionController::Base.new.logger.info "** Erubis #{::Erubis::VERSION}"
353
+ $stdout.puts "** Erubis #{::Erubis::VERSION}" if rails22
@@ -1,7 +1,6 @@
1
1
  ##
2
- ## $Rev: 77 $
3
- ## $Release: 2.3.1 $
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
  ##