erubis 2.6.6 → 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 (148) hide show
  1. data/CHANGES.txt +79 -3
  2. data/MIT-LICENSE +1 -1
  3. data/README.txt +2 -2
  4. data/benchmark/bench.rb +2 -2
  5. data/bin/erubis +2 -2
  6. data/contrib/erubis +293 -155
  7. data/contrib/inline-require +2 -2
  8. data/doc-api/classes/Erubis.html +10 -1
  9. data/doc-api/classes/Erubis/ArrayBufferEnhancer.html +12 -12
  10. data/doc-api/classes/Erubis/ArrayEnhancer.html +14 -14
  11. data/doc-api/classes/Erubis/Basic/Converter.html +24 -24
  12. data/doc-api/classes/Erubis/BiPatternEnhancer.html +12 -12
  13. data/doc-api/classes/Erubis/CGenerator.html +60 -60
  14. data/doc-api/classes/Erubis/Context.html +42 -42
  15. data/doc-api/classes/Erubis/Converter.html +27 -27
  16. data/doc-api/classes/Erubis/CppGenerator.html +382 -0
  17. data/doc-api/classes/Erubis/DeleteIndentEnhancer.html +7 -7
  18. data/doc-api/classes/Erubis/Ecpp.html +126 -0
  19. data/doc-api/classes/Erubis/Engine.html +36 -36
  20. data/doc-api/classes/Erubis/ErboutEnhancer.html +14 -14
  21. data/doc-api/classes/Erubis/EscapeEnhancer.html +6 -6
  22. data/doc-api/classes/Erubis/EscapedEcpp.html +120 -0
  23. data/doc-api/classes/Erubis/Evaluator.html +19 -19
  24. data/doc-api/classes/Erubis/Generator.html +60 -60
  25. data/doc-api/classes/Erubis/HeaderFooterEnhancer.html +14 -14
  26. data/doc-api/classes/Erubis/Helpers/RailsFormHelper.html +150 -150
  27. data/doc-api/classes/Erubis/Helpers/RailsHelper.html +49 -49
  28. data/doc-api/classes/Erubis/Helpers/RailsHelper/TemplateConverter.html +24 -24
  29. data/doc-api/classes/Erubis/InterpolationEnhancer.html +38 -39
  30. data/doc-api/classes/Erubis/JavaGenerator.html +60 -60
  31. data/doc-api/classes/Erubis/JavascriptGenerator.html +66 -66
  32. data/doc-api/classes/Erubis/Main.html +22 -22
  33. data/doc-api/classes/Erubis/NoCodeEnhancer.html +30 -30
  34. data/doc-api/classes/Erubis/NoTextEnhancer.html +6 -6
  35. data/doc-api/classes/Erubis/OptimizedEruby.html +6 -6
  36. data/doc-api/classes/Erubis/OptimizedGenerator.html +72 -72
  37. data/doc-api/classes/Erubis/OptimizedXmlEruby.html +6 -6
  38. data/doc-api/classes/Erubis/PI.html +1 -0
  39. data/doc-api/classes/Erubis/PI/Converter.html +18 -18
  40. data/doc-api/classes/Erubis/PI/Ec.html +6 -6
  41. data/doc-api/classes/Erubis/PI/Ecpp.html +166 -0
  42. data/doc-api/classes/Erubis/PI/Ejava.html +6 -6
  43. data/doc-api/classes/Erubis/PI/Ejavascript.html +6 -6
  44. data/doc-api/classes/Erubis/PI/Eperl.html +6 -6
  45. data/doc-api/classes/Erubis/PI/Ephp.html +6 -6
  46. data/doc-api/classes/Erubis/PI/Eruby.html +7 -7
  47. data/doc-api/classes/Erubis/PI/Escheme.html +6 -6
  48. data/doc-api/classes/Erubis/PI/TinyEruby.html +24 -24
  49. data/doc-api/classes/Erubis/PercentLineEnhancer.html +18 -34
  50. data/doc-api/classes/Erubis/PerlGenerator.html +54 -54
  51. data/doc-api/classes/Erubis/PhpGenerator.html +54 -54
  52. data/doc-api/classes/Erubis/PrefixedLineEnhancer.html +210 -0
  53. data/doc-api/classes/Erubis/PrefixedLineEruby.html +120 -0
  54. data/doc-api/classes/Erubis/PreprocessingEruby.html +12 -12
  55. data/doc-api/classes/Erubis/PreprocessingHelper.html +22 -22
  56. data/doc-api/classes/Erubis/PrintEnabledEnhancer.html +20 -20
  57. data/doc-api/classes/Erubis/PrintOutEnhancer.html +33 -33
  58. data/doc-api/classes/Erubis/RubyEvaluator.html +18 -18
  59. data/doc-api/classes/Erubis/RubyGenerator.html +59 -58
  60. data/doc-api/classes/Erubis/SchemeGenerator.html +60 -60
  61. data/doc-api/classes/Erubis/SimplifyEnhancer.html +7 -7
  62. data/doc-api/classes/Erubis/StdoutEnhancer.html +13 -13
  63. data/doc-api/classes/Erubis/StringBufferEnhancer.html +14 -14
  64. data/doc-api/classes/Erubis/TinyEruby.html +24 -24
  65. data/doc-api/classes/Erubis/XmlHelper.html +30 -30
  66. data/doc-api/classes/Kernel.html +155 -0
  67. data/doc-api/created.rid +1 -1
  68. data/doc-api/files/README_txt.html +3 -3
  69. data/doc-api/files/erubis/context_rb.html +1 -1
  70. data/doc-api/files/erubis/converter_rb.html +3 -3
  71. data/doc-api/files/erubis/engine/ec_rb.html +1 -1
  72. data/doc-api/files/erubis/engine/ecpp_rb.html +115 -0
  73. data/doc-api/files/erubis/engine/ejava_rb.html +2 -2
  74. data/doc-api/files/erubis/engine/ejavascript_rb.html +2 -2
  75. data/doc-api/files/erubis/engine/enhanced_rb.html +2 -2
  76. data/doc-api/files/erubis/engine/eperl_rb.html +1 -1
  77. data/doc-api/files/erubis/engine/ephp_rb.html +1 -1
  78. data/doc-api/files/erubis/engine/eruby_rb.html +2 -2
  79. data/doc-api/files/erubis/engine/escheme_rb.html +1 -1
  80. data/doc-api/files/erubis/engine/optimized_rb.html +1 -1
  81. data/doc-api/files/erubis/engine_rb.html +2 -2
  82. data/doc-api/files/erubis/enhancer_rb.html +2 -2
  83. data/doc-api/files/erubis/error_rb.html +1 -1
  84. data/doc-api/files/erubis/evaluator_rb.html +1 -1
  85. data/doc-api/files/erubis/generator_rb.html +3 -3
  86. data/doc-api/files/erubis/helper_rb.html +1 -1
  87. data/doc-api/files/erubis/helpers/rails_form_helper_rb.html +1 -1
  88. data/doc-api/files/erubis/helpers/rails_helper_rb.html +1 -1
  89. data/doc-api/files/erubis/local-setting_rb.html +1 -1
  90. data/doc-api/files/erubis/main_rb.html +4 -2
  91. data/doc-api/files/erubis/preprocessing_rb.html +1 -1
  92. data/doc-api/files/erubis/tiny_rb.html +1 -1
  93. data/doc-api/files/erubis/util_rb.html +107 -0
  94. data/doc-api/files/erubis_rb.html +2 -2
  95. data/doc-api/fr_class_index.html +7 -0
  96. data/doc-api/fr_file_index.html +2 -0
  97. data/doc-api/fr_method_index.html +237 -223
  98. data/doc/docstyle.css +25 -4
  99. data/doc/users-guide.html +286 -21
  100. data/examples/basic/Makefile +7 -2
  101. data/examples/basic/example.ecpp +33 -0
  102. data/lib/erubis.rb +4 -3
  103. data/lib/erubis/context.rb +2 -2
  104. data/lib/erubis/converter.rb +3 -3
  105. data/lib/erubis/engine.rb +8 -8
  106. data/lib/erubis/engine/ec.rb +2 -2
  107. data/lib/erubis/engine/ecpp.rb +113 -0
  108. data/lib/erubis/engine/ejava.rb +9 -9
  109. data/lib/erubis/engine/ejavascript.rb +9 -9
  110. data/lib/erubis/engine/enhanced.rb +7 -2
  111. data/lib/erubis/engine/eperl.rb +2 -2
  112. data/lib/erubis/engine/ephp.rb +2 -2
  113. data/lib/erubis/engine/eruby.rb +8 -7
  114. data/lib/erubis/engine/escheme.rb +2 -2
  115. data/lib/erubis/engine/optimized.rb +2 -2
  116. data/lib/erubis/enhancer.rb +70 -27
  117. data/lib/erubis/error.rb +2 -2
  118. data/lib/erubis/evaluator.rb +2 -2
  119. data/lib/erubis/generator.rb +3 -3
  120. data/lib/erubis/helper.rb +2 -2
  121. data/lib/erubis/helpers/rails_form_helper.rb +2 -2
  122. data/lib/erubis/helpers/rails_helper.rb +2 -2
  123. data/lib/erubis/local-setting.rb +2 -2
  124. data/lib/erubis/main.rb +31 -4
  125. data/lib/erubis/preprocessing.rb +2 -2
  126. data/lib/erubis/tiny.rb +2 -2
  127. data/lib/erubis/util.rb +22 -0
  128. data/test/assert-text-equal.rb +2 -2
  129. data/test/data/users-guide/bufvar-example.rb +10 -0
  130. data/test/data/users-guide/bufvar-example.result +17 -0
  131. data/test/data/users-guide/example.ecpp +30 -0
  132. data/test/data/users-guide/example_c.result +22 -19
  133. data/test/data/users-guide/fasteruby-example.rb +8 -0
  134. data/test/data/users-guide/fasteruby-example.result +18 -0
  135. data/test/data/users-guide/percentline-example.rhtml +3 -1
  136. data/test/data/users-guide/percentline_example.result +5 -3
  137. data/test/data/users-guide/prefixedline-example.rb +9 -0
  138. data/test/data/users-guide/prefixedline-example.rhtml +6 -0
  139. data/test/data/users-guide/prefixedline_example.result +9 -0
  140. data/test/test-engines.rb +58 -2
  141. data/test/test-enhancers.rb +51 -2
  142. data/test/test-erubis.rb +14 -10
  143. data/test/test-index-cgi.rb +191 -0
  144. data/test/test-main.rb +35 -4
  145. data/test/test-users-guide.rb +18 -2
  146. data/test/test.rb +18 -2
  147. data/test/testutil.rb +22 -7
  148. metadata +30 -24
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Release: 2.6.6 $
3
- ## copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ## $Release: 2.7.0 $
3
+ ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ##
5
5
 
