ghazel-erubis 2.6.5.1

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 (298) hide show
  1. data/CHANGES.txt +744 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.txt +102 -0
  4. data/benchmark/Makefile +6 -0
  5. data/benchmark/bench.rb +313 -0
  6. data/benchmark/bench_context.yaml +141 -0
  7. data/benchmark/templates/_footer.html +4 -0
  8. data/benchmark/templates/_header.html +52 -0
  9. data/benchmark/templates/bench_erb.rhtml +29 -0
  10. data/benchmark/templates/bench_erubis.rhtml +29 -0
  11. data/benchmark/templates/bench_eruby.rhtml +29 -0
  12. data/bin/erubis +10 -0
  13. data/contrib/erubis +3330 -0
  14. data/contrib/erubis-run.rb +132 -0
  15. data/contrib/inline-require +179 -0
  16. data/doc/docstyle.css +188 -0
  17. data/doc/users-guide.html +3285 -0
  18. data/doc-api/classes/ActionView/TemplateHandlers/ErubisHandler.html +209 -0
  19. data/doc-api/classes/ActionView.html +105 -0
  20. data/doc-api/classes/ERB.html +101 -0
  21. data/doc-api/classes/Erubis/ArrayBufferEnhancer.html +175 -0
  22. data/doc-api/classes/Erubis/ArrayBufferEruby.html +120 -0
  23. data/doc-api/classes/Erubis/ArrayEnhancer.html +174 -0
  24. data/doc-api/classes/Erubis/ArrayEruby.html +120 -0
  25. data/doc-api/classes/Erubis/Basic/Converter.html +327 -0
  26. data/doc-api/classes/Erubis/Basic/Engine.html +130 -0
  27. data/doc-api/classes/Erubis/Basic.html +112 -0
  28. data/doc-api/classes/Erubis/BiPatternEnhancer.html +215 -0
  29. data/doc-api/classes/Erubis/BiPatternEruby.html +120 -0
  30. data/doc-api/classes/Erubis/CGenerator.html +386 -0
  31. data/doc-api/classes/Erubis/CommandOptionError.html +113 -0
  32. data/doc-api/classes/Erubis/Context.html +344 -0
  33. data/doc-api/classes/Erubis/Converter.html +283 -0
  34. data/doc-api/classes/Erubis/DeleteIndentEnhancer.html +150 -0
  35. data/doc-api/classes/Erubis/DeleteIndentEruby.html +120 -0
  36. data/doc-api/classes/Erubis/Ec.html +126 -0
  37. data/doc-api/classes/Erubis/Ejava.html +126 -0
  38. data/doc-api/classes/Erubis/Ejavascript.html +126 -0
  39. data/doc-api/classes/Erubis/Engine.html +305 -0
  40. data/doc-api/classes/Erubis/Eperl.html +126 -0
  41. data/doc-api/classes/Erubis/Ephp.html +126 -0
  42. data/doc-api/classes/Erubis/ErboutEnhancer.html +175 -0
  43. data/doc-api/classes/Erubis/ErboutEruby.html +120 -0
  44. data/doc-api/classes/Erubis/ErubisError.html +117 -0
  45. data/doc-api/classes/Erubis/Eruby.html +132 -0
  46. data/doc-api/classes/Erubis/EscapeEnhancer.html +165 -0
  47. data/doc-api/classes/Erubis/EscapedEc.html +120 -0
  48. data/doc-api/classes/Erubis/EscapedEjava.html +120 -0
  49. data/doc-api/classes/Erubis/EscapedEjavascript.html +120 -0
  50. data/doc-api/classes/Erubis/EscapedEperl.html +120 -0
  51. data/doc-api/classes/Erubis/EscapedEphp.html +120 -0
  52. data/doc-api/classes/Erubis/EscapedEruby.html +127 -0
  53. data/doc-api/classes/Erubis/EscapedEscheme.html +120 -0
  54. data/doc-api/classes/Erubis/Escheme.html +126 -0
  55. data/doc-api/classes/Erubis/Evaluator.html +212 -0
  56. data/doc-api/classes/Erubis/FastEruby.html +131 -0
  57. data/doc-api/classes/Erubis/Generator.html +416 -0
  58. data/doc-api/classes/Erubis/HeaderFooterEnhancer.html +267 -0
  59. data/doc-api/classes/Erubis/HeaderFooterEruby.html +120 -0
  60. data/doc-api/classes/Erubis/Helpers/RailsFormHelper.html +787 -0
  61. data/doc-api/classes/Erubis/Helpers/RailsHelper/TemplateConverter.html +213 -0
  62. data/doc-api/classes/Erubis/Helpers/RailsHelper.html +349 -0
  63. data/doc-api/classes/Erubis/Helpers.html +116 -0
  64. data/doc-api/classes/Erubis/InterpolationEnhancer.html +306 -0
  65. data/doc-api/classes/Erubis/InterpolationEruby.html +120 -0
  66. data/doc-api/classes/Erubis/JavaGenerator.html +359 -0
  67. data/doc-api/classes/Erubis/JavascriptGenerator.html +386 -0
  68. data/doc-api/classes/Erubis/Main.html +341 -0
  69. data/doc-api/classes/Erubis/NoCodeEnhancer.html +249 -0
  70. data/doc-api/classes/Erubis/NoCodeEruby.html +120 -0
  71. data/doc-api/classes/Erubis/NoTextEnhancer.html +159 -0
  72. data/doc-api/classes/Erubis/NoTextEruby.html +120 -0
  73. data/doc-api/classes/Erubis/NotSupportedError.html +119 -0
  74. data/doc-api/classes/Erubis/OptimizedEruby.html +163 -0
  75. data/doc-api/classes/Erubis/OptimizedGenerator.html +439 -0
  76. data/doc-api/classes/Erubis/OptimizedXmlEruby.html +163 -0
  77. data/doc-api/classes/Erubis/PI/Converter.html +266 -0
  78. data/doc-api/classes/Erubis/PI/Ec.html +166 -0
  79. data/doc-api/classes/Erubis/PI/Ejava.html +166 -0
  80. data/doc-api/classes/Erubis/PI/Ejavascript.html +166 -0
  81. data/doc-api/classes/Erubis/PI/Engine.html +122 -0
  82. data/doc-api/classes/Erubis/PI/Eperl.html +166 -0
  83. data/doc-api/classes/Erubis/PI/Ephp.html +166 -0
  84. data/doc-api/classes/Erubis/PI/Eruby.html +155 -0
  85. data/doc-api/classes/Erubis/PI/Escheme.html +166 -0
  86. data/doc-api/classes/Erubis/PI/TinyEruby.html +293 -0
  87. data/doc-api/classes/Erubis/PI.html +124 -0
  88. data/doc-api/classes/Erubis/PercentLineEnhancer.html +179 -0
  89. data/doc-api/classes/Erubis/PercentLineEruby.html +120 -0
  90. data/doc-api/classes/Erubis/PerlGenerator.html +344 -0
  91. data/doc-api/classes/Erubis/PhpGenerator.html +350 -0
  92. data/doc-api/classes/Erubis/PreprocessingEruby.html +183 -0
  93. data/doc-api/classes/Erubis/PreprocessingHelper.html +212 -0
  94. data/doc-api/classes/Erubis/PrintEnabledEnhancer.html +212 -0
  95. data/doc-api/classes/Erubis/PrintEnabledEruby.html +120 -0
  96. data/doc-api/classes/Erubis/PrintOutEnhancer.html +244 -0
  97. data/doc-api/classes/Erubis/PrintOutEruby.html +120 -0
  98. data/doc-api/classes/Erubis/PrintOutSimplifiedEruby.html +121 -0
  99. data/doc-api/classes/Erubis/RubyEvaluator.html +227 -0
  100. data/doc-api/classes/Erubis/RubyGenerator.html +327 -0
  101. data/doc-api/classes/Erubis/SchemeGenerator.html +382 -0
  102. data/doc-api/classes/Erubis/SimplifiedEruby.html +120 -0
  103. data/doc-api/classes/Erubis/SimplifyEnhancer.html +191 -0
  104. data/doc-api/classes/Erubis/StdoutEnhancer.html +173 -0
  105. data/doc-api/classes/Erubis/StdoutEruby.html +120 -0
  106. data/doc-api/classes/Erubis/StdoutSimplifiedEruby.html +121 -0
  107. data/doc-api/classes/Erubis/StringBufferEnhancer.html +174 -0
  108. data/doc-api/classes/Erubis/StringBufferEruby.html +120 -0
  109. data/doc-api/classes/Erubis/StringIOEruby.html +120 -0
  110. data/doc-api/classes/Erubis/TinyEruby.html +298 -0
  111. data/doc-api/classes/Erubis/XmlEruby.html +130 -0
  112. data/doc-api/classes/Erubis/XmlHelper.html +255 -0
  113. data/doc-api/classes/Erubis.html +353 -0
  114. data/doc-api/created.rid +1 -0
  115. data/doc-api/files/README_txt.html +247 -0
  116. data/doc-api/files/erubis/context_rb.html +107 -0
  117. data/doc-api/files/erubis/converter_rb.html +114 -0
  118. data/doc-api/files/erubis/engine/ec_rb.html +115 -0
  119. data/doc-api/files/erubis/engine/ejava_rb.html +115 -0
  120. data/doc-api/files/erubis/engine/ejavascript_rb.html +115 -0
  121. data/doc-api/files/erubis/engine/enhanced_rb.html +115 -0
  122. data/doc-api/files/erubis/engine/eperl_rb.html +115 -0
  123. data/doc-api/files/erubis/engine/ephp_rb.html +115 -0
  124. data/doc-api/files/erubis/engine/eruby_rb.html +115 -0
  125. data/doc-api/files/erubis/engine/escheme_rb.html +115 -0
  126. data/doc-api/files/erubis/engine/optimized_rb.html +114 -0
  127. data/doc-api/files/erubis/engine_rb.html +117 -0
  128. data/doc-api/files/erubis/enhancer_rb.html +107 -0
  129. data/doc-api/files/erubis/error_rb.html +107 -0
  130. data/doc-api/files/erubis/evaluator_rb.html +115 -0
  131. data/doc-api/files/erubis/generator_rb.html +114 -0
  132. data/doc-api/files/erubis/helper_rb.html +107 -0
  133. data/doc-api/files/erubis/helpers/rails_form_helper_rb.html +107 -0
  134. data/doc-api/files/erubis/helpers/rails_helper_rb.html +116 -0
  135. data/doc-api/files/erubis/local-setting_rb.html +107 -0
  136. data/doc-api/files/erubis/main_rb.html +127 -0
  137. data/doc-api/files/erubis/preprocessing_rb.html +114 -0
  138. data/doc-api/files/erubis/tiny_rb.html +107 -0
  139. data/doc-api/files/erubis_rb.html +118 -0
  140. data/doc-api/fr_class_index.html +122 -0
  141. data/doc-api/fr_file_index.html +51 -0
  142. data/doc-api/fr_method_index.html +251 -0
  143. data/doc-api/index.html +24 -0
  144. data/doc-api/rdoc-style.css +208 -0
  145. data/examples/basic/Makefile +53 -0
  146. data/examples/basic/example.ec +42 -0
  147. data/examples/basic/example.ejava +45 -0
  148. data/examples/basic/example.ejs +16 -0
  149. data/examples/basic/example.eperl +16 -0
  150. data/examples/basic/example.ephp +17 -0
  151. data/examples/basic/example.eruby +15 -0
  152. data/examples/basic/example.escheme +26 -0
  153. data/examples/pi/Makefile +54 -0
  154. data/examples/pi/example.ec +42 -0
  155. data/examples/pi/example.ejava +45 -0
  156. data/examples/pi/example.ejs +16 -0
  157. data/examples/pi/example.eperl +16 -0
  158. data/examples/pi/example.ephp +17 -0
  159. data/examples/pi/example.eruby +15 -0
  160. data/examples/pi/example.escheme +26 -0
  161. data/lib/erubis/context.rb +83 -0
  162. data/lib/erubis/converter.rb +357 -0
  163. data/lib/erubis/engine/ec.rb +117 -0
  164. data/lib/erubis/engine/ejava.rb +110 -0
  165. data/lib/erubis/engine/ejavascript.rb +119 -0
  166. data/lib/erubis/engine/enhanced.rb +121 -0
  167. data/lib/erubis/engine/eperl.rb +95 -0
  168. data/lib/erubis/engine/ephp.rb +99 -0
  169. data/lib/erubis/engine/eruby.rb +124 -0
  170. data/lib/erubis/engine/escheme.rb +114 -0
  171. data/lib/erubis/engine/optimized.rb +127 -0
  172. data/lib/erubis/engine.rb +120 -0
  173. data/lib/erubis/enhancer.rb +680 -0
  174. data/lib/erubis/error.rb +23 -0
  175. data/lib/erubis/evaluator.rb +88 -0
  176. data/lib/erubis/generator.rb +85 -0
  177. data/lib/erubis/helper.rb +47 -0
  178. data/lib/erubis/helpers/rails_form_helper.rb +197 -0
  179. data/lib/erubis/helpers/rails_helper.rb +353 -0
  180. data/lib/erubis/local-setting.rb +9 -0
  181. data/lib/erubis/main.rb +489 -0
  182. data/lib/erubis/preprocessing.rb +58 -0
  183. data/lib/erubis/tiny.rb +144 -0
  184. data/lib/erubis.rb +72 -0
  185. data/setup.rb +1331 -0
  186. data/test/assert-text-equal.rb +44 -0
  187. data/test/data/users-guide/Example.ejava +55 -0
  188. data/test/data/users-guide/array_example.result +9 -0
  189. data/test/data/users-guide/arraybuffer_example.result +9 -0
  190. data/test/data/users-guide/bipattern-example.rhtml +4 -0
  191. data/test/data/users-guide/bipattern_example.result +6 -0
  192. data/test/data/users-guide/context.rb +6 -0
  193. data/test/data/users-guide/context.yaml +8 -0
  194. data/test/data/users-guide/def_method.rb +14 -0
  195. data/test/data/users-guide/def_method.result +3 -0
  196. data/test/data/users-guide/escape_example.result +9 -0
  197. data/test/data/users-guide/example.ec +27 -0
  198. data/test/data/users-guide/example.ejs +20 -0
  199. data/test/data/users-guide/example.eperl +18 -0
  200. data/test/data/users-guide/example.ephp +18 -0
  201. data/test/data/users-guide/example.eruby +6 -0
  202. data/test/data/users-guide/example.escheme +28 -0
  203. data/test/data/users-guide/example1.eruby +6 -0
  204. data/test/data/users-guide/example1.rb +17 -0
  205. data/test/data/users-guide/example1.result +16 -0
  206. data/test/data/users-guide/example10.rb +4 -0
  207. data/test/data/users-guide/example10.result +17 -0
  208. data/test/data/users-guide/example10.xhtml +14 -0
  209. data/test/data/users-guide/example10_x.result +17 -0
  210. data/test/data/users-guide/example11.php +20 -0
  211. data/test/data/users-guide/example11.result +23 -0
  212. data/test/data/users-guide/example11.rhtml +21 -0
  213. data/test/data/users-guide/example11_C.result +10 -0
  214. data/test/data/users-guide/example11_N.result +16 -0
  215. data/test/data/users-guide/example11_U.result +16 -0
  216. data/test/data/users-guide/example11_php.result +15 -0
  217. data/test/data/users-guide/example1_x.result +9 -0
  218. data/test/data/users-guide/example2.eruby +7 -0
  219. data/test/data/users-guide/example2.rb +10 -0
  220. data/test/data/users-guide/example2.result +27 -0
  221. data/test/data/users-guide/example2_trim.result +10 -0
  222. data/test/data/users-guide/example2_x.result +10 -0
  223. data/test/data/users-guide/example3.eruby +6 -0
  224. data/test/data/users-guide/example3.rb +10 -0
  225. data/test/data/users-guide/example31.result +22 -0
  226. data/test/data/users-guide/example32.result +4 -0
  227. data/test/data/users-guide/example3_e.result +8 -0
  228. data/test/data/users-guide/example4.eruby +3 -0
  229. data/test/data/users-guide/example4.rb +11 -0
  230. data/test/data/users-guide/example4.result +10 -0
  231. data/test/data/users-guide/example4_x.result +5 -0
  232. data/test/data/users-guide/example5.eruby +6 -0
  233. data/test/data/users-guide/example5.rb +16 -0
  234. data/test/data/users-guide/example5.result +7 -0
  235. data/test/data/users-guide/example6.rb +12 -0
  236. data/test/data/users-guide/example6.result +7 -0
  237. data/test/data/users-guide/example7.eruby +8 -0
  238. data/test/data/users-guide/example71.result +13 -0
  239. data/test/data/users-guide/example72.result +13 -0
  240. data/test/data/users-guide/example8.eruby +6 -0
  241. data/test/data/users-guide/example8_ruby.result +7 -0
  242. data/test/data/users-guide/example8_yaml.result +7 -0
  243. data/test/data/users-guide/example9.eruby +3 -0
  244. data/test/data/users-guide/example9.rb +8 -0
  245. data/test/data/users-guide/example9.result +9 -0
  246. data/test/data/users-guide/example91.result +5 -0
  247. data/test/data/users-guide/example92.result +4 -0
  248. data/test/data/users-guide/example_c.result +29 -0
  249. data/test/data/users-guide/example_java.result +56 -0
  250. data/test/data/users-guide/example_js.result +22 -0
  251. data/test/data/users-guide/example_perl.result +20 -0
  252. data/test/data/users-guide/example_php.result +19 -0
  253. data/test/data/users-guide/example_scheme.result +30 -0
  254. data/test/data/users-guide/example_scheme_display.result +29 -0
  255. data/test/data/users-guide/fasteruby.rb +11 -0
  256. data/test/data/users-guide/fasteruby.result +38 -0
  257. data/test/data/users-guide/fasteruby.rhtml +15 -0
  258. data/test/data/users-guide/headerfooter-example.eruby +9 -0
  259. data/test/data/users-guide/headerfooter-example2.rb +8 -0
  260. data/test/data/users-guide/headerfooter-example2.rhtml +10 -0
  261. data/test/data/users-guide/headerfooter_example.result +11 -0
  262. data/test/data/users-guide/headerfooter_example2.result +13 -0
  263. data/test/data/users-guide/interpolation_example.result +9 -0
  264. data/test/data/users-guide/main_program1.rb +8 -0
  265. data/test/data/users-guide/main_program1.result +6 -0
  266. data/test/data/users-guide/main_program2.rb +8 -0
  267. data/test/data/users-guide/main_program2.result +6 -0
  268. data/test/data/users-guide/nocode-example.eruby +14 -0
  269. data/test/data/users-guide/nocode-php.result +20 -0
  270. data/test/data/users-guide/nocode_example.result +15 -0
  271. data/test/data/users-guide/normal-eruby-test.eruby +9 -0
  272. data/test/data/users-guide/normal_eruby_test.result +11 -0
  273. data/test/data/users-guide/notext-example.eruby +14 -0
  274. data/test/data/users-guide/notext-example.php +19 -0
  275. data/test/data/users-guide/notext-php.result +20 -0
  276. data/test/data/users-guide/notext_example.result +16 -0
  277. data/test/data/users-guide/percentline-example.rhtml +4 -0
  278. data/test/data/users-guide/percentline_example.result +7 -0
  279. data/test/data/users-guide/printenable_example.result +4 -0
  280. data/test/data/users-guide/printenabled-example.eruby +3 -0
  281. data/test/data/users-guide/printenabled-example.rb +8 -0
  282. data/test/data/users-guide/printstatement_example.result +8 -0
  283. data/test/data/users-guide/simplify_example.result +9 -0
  284. data/test/data/users-guide/stderr.log +3 -0
  285. data/test/data/users-guide/stdout_exmple.result +9 -0
  286. data/test/data/users-guide/stringbuffer_example.result +9 -0
  287. data/test/data/users-guide/tail_260.result +4 -0
  288. data/test/data/users-guide/tailnewline.rhtml +3 -0
  289. data/test/data/users-guide/template1.rhtml +4 -0
  290. data/test/data/users-guide/template2.rhtml +4 -0
  291. data/test/test-engines.rb +369 -0
  292. data/test/test-enhancers.rb +570 -0
  293. data/test/test-erubis.rb +883 -0
  294. data/test/test-main.rb +721 -0
  295. data/test/test-users-guide.rb +57 -0
  296. data/test/test.rb +29 -0
  297. data/test/testutil.rb +96 -0
  298. metadata +360 -0
