tenjin 0.6.2 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (282) hide show
  1. data/CHANGES.txt +163 -0
  2. data/MIT-LICENSE +16 -17
  3. data/README.txt +5 -5
  4. data/benchmark/Makefile +9 -0
  5. data/benchmark/bench.rb +3 -2
  6. data/bin/rbtenjin +6 -3
  7. data/doc/docstyle.css +25 -4
  8. data/doc/users-guide.html +2088 -1563
  9. data/lib/tenjin.rb +784 -158
  10. data/public_html/_layout.rbhtml +33 -0
  11. data/public_html/css/style.css +77 -0
  12. data/public_html/env.rbhtml +15 -0
  13. data/public_html/favicon.ico +0 -0
  14. data/public_html/hello.rbhtml +14 -0
  15. data/public_html/index.rbhtml +39 -0
  16. data/public_html/rbtenjin.cgi +188 -0
  17. data/tenjin.gemspec +9 -6
  18. data/test/data/examples/preprocessing/main.rb +1 -1
  19. data/test/data/examples/preprocessing/select.rbhtml +1 -1
  20. data/test/data/faq/{ex11-bench.rb → ex10-bench.rb} +3 -3
  21. data/test/data/faq/ex10-content.rbhtml +8 -11
  22. data/test/data/faq/{ex11-layout1.rbhtml → ex10-layout1.rbhtml} +0 -0
  23. data/test/data/faq/{ex11-layout2.rbhtml → ex10-layout2.rbhtml} +0 -0
  24. data/test/data/faq/{ex11.rb → ex10.rb} +1 -1
  25. data/test/data/faq/{ex11.rbhtml → ex10.rbhtml} +0 -0
  26. data/test/data/faq/{ex11.source → ex10.source} +2 -2
  27. data/test/data/faq/{ex11_arraybuffer.result → ex10_arraybuffer.result} +1 -1
  28. data/test/data/faq/{ex5.rbhtml → ex2.rbhtml} +0 -0
  29. data/test/data/faq/{ex5_template_args.source → ex2_template_args.source} +1 -1
  30. data/test/data/faq/{ex7-expr-pattern.rb → ex4-expr-pattern.rb} +1 -1
  31. data/test/data/faq/{ex7-expr-pattern.rbhtml → ex4-expr-pattern.rbhtml} +0 -0
  32. data/test/data/faq/{ex7_expr_pattern.result → ex4_expr_pattern.result} +1 -1
  33. data/test/data/faq/{ex6-content.rhtml → ex5-content.rhtml} +0 -0
  34. data/test/data/faq/{ex6-layout.rhtml → ex5-layout.rhtml} +0 -0
  35. data/test/data/faq/{ex6.rb → ex5.rb} +2 -2
  36. data/test/data/faq/{ex6_eruby.result → ex5_eruby.result} +1 -1
  37. data/test/data/faq/{ex2-content.rbhtml → ex6-content.rbhtml} +0 -0
  38. data/test/data/faq/{ex2-layout.rbhtml → ex6-layout.rbhtml} +0 -0
  39. data/test/data/faq/{ex2_removenl.result → ex6_removenl.result} +1 -1
  40. data/test/data/faq/ex7-m18n.rb +48 -0
  41. data/test/data/faq/{ex8-m18n.rbhtml → ex7-m18n.rbhtml} +0 -0
  42. data/test/data/faq/{ex8_m18n.result → ex7_m18n.result} +1 -1
  43. data/test/data/faq/ex8-baselayout.rbhtml +8 -0
  44. data/test/data/faq/ex8-content.rbhtml +6 -0
  45. data/test/data/faq/{ex9-mylayout.rbhtml → ex8-mylayout.rbhtml} +0 -0
  46. data/test/data/faq/{ex9_changelayout.result → ex8_changelayout.result} +1 -1
  47. data/test/data/faq/ex9-baselayout.rbhtml +24 -5
  48. data/test/data/faq/ex9-content.rbhtml +12 -6
  49. data/test/data/faq/{ex10-customlayout.rbhtml → ex9-customlayout.rbhtml} +1 -1
  50. data/test/data/faq/{ex10_inherit.result → ex9_inherit.result} +1 -1
  51. data/test/data/faq/helpers1.rb +17 -0
  52. data/test/data/faq/helpers1.rbhtml +4 -0
  53. data/test/data/faq/helpers1.result +11 -0
  54. data/test/data/faq/helpers2.rb +21 -0
  55. data/test/data/faq/helpers2.rbhtml +4 -0
  56. data/test/data/faq/helpers2.result +11 -0
  57. data/test/data/faq/weekday1.rb +6 -0
  58. data/test/data/faq/weekday1.rbhtml +9 -0
  59. data/test/data/faq/weekday1.result +23 -0
  60. data/test/data/faq/weekday2.rb +8 -0
  61. data/test/data/faq/weekday2.rbhtml +10 -0
  62. data/test/data/faq/weekday2.result +24 -0
  63. data/test/data/faq/weekday3.rb +22 -0
  64. data/test/data/faq/weekday3.rbhtml +3 -0
  65. data/test/data/faq/weekday3.result +28 -0
  66. data/test/data/users_guide/test_010/main.rb +14 -0
  67. data/test/data/users_guide/test_010/result.output +13 -0
  68. data/test/data/users_guide/test_010/views/page.rbhtml +11 -0
  69. data/test/data/users_guide/test_011/main.rb +14 -0
  70. data/test/data/users_guide/test_011/result.output +2 -0
  71. data/test/data/users_guide/test_011/views/page.rbhtml +11 -0
  72. data/test/data/users_guide/test_020/main.rb +14 -0
  73. data/test/data/users_guide/test_020/result.output +13 -0
  74. data/test/data/users_guide/test_020/views/page.rbhtml +11 -0
  75. data/test/data/users_guide/test_021/main.rb +12 -0
  76. data/test/data/users_guide/test_021/result.output +12 -0
  77. data/test/data/users_guide/test_021/views/page.rbhtml +11 -0
  78. data/test/data/users_guide/test_030/main.rb +14 -0
  79. data/test/data/users_guide/test_030/result.output +23 -0
  80. data/test/data/users_guide/test_030/views/_layout.rbhtml +10 -0
  81. data/test/data/users_guide/test_030/views/page.rbhtml +11 -0
  82. data/test/data/users_guide/test_040/main.rb +14 -0
  83. data/test/data/users_guide/test_040/result.output +23 -0
  84. data/test/data/users_guide/test_040/views/_layout.rbhtml +10 -0
  85. data/test/data/users_guide/test_040/views/page.rbhtml +12 -0
  86. data/test/data/users_guide/test_050/main.rb +14 -0
  87. data/test/data/users_guide/test_050/result.output +14 -0
  88. data/test/data/users_guide/test_050/views/_layout.rbhtml +10 -0
  89. data/test/data/users_guide/test_050/views/page.rbhtml +13 -0
  90. data/test/data/users_guide/test_051/main.rb +14 -0
  91. data/test/data/users_guide/test_051/result.output +12 -0
  92. data/test/data/users_guide/test_051/views/_layout.rbhtml +11 -0
  93. data/test/data/users_guide/test_051/views/page.rbhtml +13 -0
  94. data/test/data/users_guide/test_060/main.rb +14 -0
  95. data/test/data/users_guide/test_060/result.output +29 -0
  96. data/test/data/users_guide/test_060/views/_footer.rbhtml +3 -0
  97. data/test/data/users_guide/test_060/views/_header.rbhtml +3 -0
  98. data/test/data/users_guide/test_060/views/_layout.rbhtml +13 -0
  99. data/test/data/users_guide/test_060/views/page.rbhtml +13 -0
  100. data/test/data/users_guide/test_070/main.rb +14 -0
  101. data/test/data/users_guide/test_070/result.output +29 -0
  102. data/test/data/users_guide/test_070/views/_footer.rbhtml +3 -0
  103. data/test/data/users_guide/test_070/views/_header.rbhtml +3 -0
  104. data/test/data/users_guide/test_070/views/_layout.rbhtml +13 -0
  105. data/test/data/users_guide/test_070/views/page.rbhtml +13 -0
  106. data/test/data/users_guide/test_capturing/main.rb +24 -0
  107. data/test/data/users_guide/test_capturing/result.output +28 -0
  108. data/test/data/users_guide/test_capturing/views/_layout.rbhtml +21 -0
  109. data/test/data/users_guide/test_capturing/views/blog-post.rbhtml +13 -0
  110. data/test/data/users_guide/test_context/context.rb +5 -0
  111. data/test/data/users_guide/test_context/context.yaml +4 -0
  112. data/test/data/users_guide/test_context/example.rbhtml +5 -0
  113. data/test/data/users_guide/test_context/result1.output +6 -0
  114. data/test/data/users_guide/test_context/result2.output +6 -0
  115. data/test/data/users_guide/test_context/result3.output +6 -0
  116. data/test/data/users_guide/test_context/result4.output +6 -0
  117. data/test/data/users_guide/test_convert/example.rbhtml +5 -0
  118. data/test/data/users_guide/test_convert/result1.output +7 -0
  119. data/test/data/users_guide/test_convert/result2.output +6 -0
  120. data/test/data/users_guide/test_escape/main.rb +4 -0
  121. data/test/data/users_guide/test_escape/result.output +5 -0
  122. data/test/data/users_guide/test_escape/views/page.rbhtml +4 -0
  123. data/test/data/users_guide/test_execute/example.rbhtml +6 -0
  124. data/test/data/users_guide/test_execute/result.output +6 -0
  125. data/test/data/users_guide/test_fragmentcache/cache.d/items/1 +5 -0
  126. data/test/data/users_guide/test_fragmentcache/main.rb +21 -0
  127. data/test/data/users_guide/test_fragmentcache/result.output +8 -0
  128. data/test/data/users_guide/test_fragmentcache/result2.output +6 -0
  129. data/test/data/users_guide/test_fragmentcache/views/items.rbhtml +10 -0
  130. data/test/data/users_guide/test_logging/ex-logger.rb +11 -0
  131. data/test/data/users_guide/test_logging/example.rbhtml +0 -0
  132. data/test/data/users_guide/test_logging/result1.output +3 -0
  133. data/test/data/users_guide/test_logging/result2.output +2 -0
  134. data/test/data/users_guide/test_m17n/m17n.rb +44 -0
  135. data/test/data/users_guide/test_m17n/m17n.rbhtml +5 -0
  136. data/test/data/users_guide/test_m17n/result.output +9 -0
  137. data/test/data/users_guide/test_m17n/result_en.output +4 -0
  138. data/test/data/users_guide/test_m17n/result_fr.output +4 -0
  139. data/test/data/users_guide/test_nested/main.rb +8 -0
  140. data/test/data/users_guide/test_nested/result.output +15 -0
  141. data/test/data/users_guide/test_nested/views/_blog_layout.rbhtml +5 -0
  142. data/test/data/users_guide/{layout8_html.rbhtml → test_nested/views/_site_layout.rbhtml} +0 -0
  143. data/test/data/users_guide/test_nested/views/blog_post.rbhtml +4 -0
  144. data/test/data/users_guide/test_preprocessing/pp-example1.rb +14 -0
  145. data/test/data/users_guide/test_preprocessing/result1a.output +11 -0
  146. data/test/data/users_guide/test_preprocessing/result1b.output +5 -0
  147. data/test/data/users_guide/test_preprocessing/result1c.output +6 -0
  148. data/test/data/users_guide/test_preprocessing/result2a.output +10 -0
  149. data/test/data/users_guide/test_preprocessing/result2b.output +10 -0
  150. data/test/data/users_guide/test_preprocessing/result3a.output +2 -0
  151. data/test/data/users_guide/test_preprocessing/result3b.output +2 -0
  152. data/test/data/users_guide/test_preprocessing/views/pp-example1.rbhtml +4 -0
  153. data/test/data/users_guide/{example12.rbhtml → test_preprocessing/views/pp-example2.rbhtml} +4 -4
  154. data/test/data/users_guide/test_preprocessing/views/pp-example3.rbhtml +7 -0
  155. data/test/data/users_guide/test_retrieve/example.rbhtml +10 -0
  156. data/test/data/users_guide/test_retrieve/result1.output +11 -0
  157. data/test/data/users_guide/test_retrieve/result2.output +11 -0
  158. data/test/data/users_guide/test_retrieve/result3.output +11 -0
  159. data/test/data/users_guide/test_retrieve/result4.output +8 -0
  160. data/test/data/users_guide/test_retrieve/result5.output +5 -0
  161. data/test/data/users_guide/test_safe/result.output +6 -0
  162. data/test/data/users_guide/test_safe/safe-test.rb +21 -0
  163. data/test/data/users_guide/test_safehelper/main.rb +16 -0
  164. data/test/data/users_guide/test_safehelper/result.output +8 -0
  165. data/test/data/users_guide/{example3.rbhtml → test_syntax_check/example.rbhtml} +0 -0
  166. data/test/data/users_guide/test_syntax_check/result.output +2 -0
  167. data/test/data/users_guide/test_trace/layout.rbhtml +7 -0
  168. data/test/data/users_guide/test_trace/main.rbhtml +5 -0
  169. data/test/data/users_guide/test_trace/result.output +16 -0
  170. data/test/data/users_guide/test_trace/trace-example.rb +4 -0
  171. data/test/oktest.rb +755 -0
  172. data/test/test_all.rb +24 -14
  173. data/test/test_engine.rb +628 -63
  174. data/test/test_engine.yaml +40 -3
  175. data/test/test_examples.rb +14 -12
  176. data/test/test_faq.rb +17 -12
  177. data/test/test_htmlhelper.rb +104 -33
  178. data/test/test_main.rb +32 -21
  179. data/test/test_main.yaml +2 -2
  180. data/test/test_safe.rb +206 -0
  181. data/test/test_store.rb +220 -0
  182. data/test/test_tcache.rb +94 -0
  183. data/test/test_template.rb +65 -23
  184. data/test/test_template.yaml +7 -7
  185. data/test/test_users_guide.rb +75 -29
  186. data/test/testcase-helper.rb +20 -18
  187. data/test/testunit-assertions.rb +71 -0
  188. metadata +185 -159
  189. data/doc-api/classes/Tenjin.html +0 -141
  190. data/doc-api/classes/Tenjin/ArrayBufferTemplate.html +0 -270
  191. data/doc-api/classes/Tenjin/BaseContext.html +0 -329
  192. data/doc-api/classes/Tenjin/Context.html +0 -126
  193. data/doc-api/classes/Tenjin/ContextHelper.html +0 -461
  194. data/doc-api/classes/Tenjin/Engine.html +0 -616
  195. data/doc-api/classes/Tenjin/ErubisTemplate.html +0 -166
  196. data/doc-api/classes/Tenjin/HtmlHelper.html +0 -359
  197. data/doc-api/classes/Tenjin/Preprocessor.html +0 -242
  198. data/doc-api/classes/Tenjin/Template.html +0 -916
  199. data/doc-api/created.rid +0 -1
  200. data/doc-api/files/README_txt.html +0 -188
  201. data/doc-api/files/lib/tenjin_rb.html +0 -136
  202. data/doc-api/fr_class_index.html +0 -36
  203. data/doc-api/fr_file_index.html +0 -28
  204. data/doc-api/fr_method_index.html +0 -91
  205. data/doc-api/index.html +0 -24
  206. data/doc-api/rdoc-style.css +0 -208
  207. data/doc/examples.html +0 -312
  208. data/doc/faq.html +0 -909
  209. data/examples/preprocessing/select.rbhtml.cache +0 -17
  210. data/test/Rookbook.yaml +0 -14
  211. data/test/assert-text-equal.rb +0 -45
  212. data/test/data/faq/ex10-baselayout.rbhtml +0 -27
  213. data/test/data/faq/ex11-content.rbhtml +0 -9
  214. data/test/data/faq/ex8-m18n.rb +0 -77
  215. data/test/data/users_guide/content6.rbhtml +0 -3
  216. data/test/data/users_guide/content7.rbhtml +0 -5
  217. data/test/data/users_guide/content8.rbhtml +0 -2
  218. data/test/data/users_guide/contextdata.rb +0 -7
  219. data/test/data/users_guide/datafile.rb +0 -5
  220. data/test/data/users_guide/datafile.yaml +0 -10
  221. data/test/data/users_guide/ex.rbhtml +0 -6
  222. data/test/data/users_guide/ex.result +0 -7
  223. data/test/data/users_guide/ex.script +0 -5
  224. data/test/data/users_guide/ex_script.result +0 -7
  225. data/test/data/users_guide/ex_source.result +0 -8
  226. data/test/data/users_guide/example1.rbhtml +0 -12
  227. data/test/data/users_guide/example1.result +0 -17
  228. data/test/data/users_guide/example10.rbhtml +0 -4
  229. data/test/data/users_guide/example10_template_args.result +0 -6
  230. data/test/data/users_guide/example11.rbhtml +0 -5
  231. data/test/data/users_guide/example11_template_args_result +0 -2
  232. data/test/data/users_guide/example12_preprocessed.result +0 -10
  233. data/test/data/users_guide/example12_preprocessed_source.result +0 -10
  234. data/test/data/users_guide/example13.rbhtml +0 -6
  235. data/test/data/users_guide/example13_preprocessed.result +0 -2
  236. data/test/data/users_guide/example13_preprocessed_source.result +0 -2
  237. data/test/data/users_guide/example14.rb +0 -32
  238. data/test/data/users_guide/example14.rbhtml +0 -6
  239. data/test/data/users_guide/example14_tmplclass.result +0 -15
  240. data/test/data/users_guide/example15.rb +0 -10
  241. data/test/data/users_guide/example15_escapefunc.result +0 -14
  242. data/test/data/users_guide/example16.rbhtml +0 -4
  243. data/test/data/users_guide/example16a.rb +0 -10
  244. data/test/data/users_guide/example16a.result +0 -4
  245. data/test/data/users_guide/example16b.rb +0 -13
  246. data/test/data/users_guide/example16b.result +0 -4
  247. data/test/data/users_guide/example16c.rb +0 -12
  248. data/test/data/users_guide/example16c.result +0 -4
  249. data/test/data/users_guide/example16d.rb +0 -27
  250. data/test/data/users_guide/example16d.result +0 -4
  251. data/test/data/users_guide/example1_S.result +0 -14
  252. data/test/data/users_guide/example1_SXNC.result +0 -10
  253. data/test/data/users_guide/example1_source.result +0 -14
  254. data/test/data/users_guide/example2.rbhtml +0 -3
  255. data/test/data/users_guide/example2_sb.result2 +0 -9
  256. data/test/data/users_guide/example3_syntaxcheck.result +0 -2
  257. data/test/data/users_guide/example4.rbhtml +0 -13
  258. data/test/data/users_guide/example4_datafile_rb.result +0 -13
  259. data/test/data/users_guide/example4_yaml.result +0 -13
  260. data/test/data/users_guide/example5.rbhtml +0 -9
  261. data/test/data/users_guide/example5_datastr_rb.result +0 -9
  262. data/test/data/users_guide/example5_datastr_yaml.result +0 -9
  263. data/test/data/users_guide/example6.rbhtml +0 -19
  264. data/test/data/users_guide/example6_layout.result +0 -29
  265. data/test/data/users_guide/example6_nested.result +0 -28
  266. data/test/data/users_guide/example7_layout2.result +0 -13
  267. data/test/data/users_guide/example8_layout3.result +0 -8
  268. data/test/data/users_guide/example9.rbhtml +0 -18
  269. data/test/data/users_guide/example9_capture.result +0 -26
  270. data/test/data/users_guide/footer.html +0 -5
  271. data/test/data/users_guide/footer.rbhtml +0 -4
  272. data/test/data/users_guide/layout6.rbhtml +0 -17
  273. data/test/data/users_guide/layout7.rbhtml +0 -9
  274. data/test/data/users_guide/layout8_xhtml.rbhtml +0 -6
  275. data/test/data/users_guide/layout9.rbhtml +0 -25
  276. data/test/data/users_guide/sidemenu.rbhtml +0 -5
  277. data/test/data/users_guide/user_app.cgi +0 -39
  278. data/test/data/users_guide/user_app.result +0 -30
  279. data/test/data/users_guide/user_create.rbhtml +0 -6
  280. data/test/data/users_guide/user_edit.rbhtml +0 -7
  281. data/test/data/users_guide/user_form.rbhtml +0 -10
  282. data/test/data/users_guide/user_layout.rbhtml +0 -16