6
6
  require 'erubis/engine'
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Release: 2.6.6 $
3
- ## copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ## $Release: 2.7.0 $
3
+ ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ##
5
5
 
6
6
 
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Release: 2.6.6 $
3
- ## copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ## $Release: 2.7.0 $
3
+ ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ##
5
5
 
6
6
 
@@ -67,7 +67,7 @@ module Erubis
67
67
  end
68
68
 
69
69
  def add_preamble(src)
70
- src << "_buf = $stdout;"
70
+ src << "#{@bufvar} = $stdout;"
71
71
  end
72
72
 
73
73
  def add_postamble(src)
@@ -92,15 +92,15 @@ module Erubis
92
92
  end
93
93
 
94
94
  def add_text(src, text)
95
- src << " print '" << escape_text(text) << "';" unless text.empty?
95
+ src << " print '#{escape_text(text)}';" unless text.empty?
96
96
  end
97
97
 
98
98
  def add_expr_literal(src, code)
99
- src << ' print((' << code << ').to_s);'
99
+ src << " print((#{code}).to_s);"
100
100
  end
101
101
 
102
102
  def add_expr_escaped(src, code)
103
- src << ' print ' << escaped_expr(code) << ';'
103
+ src << " print #{escaped_expr(code)};"
104
104
  end
