erubis 2.0.1 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (145) hide show
  1. data/ChangeLog +150 -2
  2. data/LGPL +504 -0
  3. data/README.txt +14 -8
  4. data/benchmark/erubybench.rb +1 -1
  5. data/benchmark/erubybench.rhtml +3 -3
  6. data/bin/erubis +1 -1
  7. data/bin/notext +154 -0
  8. data/contrib/erubis +1036 -374
  9. data/contrib/inline-require +5 -3
  10. data/doc-api/classes/Erubis.html +43 -1
  11. data/doc-api/classes/Erubis/ArrayBufferEnhancer.html +14 -14
  12. data/doc-api/classes/Erubis/ArrayEnhancer.html +14 -14
  13. data/doc-api/classes/Erubis/Basic.html +112 -0
  14. data/doc-api/classes/Erubis/Basic/Converter.html +318 -0
  15. data/doc-api/classes/Erubis/Basic/Engine.html +130 -0
  16. data/doc-api/classes/Erubis/BiPatternEnhancer.html +14 -14
  17. data/doc-api/classes/Erubis/CGenerator.html +386 -0
  18. data/doc-api/classes/Erubis/Context.html +31 -32
  19. data/doc-api/classes/Erubis/Converter.html +231 -0
  20. data/doc-api/classes/Erubis/Ec.html +9 -283
  21. data/doc-api/classes/Erubis/Ejava.html +9 -274
  22. data/doc-api/classes/Erubis/Ejavascript.html +9 -298
  23. data/doc-api/classes/Erubis/Engine.html +68 -508
  24. data/doc-api/classes/Erubis/Eperl.html +9 -259
  25. data/doc-api/classes/Erubis/Ephp.html +9 -239
  26. data/doc-api/classes/Erubis/ErubisError.html +2 -2
  27. data/doc-api/classes/Erubis/Eruby.html +4 -187
  28. data/doc-api/classes/Erubis/EscapeEnhancer.html +9 -11
  29. data/doc-api/classes/Erubis/Escheme.html +9 -272
  30. data/doc-api/classes/Erubis/Evaluator.html +212 -0
  31. data/doc-api/classes/Erubis/Generator.html +410 -0
  32. data/doc-api/classes/Erubis/HeaderFooterEnhancer.html +16 -16
  33. data/doc-api/classes/Erubis/Helper.html +112 -0
  34. data/doc-api/classes/Erubis/Helper/CachedRailsTemplate.html +198 -0
  35. data/doc-api/classes/Erubis/Helper/RailsTemplate.html +366 -0
  36. data/doc-api/classes/Erubis/JavaGenerator.html +359 -0
  37. data/doc-api/classes/Erubis/JavascriptGenerator.html +381 -0
  38. data/doc-api/classes/Erubis/Main.html +27 -25
  39. data/doc-api/classes/Erubis/NoCodeEnhancer.html +249 -0
  40. data/doc-api/classes/Erubis/NoCodeEruby.html +120 -0
  41. data/doc-api/classes/Erubis/NoTextEnhancer.html +8 -8
  42. data/doc-api/classes/Erubis/NotSupportedError.html +119 -0
  43. data/doc-api/classes/Erubis/OptimizedEruby.html +22 -304
  44. data/doc-api/classes/Erubis/OptimizedGenerator.html +439 -0
  45. data/doc-api/classes/Erubis/OptimizedXmlEruby.html +7 -7
  46. data/doc-api/classes/Erubis/PI.html +124 -0
  47. data/doc-api/classes/Erubis/PI/Converter.html +318 -0
  48. data/doc-api/classes/Erubis/PI/Ec.html +166 -0
  49. data/doc-api/classes/Erubis/PI/Ejava.html +166 -0
  50. data/doc-api/classes/Erubis/PI/Ejavascript.html +166 -0
  51. data/doc-api/classes/Erubis/PI/Engine.html +122 -0
  52. data/doc-api/classes/Erubis/PI/Eperl.html +166 -0
  53. data/doc-api/classes/Erubis/PI/Ephp.html +166 -0
  54. data/doc-api/classes/Erubis/PI/Eruby.html +155 -0
  55. data/doc-api/classes/Erubis/PI/Escheme.html +166 -0
  56. data/doc-api/classes/Erubis/PI/TinyEruby.html +305 -0
  57. data/doc-api/classes/Erubis/PercentLineEnhancer.html +7 -7
  58. data/doc-api/classes/Erubis/PerlGenerator.html +344 -0
  59. data/doc-api/classes/Erubis/PhpGenerator.html +350 -0
  60. data/doc-api/classes/Erubis/PrintEnabledEnhancer.html +24 -24
  61. data/doc-api/classes/Erubis/PrintOutEnhancer.html +35 -35
  62. data/doc-api/classes/Erubis/RubyEvaluator.html +190 -0
  63. data/doc-api/classes/Erubis/RubyGenerator.html +327 -0
  64. data/doc-api/classes/Erubis/SchemeGenerator.html +382 -0
  65. data/doc-api/classes/Erubis/SimplifyEnhancer.html +17 -13
  66. data/doc-api/classes/Erubis/StdoutEnhancer.html +14 -14
  67. data/doc-api/classes/Erubis/StringBufferEnhancer.html +14 -14
  68. data/doc-api/classes/Erubis/TinyEruby.html +45 -40
  69. data/doc-api/classes/Erubis/XmlHelper.html +14 -14
  70. data/doc-api/created.rid +1 -1
  71. data/doc-api/files/__/README_txt.html +27 -9
  72. data/doc-api/files/erubis/context_rb.html +107 -0
  73. data/doc-api/files/erubis/converter_rb.html +114 -0
  74. data/doc-api/files/erubis/engine/ec_rb.html +2 -2
  75. data/doc-api/files/erubis/engine/ejava_rb.html +2 -2
  76. data/doc-api/files/erubis/engine/ejavascript_rb.html +2 -2
  77. data/doc-api/files/erubis/engine/enhanced_rb.html +2 -2
  78. data/doc-api/files/erubis/engine/eperl_rb.html +2 -2
  79. data/doc-api/files/erubis/engine/ephp_rb.html +2 -2
  80. data/doc-api/files/erubis/engine/eruby_rb.html +3 -2
  81. data/doc-api/files/erubis/engine/escheme_rb.html +2 -2
  82. data/doc-api/files/erubis/engine/optimized_rb.html +2 -2
  83. data/doc-api/files/erubis/engine_rb.html +6 -3
  84. data/doc-api/files/erubis/enhancer_rb.html +2 -9
  85. data/doc-api/files/erubis/error_rb.html +107 -0
  86. data/doc-api/files/erubis/evaluator_rb.html +115 -0
  87. data/doc-api/files/erubis/generator_rb.html +114 -0
  88. data/doc-api/files/erubis/helper/rails_rb.html +140 -0
  89. data/doc-api/files/erubis/helper_rb.html +1 -1
  90. data/doc-api/files/erubis/local-setting_rb.html +1 -1
  91. data/doc-api/files/erubis/main_rb.html +2 -2
  92. data/doc-api/files/erubis/tiny_rb.html +2 -2
  93. data/doc-api/files/erubis_rb.html +2 -2
  94. data/doc-api/fr_class_index.html +32 -0
  95. data/doc-api/fr_file_index.html +6 -0
  96. data/doc-api/fr_method_index.html +178 -136
  97. data/doc/users-guide.html +538 -199
  98. data/examples/{Makefile → basic/Makefile} +11 -11
  99. data/examples/basic/example.ec +42 -0
  100. data/examples/{example.ejava → basic/example.ejava} +5 -1
  101. data/examples/{example.ejavascript → basic/example.ejs} +0 -0
  102. data/examples/{example.eperl → basic/example.eperl} +2 -2
  103. data/examples/{example.ephp → basic/example.ephp} +0 -0
  104. data/examples/{example.eruby → basic/example.eruby} +0 -0
  105. data/examples/{example.escheme → basic/example.escheme} +0 -0
  106. data/examples/pi/Makefile +54 -0
  107. data/examples/pi/example.ec +42 -0
  108. data/examples/pi/example.ejava +45 -0
  109. data/examples/pi/example.ejs +16 -0
  110. data/examples/pi/example.eperl +16 -0
  111. data/examples/pi/example.ephp +17 -0
  112. data/examples/pi/example.eruby +15 -0
  113. data/examples/pi/example.escheme +26 -0
  114. data/lib/erubis.rb +15 -8
  115. data/lib/erubis/context.rb +54 -0
  116. data/lib/erubis/converter.rb +307 -0
  117. data/lib/erubis/engine.rb +57 -227
  118. data/lib/erubis/engine/ec.rb +31 -20
  119. data/lib/erubis/engine/ejava.rb +33 -21
  120. data/lib/erubis/engine/ejavascript.rb +30 -18
  121. data/lib/erubis/engine/enhanced.rb +7 -2
  122. data/lib/erubis/engine/eperl.rb +33 -19
  123. data/lib/erubis/engine/ephp.rb +32 -14
  124. data/lib/erubis/engine/eruby.rb +34 -7
  125. data/lib/erubis/engine/escheme.rb +34 -15
  126. data/lib/erubis/engine/optimized.rb +25 -11
  127. data/lib/erubis/enhancer.rb +53 -19
  128. data/lib/erubis/error.rb +24 -0
  129. data/lib/erubis/evaluator.rb +71 -0
  130. data/lib/erubis/generator.rb +83 -0
  131. data/lib/erubis/helper.rb +1 -1
  132. data/lib/erubis/helper/rails.rb +159 -0
  133. data/lib/erubis/local-setting.rb +1 -1
  134. data/lib/erubis/main.rb +87 -46
  135. data/lib/erubis/tiny.rb +81 -7
  136. data/test/assert-text-equal.rb +1 -1
  137. data/test/test-engines.rb +8 -9
  138. data/test/test-erubis.rb +196 -18
  139. data/test/{test-bin.rb → test-main.rb} +123 -21
  140. data/test/test-notext.rb +27 -0
  141. data/test/test.rb +5 -3
  142. data/test/testutil.rb +25 -36
  143. metadata +75 -13
  144. data/COPYING +0 -340
  145. data/examples/example.ec +0 -24
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Rev: 24 $
3
- ## $Release: 2.0.1 $
2
+ ## $Rev: 33 $
3
+ ## $Release: 2.1.0 $
4
4
  ## copyright(c) 2006 kuwata-lab all rights reserved.