@@ -1,17 +0,0 @@
1
- _buf << %Q`<form>
2
- <label>Select your language:</label>
3
- <select name="lang">\n`
4
- table = { @params[:lang] => ' selected="selected"' }
5
- _buf << %Q` <option value="en" #{table["en"]}>Engilish</option>
6
- <option value="fr" #{table["fr"]}>French</option>
7
- <option value="de" #{table["de"]}>German</option>
8
- <option value="es" #{table["es"]}>Spanish</option>
9
- <option value="ch" #{table["ch"]}>Chinese</option>
10
- <option value="ja" #{table["ja"]}>Japanese</option>
11
- </select>
12
- <input type="submit" value="OK" />
13
- </form>
14
- <p>
15
- <a href="/app/index">Back</a> |
16
- <a href="/app/show/#{@params[:id]}">Show #{escape((@params[:name]).to_s)}</a>
17
- </p>\n`
@@ -1,14 +0,0 @@
1
-
2
- recipes:
3
-
4
- - product: :clean
5
- method*: |
6
- rm_rf '**/*.rbc', 'test.log'
7
-
8
- - product: :ruby_test
9
- method*: |
10
- sys 'ruby test_all.rb 2>&1 | tee test.log'
11
-
12
- - product: :rubinius_test
13
- method*: |
14
- sys 'rubinius test_all.rb 2>&1 | tee test.log'
@@ -1,45 +0,0 @@
1
- ###
2
- ### $Rev: 30 $
3
- ### 0.6.2
4
- ### copyright(c) 2007-2008 kuwata-lab.com all rights reserved.
5
- ###
6
-
7
- require 'test/unit'
8
- require 'tempfile'
9
-
10
-
11
- module Test
12
- module Unit
13
- class TestCase
14
-
15
- def assert_text_equal(expected, actual, message=nil, diffopt='-u', flag_cut=true)
16
- if expected == actual
17
- assert(true)
18
- return
19
- end
20
- if expected && actual && (expected[-1] != ?\n || actual[-1] != ?\n)
21
- expected += "\n"
22
- actual += "\n"
23
- end
24
- begin
25
- expfile = Tempfile.new(".expected.")
26
- expfile.write(expected); expfile.flush()
27
- actfile = Tempfile.new(".actual.")
28
- actfile.write(actual); actfile.flush()
29
- diff = `diff #{diffopt} #{expfile.path} #{actfile.path}`
30
- ensure
31
- expfile.close(true) if expfile
32
- actfile.close(true) if actfile
33
- end
34
- # cut 1st & 2nd lines
35
- message = (flag_cut ? diff.gsub(/\A.*\n.*\n/, '') : diff) unless message
36
- #raise Test::Unit::AssertionFailedError.new(message)
37
- assert_block(message) { false } # or assert(false, message)
38
- end
39
-
40
- alias assert_equal_with_diff assert_text_equal # for compatibility
41
- alias assert_text_equals assert_text_equal # for typo
42
-
43
- end
44
- end
45
- end
@@ -1,27 +0,0 @@
1
- <html>
2
- <body>
3
-
4
- <?rb ## if variable '@header_part' is defined then print it, ?>
5
- <?rb ## else print default header part. ?>
6
- <div id="header">
7
- <?rb unless captured_as(:header_part) ?>
8
- <img src="img/logo.png" alt="logo" ?>
9
- <?rb end ?>
10
- </div>
11
-
12
- <?rb ## main content part ?>
13
- <div id="content">
14
- <?rb _buf << @content_part ?>
15
- </div>
16
-
17
- <?rb ## if variable '@footer_part' is defined then print it, ?>
18
- <?rb ## else print default footer part. ?>
19
- <div id="footer">
20
- <?rb unless captured_as(:footer_part) ?>
21
- <hr />
22
- <em>webmaster@example.com</em>
23
- <?rb end ?>
24
- </div>
25
-
26
- </body>
27
- </html>
@@ -1,9 +0,0 @@
1
- <table>
2
- <tbody>
3
- <?rb for i in (1..100) ?>
4
- <tr id="row#{i}">
5
- <td>#{i}</td>
6
- </tr>
7
- <?rb end ?>
8
- </tbody>
9
- </table>
@@ -1,77 +0,0 @@
1
- require 'tenjin'
2
-
3
- ##
4
- ## message catalog to translate message
5
- ##
6
- MESSAGE_CATALOG = {
7
- 'en' => { 'Hello' => 'Hello',
8
- 'Good bye'=> 'Good bye', },
9
- 'fr' => { 'Hello' => 'Bonjour',
10
- 'Good bye'=> 'Au revoir', },
11
- }
12
-
13
-
14
- ##
15
- ## add translation method to Context class
16
- ##
17
- class Tenjin::Context
18
-
19
- def _(message_key)
20
- message_dict = MESSAGE_CATALOG[@_lang]
21
- return message_key unless message_dict
22
- return message_dict[message_key] || message_key
23
- end
24
-
25
- end
26
-
27
-
28
- ##
29
- ## engine class which supports M17N
30
- ##
31
- class M17NEngine < Tenjin::Engine
32
-
33
- attr_accessor :lang
34
-
35
- ## constructor takes ':lang' options
36
- def initialize(properties={})
37
- super(properties)
38
- @lang = properties[:lang] || 'en' # set language
39
- end
40
-
41
- ## change cache filename to 'file.html.lang.cache'
42
- def cachename(filename)
43
- return "#{filename}.#{@lang}.cache"
44
- end
45
-
46
- ## set language to context object
47
- def hook_context(context)
48
- context = super(context)
49
- context['_lang'] = @lang
50
- return context
51
- end
52
-
53
- end
54
-
55
-
56
- ##
57
- ## test program
58
- ##
59
- if $0 == __FILE__
60
-
61
- template_name = 'ex8-m18n.rbhtml'
62
- context = { :username => 'World' }
63
-
64
- ## engine for english
65
- engine = M17NEngine.new(:preprocess=>true)
66
- output = engine.render(template_name, context) # same template
67
- puts "--- lang: %s ---" % engine.lang
68
- puts output
69
- puts
70
-
71
- ## engine for French
72
- engine = M17NEngine.new(:preprocess=>true, :lang=>'fr')
73
- output = engine.render(template_name, context) # same template
74
- puts "--- lang: %s ---" % engine.lang
75
- puts output
76
-
77
- end
@@ -1,3 +0,0 @@
1
- <?rb for item in @items ?>
2
- <p>${item}</p>
3
- <?rb end ?>
@@ -1,5 +0,0 @@
1
- <?rb @title = 'Document Title' ?>
2
- <?rb @url = '/next/page' ?>
3
- <table>
4
- ...content...
5
- </table>
@@ -1,2 +0,0 @@
1
- <?rb @_layout = :layout8_xhtml ?>
2
- <h1>Hello World!</h1>
@@ -1,7 +0,0 @@
1
- @items = [ '<FOO>', '&BAR', '"BAZ"' ]
2
- @webmaster_email = 'webmaster@example.com'
3
- @menu = [
4
- {'name'=> 'Top', 'url'=> '/' },
5
- {'name'=> 'Products', 'url'=> '/prod' },
6
- {'name'=> 'Support', 'url'=> '/support' },
7
- ]
@@ -1,5 +0,0 @@
1
- @text = "foo"
2
- @num = 3.14
3
- @flag = true
4
- @items = ["foo", "bar", "baz"]
5
- @hash = {:x=>1, :y=>2}
@@ -1,10 +0,0 @@
1
- text: foo
2
- num: 3.14
3
- flag: yes
4
- items:
5
- - foo
6
- - bar
7
- - baz
8
- hash:
9
- x: 1
10
- y: 2
@@ -1,6 +0,0 @@
1
- Hello #{@name}!
2
- <ul>
3
- <?rb for item in @items ?>
4
- <li>${item}</li>
5
- <?rb end ?>
6
- </ul>
@@ -1,7 +0,0 @@
1
- $ rbtenjin -c "@name='World'; @items=['<AAA>','B&B','\"CCC\"']" ex.rbhtml
2
- Hello World!
3
- <ul>
4
- <li>&lt;AAA&gt;</li>
5
- <li>B&amp;B</li>
6
- <li>&quot;CCC&quot;</li>
7
- </ul>
@@ -1,5 +0,0 @@
1
- require 'tenjin'
2
- engine = Tenjin::Engine.new()
3
- context = { :name=>'World', :items=>['<AAA>', 'B&B', '"CCC"'] }
4
- output = engine.render('ex.rbhtml', context)
5
- print output
@@ -1,7 +0,0 @@
1
- $ ruby ex.script
2
- Hello World!
3
- <ul>
4
- <li>&lt;AAA&gt;</li>
5
- <li>B&amp;B</li>
6
- <li>&quot;CCC&quot;</li>
7
- </ul>
@@ -1,8 +0,0 @@
1
- $ rbtenjin -s ex.rbhtml
2
- _buf = ''; _buf << %Q`Hello #{@name}!
3
- <ul>\n`
4
- for item in @items
5
- _buf << %Q` <li>#{escape((item).to_s)}</li>\n`
6
- end
7
- _buf << %Q`</ul>\n`
8
- _buf.to_s
@@ -1,12 +0,0 @@
1
- <table>
2
- <tbody>
3
- <?rb i = 0 ?>
4
- <?rb for item in ['<foo>', 'bar&bar', '"baz"'] ?>
5
- <?rb i += 1 ?>
6
- <tr>
7
- <td>#{item}</td>
8
- <td>${item}</td>
9
- </tr>
10
- <?rb end ?>
11
- <tbody>
12
- </table>
@@ -1,17 +0,0 @@
1
- $ rbtenjin example1.rbhtml
2
- <table>
3
- <tbody>
4
- <tr>
5
- <td><foo></td>
6
- <td>&lt;foo&gt;</td>
7
- </tr>
8
- <tr>
9
- <td>bar&bar</td>
10
- <td>bar&amp;bar</td>
11
- </tr>
12
- <tr>
13
- <td>"baz"</td>
14
- <td>&quot;baz&quot;</td>
15
- </tr>
16
- <tbody>
17
- </table>
@@ -1,4 +0,0 @@
1
- <?xml version="1.0"?>
2
- <?rb #@ARGS title, name ?>
3
- <h1>${title}</h1>
4
- <p>Hello ${name}!</p>
@@ -1,6 +0,0 @@
1
- $ rbtenjin -s example10.rbhtml
2
- _buf = ''; _buf << %Q`<?xml version="1.0"?>\n`
3
- title = @title; name = @name;
4
- _buf << %Q`<h1>#{escape((title).to_s)}</h1>
5
- <p>Hello #{escape((name).to_s)}!</p>\n`
6
- _buf.to_s
@@ -1,5 +0,0 @@
1
- <p>
2
- <?rb #@ARGS x ?>
3
- x = #{x}
4
- y = #{y} # NameError
5
- </p>
@@ -1,2 +0,0 @@
1
- $ rbtenjin -c '@x=10;@y=20' example11.rbhtml
2
- example12.rbhtml:4:in `_render': undefined local variable or method `y' (NameError)
@@ -1,10 +0,0 @@
1
- $ rbtenjin -P example12.rbhtml
2
- <?rb chk = { @params['state'] => ' selected="selected"' } ?>
3
- <select name="state">
4
- <option value="">-</option>
5
- <option value="CA"#{chk["CA"]}>California</option>
6
- <option value="FL"#{chk["FL"]}>Florida</option>
7
- <option value="HI"#{chk["HI"]}>Hawaii</option>
8
- <option value="NY"#{chk["NY"]}>New York</option>
9
- <option value="TX"#{chk["TX"]}>Texas</option>
10
- </select>
@@ -1,10 +0,0 @@
1
- $ rbtenjin --preprocess -sb example12.rbhtml
2
- chk = { @params['state'] => ' selected="selected"' }
3
- _buf << %Q`<select name="state">
4
- <option value="">-</option>
5
- <option value="CA"#{chk["CA"]}>California</option>
6
- <option value="FL"#{chk["FL"]}>Florida</option>
7
- <option value="HI"#{chk["HI"]}>Hawaii</option>
8
- <option value="NY"#{chk["NY"]}>New York</option>
9
- <option value="TX"#{chk["TX"]}>Texas</option>
10
- </select>\n`
@@ -1,6 +0,0 @@
1
- <?RB require 'cgi' ?>
2
- <?RB ## ex. link_to('Show', '/show/1') => <a href="/show/1">Show</a> ?>
3
- <?RB def link_to(label, url) ?>
4
- <?RB return "<a href=\"#{CGI.unescape(url)}\">#{label}</a>" ?>
5
- <?RB end ?>
6
- #{{link_to 'Show '+_P('@params["name"]'), '/items/show/'+_p('@params["id"]')}}
@@ -1,2 +0,0 @@
1
- $ rbtenjin -P example13.rbhtml
2
- <a href="/items/show/#{@params["id"]}">Show ${@params["name"]}</a>
@@ -1,2 +0,0 @@
1
- $ rbtenjin --preprocess -sb example13.rbhtml
2
- _buf << %Q`<a href="/items/show/#{@params["id"]}">Show #{escape((@params["name"]).to_s)}</a>\n`
@@ -1,32 +0,0 @@
1
- ## template file
2
- filename = 'example14.rbhtml'
3
-
4
- ## convert into ruby code
5
- require 'tenjin'
6
- template = Tenjin::Template.new(filename)
7
- ## or
8
- # template = Tenjin::Template.new()
9
- # script = template.convert_file(filename)
10
- ## or
11
- # template = Tenjin::Template.new()
12
- # input = File.read(filename)
13
- # script = template.convert(input, filename) # filename is optional
14
-
15
- ## show converted ruby code
16
- puts "---- ruby code ----"
17
- puts template.script
18
-
19
- ## evaluate ruby code
20
- hash = {:title=>'rbTenjin Example', :items=>['<AAA>','B&B','"CCC"']}
21
- output = template.render(hash)
22
- puts "---- output ----"
23
- puts output
24
- ## or
25
- #hash = {:title=>'rbTenjin Example', :items=>['<AAA>','B&B','"CCC"']}
26
- #context = Tenjin::Context.new(hash)
27
- #output = template.render(context)
28
- ## or
29
- # context = Tenjin::Context.new
30
- # context[:title] = 'rbTenjin Example'
31
- # context[:items] = ['<AAA>','B&B','"CCC"']
32
- # output = template.render(context)
@@ -1,6 +0,0 @@
1
- <h1>#{@title}</h1>
2
- <ul>
3
- <?rb for item in @items ?>
4
- <li>${item}</li>
5
- <?rb end ?>
6
- </ul>
@@ -1,15 +0,0 @@
1
- $ ruby example14.rb
2
- ---- ruby code ----
3
- _buf << %Q`<h1>#{@title}</h1>
4
- <ul>\n`
5
- for item in @items
6
- _buf << %Q` <li>#{escape((item).to_s)}</li>\n`
7
- end
8
- _buf << %Q`</ul>\n`
9
- ---- output ----
10
- <h1>rbTenjin Example</h1>
11
- <ul>
12
- <li>&lt;AAA&gt;</li>
13
- <li>B&amp;B</li>
14
- <li>&quot;CCC&quot;</li>
15
- </ul>
@@ -1,10 +0,0 @@
1
- require 'tenjin'
2
- filename = 'example14.rbhtml'
3
- template = Tenjin::Template.new(filename, :escapefunc=>'CGI.escapeHTML')
4
- print template.script, "\n"
5
-
6
- require 'cgi'
7
- title = 'rbTenjin Example'
8
- items = ['<foo>', '&bar', '"baz"']
9
- output = template.render(:title=>title, :items=>items)
10
- print output