erubis 1.1.0 → 2.0.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 (116) hide show
  1. data/ChangeLog +45 -18
  2. data/README.txt +80 -0
  3. data/benchmark/erubybench-lib.rb +189 -0
  4. data/benchmark/erubybench.rb +364 -0
  5. data/benchmark/erubybench.rhtml +61 -0
  6. data/benchmark/erubybench.yaml +61 -0
  7. data/bin/erubis +4 -180
  8. data/contrib/erubis +2297 -0
  9. data/contrib/inline-require +151 -0
  10. data/doc-api/classes/Erubis.html +236 -0
  11. data/doc-api/classes/Erubis/ArrayBufferEnhancer.html +175 -0
  12. data/doc-api/classes/Erubis/ArrayBufferEruby.html +120 -0
  13. data/doc-api/classes/Erubis/ArrayEnhancer.html +174 -0
  14. data/doc-api/classes/Erubis/ArrayEruby.html +120 -0
  15. data/doc-api/classes/Erubis/BiPatternEnhancer.html +212 -0
  16. data/doc-api/classes/Erubis/BiPatternEruby.html +120 -0
  17. data/doc-api/classes/Erubis/CommandOptionError.html +113 -0
  18. data/doc-api/classes/Erubis/Context.html +249 -0
  19. data/doc-api/classes/Erubis/Ec.html +399 -0
  20. data/doc-api/classes/Erubis/Ejava.html +366 -0
  21. data/doc-api/classes/Erubis/Ejavascript.html +390 -0
  22. data/doc-api/classes/Erubis/Engine.html +711 -0
  23. data/doc-api/classes/Erubis/Eperl.html +350 -0
  24. data/doc-api/classes/Erubis/Ephp.html +308 -0
  25. data/doc-api/classes/Erubis/ErubisError.html +117 -0
  26. data/doc-api/classes/Erubis/Eruby.html +310 -0
  27. data/doc-api/classes/Erubis/EscapeEnhancer.html +167 -0
  28. data/doc-api/classes/Erubis/EscapedEc.html +120 -0
  29. data/doc-api/classes/Erubis/EscapedEjava.html +120 -0
  30. data/doc-api/classes/Erubis/EscapedEjavascript.html +120 -0
  31. data/doc-api/classes/Erubis/EscapedEperl.html +120 -0
  32. data/doc-api/classes/Erubis/EscapedEphp.html +120 -0
  33. data/doc-api/classes/Erubis/EscapedEruby.html +127 -0
  34. data/doc-api/classes/Erubis/EscapedEscheme.html +120 -0
  35. data/doc-api/classes/Erubis/Escheme.html +389 -0
  36. data/doc-api/classes/Erubis/HeaderFooterEnhancer.html +264 -0
  37. data/doc-api/classes/Erubis/HeaderFooterEruby.html +120 -0
  38. data/doc-api/classes/Erubis/Main.html +318 -0
  39. data/doc-api/classes/Erubis/NoTextEnhancer.html +159 -0
  40. data/doc-api/classes/Erubis/NoTextEruby.html +120 -0
  41. data/doc-api/classes/Erubis/OptimizedEruby.html +445 -0
  42. data/doc-api/classes/Erubis/OptimizedXmlEruby.html +163 -0
  43. data/doc-api/classes/Erubis/PercentLineEnhancer.html +174 -0
  44. data/doc-api/classes/Erubis/PercentLineEruby.html +120 -0
  45. data/doc-api/classes/Erubis/PrintEnabledEnhancer.html +212 -0
  46. data/doc-api/classes/Erubis/PrintEnabledEruby.html +120 -0
  47. data/doc-api/classes/Erubis/PrintOutEnhancer.html +244 -0
  48. data/doc-api/classes/Erubis/PrintOutEruby.html +120 -0
  49. data/doc-api/classes/Erubis/PrintOutSimplifiedEruby.html +121 -0
  50. data/doc-api/classes/Erubis/SimplifiedEruby.html +120 -0
  51. data/doc-api/classes/Erubis/SimplifyEnhancer.html +185 -0
  52. data/doc-api/classes/Erubis/StdoutEnhancer.html +173 -0
  53. data/doc-api/classes/Erubis/StdoutEruby.html +120 -0
  54. data/doc-api/classes/Erubis/StdoutSimplifiedEruby.html +121 -0
  55. data/doc-api/classes/Erubis/StringBufferEnhancer.html +174 -0
  56. data/doc-api/classes/Erubis/StringBufferEruby.html +120 -0
  57. data/doc-api/classes/Erubis/StringIOEruby.html +120 -0
  58. data/doc-api/classes/Erubis/TinyEruby.html +305 -0
  59. data/doc-api/classes/Erubis/XmlEruby.html +130 -0
  60. data/doc-api/classes/Erubis/XmlHelper.html +193 -0
  61. data/doc-api/created.rid +1 -0
  62. data/doc-api/files/__/README_txt.html +214 -0
  63. data/doc-api/files/erubis/engine/ec_rb.html +115 -0
  64. data/doc-api/files/erubis/engine/ejava_rb.html +115 -0
  65. data/doc-api/files/erubis/engine/ejavascript_rb.html +115 -0
  66. data/doc-api/files/erubis/engine/enhanced_rb.html +115 -0
  67. data/doc-api/files/erubis/engine/eperl_rb.html +115 -0
  68. data/doc-api/files/erubis/engine/ephp_rb.html +115 -0
  69. data/doc-api/files/erubis/engine/eruby_rb.html +115 -0
  70. data/doc-api/files/erubis/engine/escheme_rb.html +115 -0
  71. data/doc-api/files/erubis/engine/optimized_rb.html +114 -0
  72. data/doc-api/files/erubis/engine_rb.html +114 -0
  73. data/doc-api/files/erubis/enhancer_rb.html +114 -0
  74. data/doc-api/files/erubis/helper_rb.html +107 -0
  75. data/doc-api/files/erubis/local-setting_rb.html +107 -0
  76. data/doc-api/files/erubis/main_rb.html +125 -0
  77. data/doc-api/files/erubis/tiny_rb.html +107 -0
  78. data/doc-api/files/erubis_rb.html +118 -0
  79. data/doc-api/fr_class_index.html +77 -0
  80. data/doc-api/fr_file_index.html +43 -0
  81. data/doc-api/fr_method_index.html +157 -0
  82. data/doc-api/index.html +24 -0
  83. data/doc-api/rdoc-style.css +208 -0
  84. data/doc/users-guide.html +1507 -375
  85. data/examples/Makefile +53 -0
  86. data/examples/example.ec +24 -0
  87. data/examples/example.ejava +41 -0
  88. data/examples/example.ejavascript +16 -0
  89. data/examples/example.eperl +16 -0
  90. data/examples/example.ephp +17 -0
  91. data/examples/example.eruby +15 -0
  92. data/examples/example.escheme +26 -0
  93. data/lib/erubis.rb +37 -269
  94. data/lib/erubis/engine.rb +260 -0
  95. data/lib/erubis/engine/ec.rb +106 -0
  96. data/lib/erubis/engine/ejava.rb +101 -0
  97. data/lib/erubis/engine/ejavascript.rb +104 -0
  98. data/lib/erubis/engine/enhanced.rb +102 -0
  99. data/lib/erubis/engine/eperl.rb +83 -0
  100. data/lib/erubis/engine/ephp.rb +84 -0
  101. data/lib/erubis/engine/eruby.rb +91 -0
  102. data/lib/erubis/engine/escheme.rb +96 -0
  103. data/lib/erubis/engine/optimized.rb +114 -0
  104. data/lib/erubis/enhancer.rb +487 -0
  105. data/lib/erubis/helper.rb +53 -0
  106. data/lib/erubis/local-setting.rb +10 -0
  107. data/lib/erubis/main.rb +368 -0
  108. data/lib/erubis/tiny.rb +65 -0
  109. data/test/assert-text-equal.rb +45 -0
  110. data/test/test-bin.rb +222 -45
  111. data/test/test-engines.rb +343 -0
  112. data/test/test-erubis.rb +836 -501
  113. data/test/test.rb +27 -0
  114. data/test/testutil.rb +86 -0
  115. metadata +131 -8
  116. data/README +0 -50