5
5
  ##
6
6
 
@@ -11,22 +11,21 @@ require 'erubis/enhancer'
11
11
  module Erubis
12
12
 
13
13
 
14
- ##
15
- ## engine for C
16
- ##
17
- class Ec < Engine
14
+ module CGenerator
15
+ include Generator
18
16
 
19
17
  def self.supported_properties() # :nodoc:
20
- list = super
21
- list << [:indent, '', "indent spaces (ex. ' ')"]
22
- list << [:out, 'stdout', "output file pointer name"]
23
- return list
18
+ return [
19
+ [:indent, '', "indent spaces (ex. ' ')"],
20
+ [:out, 'stdout', "output file pointer name"],
21
+ ]
24
22
  end
25
23
 
26
- def initialize(input, properties={})
24
+ def init_generator(properties={})
25
+ super
26
+ @escapefunc ||= "escape"
27
27
  @indent = properties[:indent] || ''
28
28
  @out = properties[:out] || 'stdout'
29
- super
30
29
  end
31
30
 
32
31
  def add_preamble(src)
@@ -40,13 +39,7 @@ module Erubis
40
39
  end
41
40
 
42
41
  def escaped_expr(code)
43
- @escape ||= "escape"
44
- code.strip!
45
- if code =~ /\A(\".*?\")\s*,\s*(.*)/
46
- return "#{$1}, #{@escape}(#{$2})"
47
- else
48
- return "#{@escape}(#{code})"
49
- end
42
+ return "#{@escapefunc}(#{code.strip}, #{@out})"
50
43
  end
51
44
 
52
45
  def add_text(src, text)
@@ -74,7 +67,7 @@ module Erubis
74
67
 
75
68
  def add_expr_escaped(src, code)
76
69
  src << @indent if src.empty? || src[-1] == ?\n
77
- src << " fprintf(#{@out}, " << escaped_expr(code) << ');'
70
+ src << ' ' << escaped_expr(code) << ';'
78
71
  end
79
72
 
80
73
  def add_expr_debug(src, code)
@@ -94,6 +87,14 @@ module Erubis
94
87
  end
95
88
 
96
89
 
90
+ ##
91
+ ## engine for C
92
+ ##
93
+ class Ec < Basic::Engine
94
+ include CGenerator
95
+ end
96
+
97
+
97
98
  class EscapedEc < Ec
98
99
  include EscapeEnhancer
99
100
  end
@@ -103,5 +104,15 @@ module Erubis
103
104
  # include EscapeEnhancer
104
105
  #end
105
106
 
107
+ class PI::Ec < PI::Engine
108
+ include CGenerator
109
+
110
+ def init_converter(properties={})
111
+ @pi = 'c'
112
+ super(properties)
113
+ end
114
+
115
+ end
116
+
106
117
 
107
118
  end
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Rev: 24 $
3
- ## $Release: 2.0.1 $
2
+ ## $Rev: 31 $
3
+ ## $Release: 2.1.0 $
4
4
  ## copyright(c) 2006 kuwata-lab all rights reserved.
5
5
  ##
6
6
 
@@ -11,24 +11,23 @@ require 'erubis/enhancer'
11
11
  module Erubis
12
12
 
13
13
 
14
- ##
15
- ## engine for Java
16
- ##
17
- class Ejava < Engine
14
+ module JavaGenerator
15
+ include Generator
18
16
 
19
17
  def self.supported_properties() # :nodoc:
20
- list = super
21
- list << [:indent, '', "indent spaces (ex. ' ')"]
22
- list << [:buf, '_buf', "output buffer name"]
23
- list << [:bufclass, 'StringBuffer', "output buffer class (ex. 'StringBuilder')"]
24
- return list
18
+ return [
19
+ [:indent, '', "indent spaces (ex. ' ')"],
20
+ [:buf, '_buf', "output buffer name"],
21
+ [:bufclass, 'StringBuffer', "output buffer class (ex. 'StringBuilder')"],
22
+ ]
25
23
  end
26
24
 
27
- def initialize(input, properties={})
25
+ def init_generator(properties={})
26
+ super
27
+ @escapefunc ||= 'escape'
28
28
  @indent = properties[:indent] || ''
29
29
  @buf = properties[:buf] || '_buf'
30
30
  @bufclass = properties[:bufclass] || 'StringBuffer'
31
- super
32
31
  end
33
32
 
34
33
  def add_preamble(src)
@@ -40,11 +39,6 @@ module Erubis
40
39
  return text.gsub!(/[\r\n\t"\\]/) { |m| @@table_[m] } || text
41
40
  end
42
41
 
43
- def escaped_expr(code)
44
- @escape ||= 'escape'
45
- return "#{@escape}(#{code.strip})"
46
- end
47
-
48
42
  def add_text(src, text)
49
43
  return if text.empty?
50
44
  src << (src.empty? || src[-1] == ?\n ? @indent : ' ')
@@ -64,12 +58,12 @@ module Erubis
64
58
 
65
59
  def add_expr_literal(src, code)
66
60
  src << @indent if src.empty? || src[-1] == ?\n
67
- src << ' ' << @buf << '.append(' << code.strip << ');'
61
+ code.strip!
62
+ src << " #{@buf}.append(#{code});"
68
63
  end
69
64
 
70
65
  def add_expr_escaped(src, code)
71
- src << @indent if src.empty? || src[-1] == ?\n
72
- src << ' ' << @buf << '.append(' << escaped_expr(code) << ');'
66
+ add_expr_literal(src, escaped_expr(code))
73
67
  end
74
68
 
75
69
  def add_expr_debug(src, code)
@@ -81,11 +75,20 @@ module Erubis
81
75
  def add_postamble(src)
82
76
  src << "\n" if src[-1] == ?;
83
77
  src << @indent << "return " << @buf << ".toString();\n"
78
+ #src << @indent << "System.out.print(" << @buf << ".toString());\n"
84
79
  end
85
80
 
86
81
  end
87
82
 
88
83
 
84
+ ##
85
+ ## engine for Java
86
+ ##
87
+ class Ejava < Basic::Engine
88
+ include JavaGenerator
89
+ end
90
+
91
+
89
92
  class EscapedEjava < Ejava
90
93
  include EscapeEnhancer
91
94
  end
@@ -95,5 +98,14 @@ module Erubis
95
98
  # include EscapeEnhancer
96
99
  #end
97
100
 
101
+ class PI::Ejava < PI::Engine
102
+ include JavaGenerator
103
+
104
+ def init_converter(properties={})
105
+ @pi = 'java'
106
+ super(properties)
107
+ end
108
+
109
+ end
98
110
 
99
111
  end
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Rev: 24 $
3
- ## $Release: 2.0.1 $
2
+ ## $Rev: 31 $
3
+ ## $Release: 2.1.0 $
4
4
  ## copyright(c) 2006 kuwata-lab all rights reserved.
5
5
  ##
6
6
 
@@ -11,23 +11,21 @@ require 'erubis/enhancer'
11
11
  module Erubis
12
12
 
13
13
 
14
- ##
15
- ## engine for JavaScript
16
- ##
17
- class Ejavascript < Engine
14
+ module JavascriptGenerator
15
+ include Generator
18
16
 
19
17
  def self.supported_properties() # :nodoc:
20
- list = super
18
+ list = []
21
19
  #list << [:indent, '', "indent spaces (ex. ' ')"]
22
20
  #list << [:buf, '_buf', "output buffer name"]
23
21
  return list
24
22
  end
25
23
 
26
- def initialize(input, properties={})
24
+ def init_generator(properties={})
25
+ super
26
+ @escapefunc ||= 'escape'
27
27
  @indent = properties[:indent] || ''
28
28
  @buf = properties[:out] || '_buf'
29
- #@bufclass = properties[:outclass] || 'StringBuffer'
30
- super
31
29
  end
32
30
 
33
31
  def add_preamble(src)
@@ -39,11 +37,6 @@ module Erubis
39
37
  return text.gsub!(/[\r\n\t"\\]/) { |m| @@table_[m] } || text
40
38
  end
41
39
 
42
- def escaped_expr(code)
43
- @escape ||= 'escape'
44
- return "#{@escape}(#{code.strip})"
45
- end
46
-
47
40
  def add_indent(src, indent)
48
41
  src << (src.empty? || src[-1] == ?\n ? indent : ' ')
49
42
  end
@@ -67,12 +60,12 @@ module Erubis
67
60
 
68
61
  def add_expr_literal(src, code)
69
62
  add_indent(src, @indent)
70
- src << @buf << '.push(' << code.strip << ');'
63
+ code.strip!
64
+ src << "#{@buf}.push(#{code});"
71
65
  end
72
66
 
73
67
  def add_expr_escaped(src, code)
74
- add_indent(src, @indent)
75
- src << @buf << '.push(' << escaped_expr(code) << ');'
68
+ add_expr_literal(src, escaped_expr(code))
76
69
  end
77
70
 
78
71
  def add_expr_debug(src, code)
@@ -89,6 +82,14 @@ module Erubis
89
82
  end
90
83
 
91
84
 
85
+ ##
86
+ ## engine for JavaScript
87
+ ##
88
+ class Ejavascript < Basic::Engine
89
+ include JavascriptGenerator
90
+ end
91
+
92
+
92
93
  class EscapedEjavascript < Ejavascript
93
94
  include EscapeEnhancer
94
95
  end
@@ -99,4 +100,15 @@ module Erubis
99
100
  #end
100
101
 
101
102
 
103
+ class PI::Ejavascript < PI::Engine
104
+ include JavascriptGenerator
105
+
106
+ def init_converter(properties={})
107
+ @pi = 'js'
108
+ super(properties)
109
+ end
110
+
111
+ end
112
+
113
+
102
114
  end
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Rev: 19 $
3
- ## $Release: 2.0.1 $
2
+ ## $Rev: 27 $
3
+ ## $Release: 2.1.0 $
4
4
  ## copyright(c) 2006 kuwata-lab all rights reserved.
5
5
  ##
6
6
 
@@ -67,6 +67,11 @@ module Erubis
67
67
  end
68
68
 
69
69
 
70
+ class NoCodeEruby < Eruby
71
+ include NoCodeEnhancer
72
+ end
73
+
74
+
70
75
  class SimplifiedEruby < Eruby
71
76
  include SimplifyEnhancer
72
77
  end
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Rev: 24 $
3
- ## $Release: 2.0.1 $
2
+ ## $Rev: 40 $
3
+ ## $Release: 2.1.0 $
4
4
  ## copyright(c) 2006 kuwata-lab all rights reserved.
5
5
  ##
6
6
 
@@ -11,24 +11,23 @@ require 'erubis/enhancer'
11
11
  module Erubis
12
12
 
13
13
 
14
- ##
15
- ## engine for Perl
16
- ##
17
- class Eperl < Engine
14
+ module PerlGenerator
15
+ include Generator
18
16
 
19
17
  def self.supported_properties() # :nodoc:
20
- list = super
21
- list << [:func, 'print', "function name"]
22
- return list
18
+ return [
19
+ [:func, 'print', "function name"],
20
+ ]
23
21
  end
24
22
 
25
- def initialize(input, properties={})
26
- @func = properties[:func] || 'print'
23
+ def init_generator(properties={})
27
24
  super
25
+ @escapefunc ||= 'encode_entities'
26
+ @func = properties[:func] || 'print'
28
27
  end
29
28
 
30
29
  def add_preamble(src)
31
- # empty
30
+ src << "use HTML::Entities; ";
32
31
  end
33
32
 
34
33
  def escape_text(text)
@@ -39,17 +38,13 @@ module Erubis
39
38
  src << @func << "('" << escape_text(text) << "'); " unless text.empty?
40
39
  end
41
40
 
42
- def escaped_expr(code)
43
- @escape ||= 'escape'
44
- return "escape(#{code.strip})"
45
- end
46
-
47
41
  def add_expr_literal(src, code)
48
- src << @func << "(" << code.strip << "); "
42
+ code.strip!
43
+ src << @func << "(" << code << "); "
49
44
  end
50
45
 
51
46
  def add_expr_escaped(src, code)
52
- src << @func << "(" << escaped_expr(code) << "); "
47
+ add_expr_literal(src, escaped_expr(code))
53
48
  end
54
49
 
55
50
  def add_expr_debug(src, code)
@@ -69,6 +64,14 @@ module Erubis
69
64
  end
70
65
 
71
66
 
67
+ ##
68
+ ## engine for Perl
69
+ ##
70
+ class Eperl < Basic::Engine
71
+ include PerlGenerator
72
+ end
73
+
74
+
72
75
  class EscapedEperl < Eperl
73
76
  include EscapeEnhancer
74
77
  end
@@ -79,4 +82,15 @@ module Erubis
79
82
  #end
80
83
 
81
84
 
85
+ class PI::Eperl < PI::Engine
86
+ include PerlGenerator
87
+
88
+ def init_converter(properties={})
89
+ @pi = 'perl'
90
+ super(properties)
91
+ end
92
+
93
+ end
94
+
95
+
82
96
  end
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Rev: 24 $
3
- ## $Release: 2.0.1 $
2
+ ## $Rev: 31 $
3
+ ## $Release: 2.1.0 $
4
4
  ## copyright(c) 2006 kuwata-lab all rights reserved.
5
5
  ##
6
6
 
@@ -11,13 +11,16 @@ require 'erubis/enhancer'
11
11
  module Erubis
12
12
 
13
13
 
14
- ##
15
- ## engine for PHP
16
- ##
17
- class Ephp < Engine
14
+ module PhpGenerator
15
+ include Generator
18
16
 
19
17
  def self.supported_properties() # :nodoc:
20
- return super
18
+ return []
19
+ end
20
+
21
+ def init_generator(properties={})
22
+ super
23
+ @escapefunc ||= 'htmlspecialchars'
21
24
  end
22
25
 
23
26
  def add_preamble(src)
@@ -32,17 +35,13 @@ module Erubis
32
35
  src << escape_text(text)
33
36
  end
34
37
 
35
- def escaped_expr(code)
36
- @escape ||= 'htmlspecialchars'
37
- return "#{@escape}(#{code.strip})"
38
- end
39
-
40
38
  def add_expr_literal(src, code)
41
- src << "<?php echo #{code.strip}; ?>"
39
+ code.strip!
40
+ src << "<?php echo #{code}; ?>"
42
41
  end
43
42
 
44
43
  def add_expr_escaped(src, code)
45
- src << "<?php echo #{escaped_expr(code)}; ?>"
44
+ add_expr_literal(src, escaped_expr(code))
46
45
  end
47
46
 
48
47
  def add_expr_debug(src, code)
@@ -69,6 +68,14 @@ module Erubis
69
68
  end
70
69
 
71
70
 
71
+ ##
72
+ ## engine for PHP
73
+ ##
74
+ class Ephp < Basic::Engine
75
+ include PhpGenerator
76
+ end
77
+
78
+
72
79
  class EscapedEphp < Ephp
73
80
  include EscapeEnhancer
74
81
  end
@@ -79,4 +86,15 @@ module Erubis
79
86
  #end
80
87
 
81
88
 
89
+ class PI::Ephp < PI::Engine
90
+ include PhpGenerator
91
+
92
+ def init_converter(properties={})
93
+ @pi = 'php'
94
+ super(properties)
95
+ end
96
+
97
+ end
98
+
99
+
82
100
  end