105
105
 
106
106
  def add_postamble(src)
@@ -162,12 +162,12 @@ module Erubis
162
162
  end
163
163
 
164
164
  def add_preamble(src)
165
- src << "_buf = [];"
165
+ src << "#{@bufvar} = [];"
166
166
  end
167
167
 
168
168
  def add_postamble(src)
169
169
  src << "\n" unless src[-1] == ?\n
170
- src << "_buf\n"
170
+ src << "#{@bufvar}\n"
171
171
  end
172
172
 
173
173
  end
@@ -208,12 +208,12 @@ module Erubis
208
208
  end
209
209
 
210
210
  def add_preamble(src)
211
- src << "_buf = '';"
211
+ src << "#{@bufvar} = '';"
212
212
  end
213
213
 
214
214
  def add_postamble(src)
215
215
  src << "\n" unless src[-1] == ?\n
216
- src << "_buf.to_s\n"
216
+ src << "#{@bufvar}.to_s\n"
217
217
  end
218
218
 
219
219
  end
@@ -231,12 +231,12 @@ module Erubis
231
231
  end
232
232
 
233
233
  def add_preamble(src)
234
- src << "_buf = StringIO.new;"
234
+ src << "#{@bufvar} = StringIO.new;"
235
235
  end
236
236
 
