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.
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
  ##