erubis 1.1.0 → 2.0.0

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