237
237
  def add_postamble(src)
238
238
  src << "\n" unless src[-1] == ?\n
239
- src << "_buf.string\n"
239
+ src << "#{@bufvar}.string\n"
240
240
  end
241
241
 
242
242
  end
@@ -254,12 +254,12 @@ module Erubis
254
254
  end
255
255
 
256
256
  def add_preamble(src)
257
- src << "_erbout = _buf = '';"
257
+ src << "_erbout = #{@bufvar} = '';"
258
258
  end
259
259
 
260
260
  def add_postamble(src)
261
261
  src << "\n" unless src[-1] == ?\n
262
- src << "_buf.to_s\n"
262
+ src << "#{@bufvar}.to_s\n"
263
263
  end
264
264
 
265
265
  end
@@ -434,23 +434,34 @@ module Erubis
434
434
 
435
435
 
436
436
  ##
437
- ## regards lines starting with '%' as program code
437
+ ## regards lines starting with '^[ \t]*%' as program code
438
438
  ##
439
- ## this is for compatibility to eruby and ERB.
439
+ ## in addition you can specify prefix character (default '%')
440
440
  ##
441
441
  ## this is language-independent.
442
442
  ##
443
- module PercentLineEnhancer
443
+ module PrefixedLineEnhancer
444
444
 
445
445
  def self.desc # :nodoc:
446
- "regard lines starting with '%' as program code"
446
+ "regard lines matched to '^[ \t]*%' as program code"
447
+ end
448
+
449
+ def init_generator(properties={})
450
+ super
451
+ @prefixchar = properties[:prefixchar]
447
452
  end
448
453
 
449
454
  def add_text(src, text)
455
+ unless @prefixrexp
456
+ @prefixchar ||= '%'
457
+ @prefixrexp = Regexp.compile("^([ \\t]*)\\#{@prefixchar}(.*?\\r?\\n)")
458
+ end
450
459
  pos = 0
451
460
  text2 = ''
452
- text.scan(/^\%(.*?\r?\n)/) do
453
- line = $1
461
+ text.scan(@prefixrexp) do
462
+ space = $1
463
+ line = $2
464
+ space, line = '', $1 unless $2
454
465
  match = Regexp.last_match
455
466
  len = match.begin(0) - pos
456
467
  str = text[pos, len]
@@ -460,12 +471,12 @@ module Erubis
460
471
  else
461
472
  text2 << str
462
473
  end
463
- if line[0] == ?%
464
- text2 << line
474
+ if line[0, 1] == @prefixchar
475
+ text2 << space << line
465
476
  else
466
477
  super(src, text2)
467
478
  text2 = ''
468
- add_stmt(src, line)
479
+ add_stmt(src, space + line)
469
480
  end
470
481
  end
471
482
  #rest = pos == 0 ? text : $' # ruby1.8
@@ -480,6 +491,39 @@ module Erubis
480
491
  end
481
492
 
482
493
 
494
+ ##
495
+ ## regards lines starting with '%' as program code
496
+ ##
497
+ ## this is for compatibility to eruby and ERB.
498
+ ##
499
+ ## this is language-independent.
500
+ ##
501
+ module PercentLineEnhancer
502
+ include PrefixedLineEnhancer
503
+
504
+ def self.desc # :nodoc:
505
+ "regard lines starting with '%' as program code"
506
+ end
507
+
508
+ #--
509
+ #def init_generator(properties={})
510
+ # super
511
+ # @prefixchar = '%'
512
+ # @prefixrexp = /^\%(.*?\r?\n)/
513
+ #end
514
+ #++
515
+
516
+ def add_text(src, text)
517
+ unless @prefixrexp
518
+ @prefixchar = '%'
519
+ @prefixrexp = /^\%(.*?\r?\n)/
520
+ end
521
+ super(src, text)
522
+ end
523
+
524
+ end
525
+
526
+
483
527
  ##