@@ -0,0 +1,121 @@
1
+ ##
2
+ ## $Release: 2.6.5 $
3
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
4
+ ##
5
+
6
+ require 'erubis/enhancer'
7
+ require 'erubis/engine/eruby'
8
+
9
+
10
+ module Erubis
11
+
12
+
13
+ #--
14
+ ## moved to engine/ruby.rb
15
+ #class EscapedEruby < Eruby
16
+ # include EscapeEnhancer
17
+ #end
18
+ #++
19
+
20
+
21
+ #--
22
+ ### (obsolete)
23
+ #class FastEruby < Eruby
24
+ # include FastEnhancer
25
+ #end
26
+ #++
27
+
28
+
29
+ class StdoutEruby < Eruby
30
+ include StdoutEnhancer
31
+ end
32
+
33
+
34
+ class PrintOutEruby < Eruby
35
+ include PrintOutEnhancer
36
+ end
37
+
38
+
39
+ class PrintEnabledEruby < Eruby
40
+ include PrintEnabledEnhancer
41
+ end
42
+
43
+
44
+ class ArrayEruby < Eruby
45
+ include ArrayEnhancer
46
+ end
47
+
48
+
49
+ class ArrayBufferEruby < Eruby
50
+ include ArrayBufferEnhancer
51
+ end
52
+
53
+
54
+ class StringBufferEruby < Eruby
55
+ include StringBufferEnhancer
56
+ end
57
+
58
+
59
+ class StringIOEruby < Eruby
60
+ include StringIOEnhancer
61
+ end
62
+
63
+
64
+ class ErboutEruby < Eruby
65
+ include ErboutEnhancer
66
+ end
67
+
68
+
69
+ class NoTextEruby < Eruby
70
+ include NoTextEnhancer
71
+ end
72
+
73
+
74
+ class NoCodeEruby < Eruby
75
+ include NoCodeEnhancer
76
+ end
77
+
78
+
79
+ class SimplifiedEruby < Eruby
80
+ include SimplifyEnhancer
81
+ end
82
+
83
+
84
+ class StdoutSimplifiedEruby < Eruby
85
+ include StdoutEnhancer
86
+ include SimplifyEnhancer
87
+ end
88
+
89
+
90
+ class PrintOutSimplifiedEruby < Eruby
91
+ include PrintOutEnhancer
92
+ include SimplifyEnhancer
93
+ end
94
+
95
+
96
+ class BiPatternEruby < Eruby
97
+ include BiPatternEnhancer
98
+ end
99
+
100
+
101
+ class PercentLineEruby < Eruby
102
+ include PercentLineEnhancer
103
+ end
104
+
105
+
106
+ class HeaderFooterEruby < Eruby
107
+ include HeaderFooterEnhancer
108
+ end
109
+
110
+
111
+ class DeleteIndentEruby < Eruby
112
+ include DeleteIndentEnhancer
113
+ end
114
+
115
+
116
+ class InterpolationEruby < Eruby
117
+ include InterpolationEnhancer
118
+ end
119
+
120
+
121
+ end
@@ -0,0 +1,95 @@
1
+ ##
2
+ ## $Release: 2.6.5 $
3
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
4
+ ##
5
+
6
+ require 'erubis/engine'
7
+ require 'erubis/enhancer'
8
+
9
+
10
+ module Erubis
11
+
12
+
13
+ module PerlGenerator
14
+ include Generator
15
+
16
+ def self.supported_properties() # :nodoc:
17
+ return [
18
+ [:func, 'print', "function name"],
19
+ ]
20
+ end
21
+
22
+ def init_generator(properties={})
23
+ super
24
+ @escapefunc ||= 'encode_entities'
25
+ @func = properties[:func] || 'print'
26
+ end
27
+
28
+ def add_preamble(src)
29
+ src << "use HTML::Entities; ";
30
+ end
31
+
32
+ def escape_text(text)
33
+ return text.gsub!(/['\\]/, '\\\\\&') || text
34
+ end
35
+
36
+ def add_text(src, text)
37
+ src << @func << "('" << escape_text(text) << "'); " unless text.empty?
38
+ end
39
+
40
+ def add_expr_literal(src, code)
41
+ code.strip!
42
+ src << @func << "(" << code << "); "
43
+ end
44
+
45
+ def add_expr_escaped(src, code)
46
+ add_expr_literal(src, escaped_expr(code))
47
+ end
48
+
49
+ def add_expr_debug(src, code)
50
+ code.strip!
51
+ s = code.gsub(/\'/, "\\'")
52
+ src << @func << "('*** debug: #{code}=', #{code}, \"\\n\");"
53
+ end
54
+
55
+ def add_stmt(src, code)
56
+ src << code
57
+ end
58
+
59
+ def add_postamble(src)
60
+ src << "\n" unless src[-1] == ?\n
61
+ end
62
+
63
+ end
64
+
65
+
66
+ ##
67
+ ## engine for Perl
68
+ ##
69
+ class Eperl < Basic::Engine
70
+ include PerlGenerator
71
+ end
72
+
73
+
74
+ class EscapedEperl < Eperl
75
+ include EscapeEnhancer
76
+ end
77
+
78
+
79
+ #class XmlEperl < Eperl
80
+ # include EscapeEnhancer
81
+ #end
82
+
83
+
84
+ class PI::Eperl < PI::Engine
85
+ include PerlGenerator
86
+
87
+ def init_converter(properties={})
88
+ @pi = 'perl'
89
+ super(properties)
90
+ end
91
+
92
+ end
93
+
94
+
95
+ end
@@ -0,0 +1,99 @@
1
+ ##
2
+ ## $Release: 2.6.5 $
3
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
4
+ ##
5
+
6
+ require 'erubis/engine'
7
+ require 'erubis/enhancer'
8
+
9
+
10
+ module Erubis
11
+
12
+
13
+ module PhpGenerator
14
+ include Generator
15
+
16
+ def self.supported_properties() # :nodoc:
17
+ return []
18
+ end
19
+
20
+ def init_generator(properties={})
21
+ super
22
+ @escapefunc ||= 'htmlspecialchars'
23
+ end
24
+
25
+ def add_preamble(src)
26
+ # empty
27
+ end
28
+
29
+ def escape_text(text)
30
+ return text.gsub!(/<\?xml\b/, '<<?php ?>?xml') || text
31
+ end
32
+
33
+ def add_text(src, text)
34
+ src << escape_text(text)
35
+ end
36
+
37
+ def add_expr_literal(src, code)
38
+ code.strip!
39
+ src << "<?php echo #{code}; ?>"
40
+ end
41
+
42
+ def add_expr_escaped(src, code)
43
+ add_expr_literal(src, escaped_expr(code))
44
+ end
45
+
46
+ def add_expr_debug(src, code)
47
+ code.strip!
48
+ s = code.gsub(/\'/, "\\'")
49
+ src << "<?php error_log('*** debug: #{s}='.(#{code}), 0); ?>"
50
+ end
51
+
52
+ def add_stmt(src, code)
53
+ src << "<?php"
54
+ src << " " if code[0] != ?\ #
55
+ if code[-1] == ?\n
56
+ code.chomp!
57
+ src << code << "?>\n"
58
+ else
59
+ src << code << "?>"
60
+ end
61
+ end
62
+
63
+ def add_postamble(src)
64
+ # empty
65
+ end
66
+
67
+ end
68
+
69
+
70
+ ##
71
+ ## engine for PHP
72
+ ##
73
+ class Ephp < Basic::Engine
74
+ include PhpGenerator
75
+ end
76
+
77
+
78
+ class EscapedEphp < Ephp
79
+ include EscapeEnhancer
80
+ end
81
+
82
+
83
+ #class XmlEphp < Ephp
84
+ # include EscapeEnhancer
85
+ #end
86
+
87
+
88
+ class PI::Ephp < PI::Engine
89
+ include PhpGenerator
90
+
91
+ def init_converter(properties={})
92
+ @pi = 'php'
93
+ super(properties)
94
+ end
95
+
96
+ end
97
+
98
+
99
+ end
@@ -0,0 +1,124 @@
1
+ ##
2
+ ## $Release: 2.6.5 $
3
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
4
+ ##
5
+
6
+ require 'erubis/engine'
7
+ require 'erubis/enhancer'
8
+
9
+
10
+ module Erubis
11
+
12
+
13
+ ##
14
+ ## code generator for Ruby
15
+ ##
16
+ module RubyGenerator
17
+ include Generator
18
+ #include ArrayBufferEnhancer
19
+ include StringBufferEnhancer
20
+
21
+ def init_generator(properties={})
22
+ super
23
+ @escapefunc ||= "Erubis::XmlHelper.escape_xml"
24
+ end
25
+
26
+ def self.supported_properties() # :nodoc:
27
+ return []
28
+ end
29
+
30
+ def escape_text(text)
31
+ text.gsub(/['\\]/, '\\\\\&') # "'" => "\\'", '\\' => '\\\\'
32
+ end
33
+
34
+ def escaped_expr(code)
35
+ return "#{@escapefunc}(#{code})"
36
+ end
37
+
38
+ #--
39
+ #def add_preamble(src)
40
+ # src << "_buf = [];"
41
+ #end
42
+ #++
43
+
44
+ def add_text(src, text)
45
+ src << " _buf << '" << escape_text(text) << "';" unless text.empty?
46
+ end
47
+
48
+ def add_stmt(src, code)
49
+ #src << code << ';'
50
+ src << code
51
+ src << ';' unless code[-1] == ?\n
52
+ end
53
+
54
+ def add_expr_literal(src, code)
55
+ src << ' _buf << (' << code << ').to_s;'
56
+ end
57
+
58
+ def add_expr_escaped(src, code)
59
+ src << ' _buf << ' << escaped_expr(code) << ';'
60
+ end
61
+
62
+ def add_expr_debug(src, code)
63
+ code.strip!
64
+ s = (code.dump =~ /\A"(.*)"\z/) && $1
65
+ src << ' $stderr.puts("*** debug: ' << s << '=#{(' << code << ').inspect}");'
66
+ end
67
+
68
+ #--
69
+ #def add_postamble(src)
70
+ # src << "\n_buf.join\n"
71
+ #end
72
+ #++
73
+
74
+ end
75
+
76
+
77
+ ##
78
+ ## engine for Ruby
79
+ ##
80
+ class Eruby < Basic::Engine
81
+ include RubyEvaluator
82
+ include RubyGenerator
83
+ end
84
+
85
+
86
+ ##
87
+ ## fast engine for Ruby
88
+ ##
89
+ class FastEruby < Eruby
90
+ include InterpolationEnhancer
91
+ end
92
+
93
+
94
+ ##
95
+ ## swtich '<%= %>' to escaped and '<%== %>' to not escaped
96
+ ##
97
+ class EscapedEruby < Eruby
98
+ include EscapeEnhancer
99
+ end
100
+
101
+
102
+ ##
103
+ ## sanitize expression (<%= ... %>) by default
104
+ ##
105
+ ## this is equivalent to EscapedEruby and is prepared only for compatibility.
106
+ ##
107
+ class XmlEruby < Eruby
108
+ include EscapeEnhancer
109
+ end
110
+
111
+
112
+ class PI::Eruby < PI::Engine
113
+ include RubyEvaluator
114
+ include RubyGenerator
115
+
116
+ def init_converter(properties={})
117
+ @pi = 'rb'
118
+ super(properties)
119
+ end
120
+
121
+ end
122
+
123
+
124
+ end
@@ -0,0 +1,114 @@
1
+ ##
2
+ ## $Release: 2.6.5 $
3
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
4
+ ##
5
+
6
+ require 'erubis/engine'
7
+ require 'erubis/enhancer'
8
+
9
+
10
+ module Erubis
11
+
12
+
13
+ module SchemeGenerator
14
+ include Generator
15
+
16
+ def self.supported_properties() # :nodoc:
17
+ return [
18
+ [:func, '_add', "function name (ex. 'display')"],
19
+ ]
20
+ end
21
+
22
+ def init_generator(properties={})
23
+ super
24
+ @escapefunc ||= 'escape'
25
+ @func = properties[:func] || '_add' # or 'display'
26
+ end
27
+
28
+ def add_preamble(src)
29
+ return unless @func == '_add'
30
+ src << "(let ((_buf '())) " + \
31
+ "(define (_add x) (set! _buf (cons x _buf))) "
32
+ #src << "(let* ((_buf '())" + \
33
+ # " (_add (lambda (x) (set! _buf (cons x _buf))))) "
34
+ end
35
+
36
+ def escape_text(text)
37
+ @table_ ||= { '"'=>'\\"', '\\'=>'\\\\' }
38
+ text.gsub!(/["\\]/) { |m| @table_[m] }
39
+ return text
40
+ end
41
+
42
+ def escaped_expr(code)
43
+ code.strip!
44
+ return "(#{@escapefunc} #{code})"
45
+ end
46
+
47
+ def add_text(src, text)
48
+ return if text.empty?
49
+ t = escape_text(text)
50
+ if t[-1] == ?\n
51
+ t[-1, 1] = ''
52
+ src << "(#{@func} \"" << t << "\\n\")\n"
53
+ else
54
+ src << "(#{@func} \"" << t << '")'
55
+ end
56
+ end
57
+
58
+ def add_stmt(src, code)
59
+ src << code
60
+ end
61
+
62
+ def add_expr_literal(src, code)
63
+ code.strip!
64
+ src << "(#{@func} #{code})"
65
+ end
66
+
67
+ def add_expr_escaped(src, code)
68
+ add_expr_literal(src, escaped_expr(code))
69
+ end
70
+
71
+ def add_expr_debug(src, code)
72
+ s = (code.strip! || code).gsub(/\"/, '\\"')
73
+ src << "(display \"*** debug: #{s}=\")(display #{code.strip})(display \"\\n\")"
74
+ end
75
+
76
+ def add_postamble(src)
77
+ return unless @func == '_add'
78
+ src << "\n" unless src[-1] == ?\n
79
+ src << " (reverse _buf))\n"
80
+ end
81
+
82
+ end
83
+
84
+
85
+ ##
86
+ ## engine for Scheme
87
+ ##
88
+ class Escheme < Basic::Engine
89
+ include SchemeGenerator
90
+ end
91
+
92
+
93
+ class EscapedEscheme < Escheme
94
+ include EscapeEnhancer
95
+ end
96
+
97
+
98
+ #class XmlEscheme < Escheme
99
+ # include EscapeEnhancer
100
+ #end
101
+
102
+
103
+ class PI::Escheme < PI::Engine
104
+ include SchemeGenerator
105
+
106
+ def init_converter(properties={})
107
+ @pi = 'scheme'
108
+ super(properties)
109
+ end
110
+
111
+ end
112
+
113
+
114
+ end
@@ -0,0 +1,127 @@
1
+ ##
2
+ ## $Release: 2.6.5 $
3
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
4
+ ##
5
+
6
+
7
+ require 'erubis/engine/eruby'
8
+
9
+
10
+ module Erubis
11
+
12
+
13
+ module OptimizedGenerator
14
+ include Generator
15
+
16
+ def self.supported_properties() # :nodoc:
17
+ return []
18
+ end
19
+
20
+ def init_generator(properties={})
21
+ super
22
+ @escapefunc ||= "Erubis::XmlHelper.escape_xml"
23
+ @initialized = false
24
+ @prev_is_expr = false
25
+ end
26
+
27
+ protected
28
+
29
+ def escape_text(text)
30
+ text.gsub(/['\\]/, '\\\\\&') # "'" => "\\'", '\\' => '\\\\'
31
+ end
32
+
33
+ def escaped_expr(code)
34
+ @escapefunc ||= 'Erubis::XmlHelper.escape_xml'
35
+ return "#{@escapefunc}(#{code})"
36
+ end
37
+
38
+ def switch_to_expr(src)
39
+ return if @prev_is_expr
40
+ @prev_is_expr = true
41
+ src << ' _buf'
42
+ end
43
+
44
+ def switch_to_stmt(src)
45
+ return unless @prev_is_expr
46
+ @prev_is_expr = false
47
+ src << ';'
48
+ end
49
+
50
+ def add_preamble(src)
51
+ #@initialized = false
52
+ #@prev_is_expr = false
53
+ end
54
+
55
+ def add_text(src, text)
56
+ return if text.empty?
57
+ if @initialized
58
+ switch_to_expr(src)
59
+ src << " << '" << escape_text(text) << "'"
60
+ else
61
+ src << "_buf = '" << escape_text(text) << "';"
62
+ @initialized = true
63
+ end
64
+ end
65
+
66
+ def add_stmt(src, code)
67
+ switch_to_stmt(src) if @initialized
68
+ #super
69
+ src << code
70
+ src << ';' unless code[-1] == ?\n
71
+ end
72
+
73
+ def add_expr_literal(src, code)
74
+ unless @initialized; src << "_buf = ''"; @initialized = true; end
75
+ switch_to_expr(src)
76
+ src << " << (" << code << ").to_s"
77
+ end
78
+
79
+ def add_expr_escaped(src, code)
80
+ unless @initialized; src << "_buf = ''"; @initialized = true; end
81
+ switch_to_expr(src)
82
+ src << " << " << escaped_expr(code)
83
+ end
84
+
85
+ def add_expr_debug(src, code)
86
+ code.strip!
87
+ s = (code.dump =~ /\A"(.*)"\z/) && $1
88
+ src << ' $stderr.puts("*** debug: ' << s << '=#{(' << code << ').inspect}");'
89
+ end
90
+
91
+ def add_postamble(src)
92
+ #super if @initialized
93
+ src << "\n_buf\n" if @initialized
94
+ end
95
+
96
+ end # end of class OptimizedEruby
97
+
98
+
99
+ ##
100
+ ## Eruby class which generates optimized ruby code
101
+ ##
102
+ class OptimizedEruby < Basic::Engine # Eruby
103
+ include RubyEvaluator
104
+ include OptimizedGenerator
105
+
106
+ def init_converter(properties={})
107
+ @pi = 'rb'
108
+ super(properties)
109
+ end
110
+
111
+ end
112
+
113
+
114
+ ##
115
+ ## XmlEruby class which generates optimized ruby code
116
+ ##
117
+ class OptimizedXmlEruby < OptimizedEruby
118
+ include EscapeEnhancer
119
+
120
+ def add_expr_debug(src, code)
121
+ switch_to_stmt(src) if indicator == '===' && !@initialized
122
+ super
123
+ end
124
+
125
+ end # end of class OptimizedXmlEruby
126
+
127
+ end