@@ -0,0 +1,104 @@
1
+ ##
2
+ ## $Rev: 21 $
3
+ ## $Release: 2.0.0 $
4
+ ## copyright(c) 2006 kuwata-lab all rights reserved.
5
+ ##
6
+
7
+ require 'erubis/engine'
8
+ require 'erubis/enhancer'
9
+
10
+
11
+ module Erubis
12
+
13
+
14
+ ##
15
+ ## engine for JavaScript
16
+ ##
17
+ class Ejavascript < Engine
18
+
19
+ def self.supported_properties() # :nodoc:
20
+ list = super
21
+ #list << [:indent, '', "indent spaces (ex. ' ')"]
22
+ #list << [:buf, '_buf', "output buffer name"]
23
+ return list
24
+ end
25
+
26
+ def initialize(input, properties={})
27
+ @indent = properties[:indent] || ''
28
+ @buf = properties[:out] || '_buf'
29
+ #@bufclass = properties[:outclass] || 'StringBuffer'
30
+ super
31
+ end
32
+
33
+ def add_preamble(src)
34
+ src << "#{@indent}var #{@buf} = [];"
35
+ end
36
+
37
+ def escape_text(text)
38
+ @@table_ ||= { "\r"=>"\\r", "\n"=>"\\n\\\n", "\t"=>"\\t", '"'=>'\\"', "\\"=>"\\\\" }
39
+ return text.gsub!(/[\r\n\t"\\]/) { |m| @@table_[m] } || text
40
+ end
41
+
42
+ #--
43
+ #def escaped_expr(code)
44
+ # @escape ||= 'escape'
45
+ # return "#{@escape}(#{code.strip})"
46
+ #end
47
+ #++
48
+
49
+ def add_indent(src, indent)
50
+ src << (src.empty? || src[-1] == ?\n ? indent : ' ')
51
+ end
52
+
53
+ def add_text(src, text)
54
+ return if text.empty?
55
+ add_indent(src, @indent)
56
+ src << @buf << '.push("'
57
+ s = escape_text(text)
58
+ if s[-1] == ?\n
59
+ s[-2, 2] = ''
60
+ src << s << "\");\n"
61
+ else
62
+ src << s << "\");"
63
+ end
64
+ end
65
+
66
+ def add_stmt(src, code)
67
+ src << code
68
+ end
69
+
70
+ def add_expr_literal(src, code)
71
+ add_indent(src, @indent)
72
+ src << @buf << '.push(' << code.strip << ');'
73
+ end
74
+
75
+ def add_expr_escaped(src, code)
76
+ add_indent(src, @indent)
77
+ src << @buf << '.push(' << escaped_expr(code) << ');'
78
+ end
79
+
80
+ def add_expr_debug(src, code)
81
+ add_indent(src, @indent)
82
+ code.strip!
83
+ src << "alert(\"*** debug: #{code}=\"+(#{code}));"
84
+ end
85
+
86
+ def add_postamble(src)
87
+ src << "\n" if src[-1] == ?;
88
+ src << @indent << 'document.write(' << @buf << ".join(\"\"));\n"
89
+ end
90
+
91
+ end
92
+
93
+
94
+ class EscapedEjavascript < Ejavascript
95
+ include EscapeEnhancer
96
+ end
97
+
98
+
99
+ #class XmlEjavascript < Ejavascript
100
+ # include EscapeEnhancer
101
+ #end
102
+
103
+
104
+ end
@@ -0,0 +1,102 @@
1
+ ##
2
+ ## $Rev: 19 $
3
+ ## $Release: 2.0.0 $
4
+ ## copyright(c) 2006 kuwata-lab all rights reserved.
5
+ ##
6
+
7
+ require 'erubis/enhancer'
8
+ require 'erubis/engine/eruby'
9
+
10
+
11
+ module Erubis
12
+
13
+
14
+ #--
15
+ ## moved to engine/ruby.rb
16
+ #class EscapedEruby < Eruby
17
+ # include EscapeEnhancer
18
+ #end
19
+ #++
20
+
21
+
22
+ #--
23
+ ### (obsolete)
24
+ #class FastEruby < Eruby
25
+ # include FastEnhancer
26
+ #end
27
+ #++
28
+
29
+
30
+ class StdoutEruby < Eruby
31
+ include StdoutEnhancer
32
+ end
33
+
34
+
35
+ class PrintOutEruby < Eruby
36
+ include PrintOutEnhancer
37
+ end
38
+
39
+
40
+ class PrintEnabledEruby < Eruby
41
+ include PrintEnabledEnhancer
42
+ end
43
+
44
+
45
+ class ArrayEruby < Eruby
46
+ include ArrayEnhancer
47
+ end
48
+
49
+
50
+ class ArrayBufferEruby < Eruby
51
+ include ArrayBufferEnhancer
52
+ end
53
+
54
+
55
+ class StringBufferEruby < Eruby
56
+ include StringBufferEnhancer
57
+ end
58
+
59
+
60
+ class StringIOEruby < Eruby
61
+ include StringIOEnhancer
62
+ end
63
+
64
+
65
+ class NoTextEruby < Eruby
66
+ include NoTextEnhancer
67
+ end
68
+
69
+
70
+ class SimplifiedEruby < Eruby
71
+ include SimplifyEnhancer
72
+ end
73
+
74
+
75
+ class StdoutSimplifiedEruby < Eruby
76
+ include StdoutEnhancer
77
+ include SimplifyEnhancer
78
+ end
79
+
80
+
81
+ class PrintOutSimplifiedEruby < Eruby
82
+ include PrintOutEnhancer
83
+ include SimplifyEnhancer
84
+ end
85
+
86
+
87
+ class BiPatternEruby < Eruby
88
+ include BiPatternEnhancer
89
+ end
90
+
91
+
92
+ class PercentLineEruby < Eruby
93
+ include PercentLineEnhancer
94
+ end
95
+
96
+
97
+ class HeaderFooterEruby < Eruby
98
+ include HeaderFooterEnhancer
99
+ end
100
+
101
+
102
+ end
@@ -0,0 +1,83 @@
1
+ ##
2
+ ## $Rev: 19 $
3
+ ## $Release: 2.0.0 $
4
+ ## copyright(c) 2006 kuwata-lab all rights reserved.
5
+ ##
6
+
7
+ require 'erubis/engine'
8
+ require 'erubis/enhancer'
9
+
10
+
11
+ module Erubis
12
+
13
+
14
+ ##
15
+ ## engine for Perl
16
+ ##
17
+ class Eperl < Engine
18
+
19
+ def self.supported_properties() # :nodoc:
20
+ list = super
21
+ list << [:func, 'print', "function name"]
22
+ return list
23
+ end
24
+
25
+ def initialize(input, properties={})
26
+ @func = properties[:func] || 'print'
27
+ super
28
+ end
29
+
30
+ def add_preamble(src)
31
+ end
32
+
33
+ def escape_text(text)
34
+ return text.gsub!(/['\\]/, '\\\\\&') || text
35
+ end
36
+
37
+ def add_text(src, text)
38
+ src << @func << "('" << escape_text(text) << "'); " unless text.empty?
39
+ end
40
+
41
+ #--
42
+ #def escaped_expr(code)
43
+ # @escape ||= 'escape'
44
+ # return "escape(#{code.strip})"
45
+ #end
46
+ #++
47
+
48
+ def add_expr_literal(src, code)
49
+ src << @func << "(" << code.strip << "); "
50
+ end
51
+
52
+ def add_expr_escaped(src, code)
53
+ src << @func << "(" << escaped_expr(code) << "); "
54
+ end
55
+
56
+ def add_expr_debug(src, code)
57
+ code.strip!
58
+ s = code.gsub(/\'/, "\\'")
59
+ src << @func << "('*** debug: #{code}=', #{code}, \"\\n\");"
60
+ end
61
+
62
+ def add_stmt(src, code)
63
+ src << code
64
+ end
65
+
66
+ def add_postamble(src)
67
+ src << "\n" unless src[-1] == ?\n
68
+ end
69
+
70
+ end
71
+
72
+
73
+ class EscapedEperl < Eperl
74
+ include EscapeEnhancer
75
+ end
76
+
77
+
78
+ #class XmlEperl < Eperl
79
+ # include EscapeEnhancer
80
+ #end
81
+
82
+
83
+ end
@@ -0,0 +1,84 @@
1
+ ##
2
+ ## $Rev: 19 $
3
+ ## $Release: 2.0.0 $
4
+ ## copyright(c) 2006 kuwata-lab all rights reserved.
5
+ ##
6
+
7
+ require 'erubis/engine'
8
+ require 'erubis/enhancer'
9
+
10
+
11
+ module Erubis
12
+
13
+
14
+ ##
15
+ ## engine for PHP
16
+ ##
17
+ class Ephp < Engine
18
+
19
+ def self.supported_properties() # :nodoc:
20
+ return super
21
+ end
22
+
23
+ #--
24
+ #def add_preamble(src)
25
+ #end
26
+ #++
27
+
28
+ def escape_text(text)
29
+ return text.gsub!(/<\?xml\b/, '<<?php ?>?xml') || text
30
+ end
31
+
32
+ def add_text(src, text)
33
+ src << escape_text(text)
34
+ end
35
+
36
+ def escaped_expr(code)
37
+ @escape ||= 'htmlspecialchars'
38
+ return "#{@escape}(#{code.strip})"
39
+ end
40
+
41
+ def add_expr_literal(src, code)
42
+ src << "<?php echo #{code.strip}; ?>"
43
+ end
44
+
45
+ def add_expr_escaped(src, code)
46
+ src << "<?php echo #{escaped_expr(code)}; ?>"
47
+ end
48
+
49
+ def add_expr_debug(src, code)
50
+ code.strip!
51
+ s = code.gsub(/\'/, "\\'")
52
+ src << "<?php error_log('*** debug: #{s}='.(#{code}), 0); ?>"
53
+ end
54
+
55
+ def add_stmt(src, code)
56
+ src << "<?php"
57
+ src << " " if code[0] != ?\ #
58
+ if code[-1] == ?\n
59
+ code.chomp!
60
+ src << code << "?>\n"
61
+ else
62
+ src << code << "?>"
63
+ end
64
+ end
65
+
66
+ #--
67
+ #def add_postamble(src)
68
+ #end
69
+ #++
70
+
71
+ end
72
+
73
+
74
+ class EscapedEphp < Ephp
75
+ include EscapeEnhancer
76
+ end
77
+
78
+
79
+ #class XmlEphp < Ephp
80
+ # include EscapeEnhancer
81
+ #end
82
+
83
+
84
+ end
@@ -0,0 +1,91 @@
1
+ ##
2
+ ## $Rev: 21 $
3
+ ## $Release: 2.0.0 $
4
+ ## copyright(c) 2006 kuwata-lab all rights reserved.
5
+ ##
6
+
7
+ require 'erubis/engine'
8
+ require 'erubis/enhancer'
9
+
10
+
11
+ module Erubis
12
+
13
+
14
+ ##
15
+ ## engine for Ruby
16
+ ##
17
+ class Eruby < Engine
18
+ #include StringBufferEnhancer
19
+ include ArrayBufferEnhancer
20
+
21
+ def self.supported_properties() # :nodoc:
22
+ return super
23
+ end
24
+
25
+ def escape_text(text)
26
+ text.gsub(/['\\]/, '\\\\\&') # "'" => "\\'", '\\' => '\\\\'
27
+ end
28
+
29
+ def escaped_expr(code)
30
+ @escape ||= "Erubis::XmlHelper.escape_xml"
31
+ return "#{@escape}(#{code})"
32
+ end
33
+
34
+ #--
35
+ #def add_preamble(src)
36
+ # src << "_buf = [];"
37
+ #end
38
+ #++
39
+
40
+ def add_text(src, text)
41
+ src << " _buf << '" << escape_text(text) << "';" unless text.empty?
42
+ end
43
+
44
+ def add_stmt(src, code)
45
+ #src << code << ';'
46
+ src << code
47
+ src << ';' unless code[-1] == ?\n
48
+ end
49
+
50
+ def add_expr_literal(src, code)
51
+ src << ' _buf << (' << code << ').to_s;'
52
+ end
53
+
54
+ def add_expr_escaped(src, code)
55
+ src << ' _buf << ' << escaped_expr(code) << ';'
56
+ end
57
+
58
+ def add_expr_debug(src, code)
59
+ code.strip!
60
+ s = (code.dump =~ /\A"(.*)"\z/) && $1
61
+ src << ' $stderr.puts("*** debug: ' << s << '=#{(' << code << ').inspect}");'
62
+ end
63
+
64
+ #--
65
+ #def add_postamble(src)
66
+ # src << "\n_buf.join\n"
67
+ #end
68
+ #++
69
+
70
+ end
71
+
72
+
73
+ ##
74
+ ## swtich '<%= %>' to escaped and '<%== %>' to not escaped
75
+ ##
76
+ class EscapedEruby < Eruby
77
+ include EscapeEnhancer
78
+ end
79
+
80
+
81
+ ##
82
+ ## sanitize expression (<%= ... %>) by default
83
+ ##
84
+ ## this is equivalent to EscapedEruby and is prepared only for compatibility.
85
+ ##
86
+ class XmlEruby < Eruby
87
+ include EscapeEnhancer
88
+ end
89
+
90
+
91
+ end