erubis 2.6.6 → 2.7.0

Sign up to get free protection for your applications and to get access to all the features.
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