484
528
  ## [experimental] allow header and footer in eRuby script
485
529
  ##
@@ -654,16 +698,15 @@ module Erubis
654
698
  #src << " _buf << %Q`" << text << "`;"
655
699
  if text[-1] == ?\n
656
700
  text[-1] = "\\n"
657
- src << " _buf << %Q`" << text << "`\n"
701
+ src << " #{@bufvar} << %Q`#{text}`\n"
658
702
  else
659
- src << " _buf << %Q`" << text << "`;"
703
+ src << " #{@bufvar} << %Q`#{text}`;"
660
704
  end
661
705
  end
662
706
 
663
707
  def _add_text_to_str(str, text)
664
708
  return if !text || text.empty?
665
- text.gsub!(/[`\#\\]/, '\\\\\&')
666
- str << text
709
+ str << text.gsub(/[`\#\\]/, '\\\\\&')
667
710
  end
668
711
 
669
712
  def add_expr_escaped(str, code)
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Release: 2.6.6 $
3
- ## copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ## $Release: 2.7.0 $
3
+ ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ##
5
5
 
6
6
  module Erubis
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Release: 2.6.6 $
3
- ## copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ## $Release: 2.7.0 $
3
+ ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ##
5
5
 
6
6
  require 'erubis/error'
@@ -1,9 +1,9 @@
1
1
  ##
2
- ## $Release: 2.6.6 $
3
- ## copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ## $Release: 2.7.0 $
3
+ ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ##
5
5
 
6
- require 'abstract'
6
+ require 'erubis/util'
7
7
 
8
8
  module Erubis
9
9
 
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Release: 2.6.6 $
3
- ## copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ## $Release: 2.7.0 $
3
+ ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ##
5
5
 
6
6
 
@@ -1,6 +1,6 @@
1
1
  ###
2
- ### $Release: 2.6.6 $
3
- ### copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ### $Release: 2.7.0 $
3
+ ### copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ###
5
5
 
6
6
 
@@ -1,6 +1,6 @@
1
1
  ###
2
- ### $Release: 2.6.6 $
3
- ### copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ### $Release: 2.7.0 $
3
+ ### copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ###
5
5
 
6
6
 
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Release: 2.6.6 $
3
- ## copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ## $Release: 2.7.0 $
3
+ ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ##
5
5
 
6
6
  ##
@@ -1,6 +1,6 @@
1
1
  ###
2
- ### $Release: 2.6.6 $
3
- ### copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ### $Release: 2.7.0 $
3
+ ### copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ###
5
5
 
6
6
  require 'yaml'
@@ -11,6 +11,7 @@ require 'erubis/engine/optimized'
11
11
  require 'erubis/engine/eruby'
12
12
  require 'erubis/engine/ephp'
13
13
  require 'erubis/engine/ec'
14
+ require 'erubis/engine/ecpp'
14
15
  require 'erubis/engine/ejava'
15
16
  require 'erubis/engine/escheme'
16
17
  require 'erubis/engine/eperl'
@@ -231,7 +232,7 @@ module Erubis
231
232
  buf << " -z : syntax checking"
232
233
  buf << " -e : escape (equal to '--E Escape')"
233
234
  buf << " -p pattern : embedded pattern (default '<% %>')"
234
- buf << " -l lang : convert but no execute (ruby/php/c/java/scheme/perl/js)"
235
+ buf << " -l lang : convert but no execute (ruby/php/c/cpp/java/scheme/perl/js)"
235
236
  buf << " -E e1,e2,... : enhancer names (Escape, PercentLine, BiPattern, ...)"
236
237
  buf << " -I path : library include path"
237
238
  buf << " -K kanji : kanji code (euc/sjis/utf8) (default none)"
@@ -269,7 +270,7 @@ module Erubis
269
270
  list << ['(common)', common_props]
270
271
  list << ['(basic)', basic_props - common_props]
271
272
  list << ['(pi)', pi_props - common_props]
272
- %w[ruby php c java scheme perl javascript].each do |lang|
273
+ %w[ruby php c cpp java scheme perl javascript].each do |lang|
273
274
  klass = Erubis.const_get("E#{lang}")
274
275
  list << [lang, collect_supported_properties(klass) - basic_props]
275
276
  end
@@ -484,6 +485,32 @@ module Erubis
484
485
  return "#{filename}:#{linenum}: #{message}"
485
486
  end
486
487
 
488
+ if defined?(RUBY_ENGINE) && RUBY_ENGINE == "rbx"
489
+ def check_syntax(filename, src)
490
+ require 'compiler'
491
+ verbose = $VERBOSE
492
+ msg = nil
493
+ begin
494
+ $VERBOSE = true
495
+ Rubinius::Compiler.compile_string(src, filename)
496
+ rescue SyntaxError => ex
497
+ ex_linenum = ex.line
498
+ linenum = 0
499
+ srcline = src.each_line do |line|
500
+ linenum += 1
501
+ break line if linenum == ex_linenum
502
+ end
503
+ msg = "#{ex.message}\n"
504
+ msg << srcline
505
+ msg << "\n" unless srcline =~ /\n\z/
506
+ msg << (" " * (ex.column-1)) << "^\n"
507
+ ensure
508
+ $VERBOSE = verbose
509
+ end
510
+ return msg
511
+ end
512
+ end
513
+
487
514
  end
488
515
 
489
516
  end
@@ -1,6 +1,6 @@
1
1
  ###
2
- ### $Release: 2.6.6 $
3
- ### copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ### $Release: 2.7.0 $
3
+ ### copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ###
5
5
 
6
6
  require 'cgi'
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Release: 2.6.6 $
3
- ## copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ## $Release: 2.7.0 $
3
+ ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ##
5
5
 
6
6
  module Erubis
@@ -0,0 +1,22 @@
1
+ ##
2
+ ## $Release: 2.7.0 $
3
+ ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
+ ##
5
+
6
+ module Kernel
7
+
8
+ ##
9
+ ## raise NotImplementedError
10
+ ##
11
+ def not_implemented #:doc:
12
+ backtrace = caller()
13
+ method_name = (backtrace.shift =~ /`(\w+)'$/) && $1
14
+ mesg = "class #{self.class.name} must implement abstract method '#{method_name}()'."
15
+ #mesg = "#{self.class.name}##{method_name}() is not implemented."
16
+ err = NotImplementedError.new mesg
17
+ err.set_backtrace backtrace
18
+ raise err
19
+ end
20
+ private :not_implemented
21
+
22
+ end
@@ -1,6 +1,6 @@
1
1
  ###
2
- ### $Release: 2.6.6 $
3
- ### copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ### $Release: 2.7.0 $
3
+ ### copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ###
5
5
 
6
6
  require 'test/unit'
@@ -0,0 +1,10 @@
1
+ require 'erubis'
2
+ input = File.read('example.eruby')
3
+
4
+ puts "----- default -----"
5
+ eruby = Erubis::FastEruby.new(input)
6
+ puts eruby.src
7
+
8
+ puts "----- with :bufvar option -----"
9
+ eruby = Erubis::FastEruby.new(input, :bufvar=>'@_out_buf')
10
+ print eruby.src
@@ -0,0 +1,17 @@
1
+ $ ruby bufvar-example.rb
2
+ ----- default -----
3
+ _buf = ''; _buf << %Q`<div>\n`
4
+ for item in list
5
+ _buf << %Q` <p>#{ item }</p>
6
+ <p>#{Erubis::XmlHelper.escape_xml( item )}</p>\n`
7
+ end
8
+ _buf << %Q`</div>\n`
9
+ _buf.to_s
10
+ ----- with :bufvar option -----
11
+ @_out_buf = ''; @_out_buf << %Q`<div>\n`
12
+ for item in list
13
+ @_out_buf << %Q` <p>#{ item }</p>
14
+ <p>#{Erubis::XmlHelper.escape_xml( item )}</p>\n`
15
+ end
16
+ @_out_buf << %Q`</div>\n`
17
+ @_out_buf.to_s