tenjin 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (170) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.txt +54 -0
  3. data/benchmark/bench.rb +502 -0
  4. data/benchmark/bench_context.rb +17 -0
  5. data/benchmark/bench_context.yaml +141 -0
  6. data/benchmark/templates/_footer.html +4 -0
  7. data/benchmark/templates/_header.html +52 -0
  8. data/benchmark/templates/bench_eruby.rhtml +29 -0
  9. data/benchmark/templates/bench_tenjin.rbhtml +29 -0
  10. data/bin/rbtenjin +449 -0
  11. data/doc-api/classes/Tenjin.html +141 -0
  12. data/doc-api/classes/Tenjin/ArrayBufferTemplate.html +270 -0
  13. data/doc-api/classes/Tenjin/BaseContext.html +312 -0
  14. data/doc-api/classes/Tenjin/Context.html +126 -0
  15. data/doc-api/classes/Tenjin/ContextHelper.html +433 -0
  16. data/doc-api/classes/Tenjin/Engine.html +616 -0
  17. data/doc-api/classes/Tenjin/ErubisTemplate.html +166 -0
  18. data/doc-api/classes/Tenjin/HtmlHelper.html +359 -0
  19. data/doc-api/classes/Tenjin/Preprocessor.html +242 -0
  20. data/doc-api/classes/Tenjin/Template.html +916 -0
  21. data/doc-api/created.rid +1 -0
  22. data/doc-api/files/README_txt.html +185 -0
  23. data/doc-api/files/lib/tenjin_rb.html +136 -0
  24. data/doc-api/fr_class_index.html +36 -0
  25. data/doc-api/fr_file_index.html +28 -0
  26. data/doc-api/fr_method_index.html +89 -0
  27. data/doc-api/index.html +24 -0
  28. data/doc-api/rdoc-style.css +208 -0
  29. data/doc/docstyle.css +188 -0
  30. data/doc/examples.html +312 -0
  31. data/doc/faq.html +909 -0
  32. data/doc/users-guide.html +1691 -0
  33. data/lib/tenjin.rb +959 -0
  34. data/setup.rb +1331 -0
  35. data/tenjin.gemspec +58 -0
  36. data/test/assert-text-equal.rb +45 -0
  37. data/test/data/examples/form/create.rbhtml +4 -0
  38. data/test/data/examples/form/form.rbhtml +14 -0
  39. data/test/data/examples/form/layout.rbhtml +8 -0
  40. data/test/data/examples/form/main.rb +9 -0
  41. data/test/data/examples/form/main.result +21 -0
  42. data/test/data/examples/form/update.rbhtml +4 -0
  43. data/test/data/examples/preprocessing/helper.rb +16 -0
  44. data/test/data/examples/preprocessing/main.rb +11 -0
  45. data/test/data/examples/preprocessing/main.result +17 -0
  46. data/test/data/examples/preprocessing/select.rbhtml +15 -0
  47. data/test/data/examples/preprocessing/select_P.result +18 -0
  48. data/test/data/examples/table/table.rb +9 -0
  49. data/test/data/examples/table/table.rbhtml +16 -0
  50. data/test/data/examples/table/table.result +20 -0
  51. data/test/data/examples/table/table_s.result +18 -0
  52. data/test/data/faq/ex1.rbhtml +5 -0
  53. data/test/data/faq/ex10-baselayout.rbhtml +27 -0
  54. data/test/data/faq/ex10-content.rbhtml +12 -0
  55. data/test/data/faq/ex10-customlayout.rbhtml +11 -0
  56. data/test/data/faq/ex10_inherit.result +25 -0
  57. data/test/data/faq/ex11-bench.rb +28 -0
  58. data/test/data/faq/ex11-content.rbhtml +9 -0
  59. data/test/data/faq/ex11-layout1.rbhtml +5 -0
  60. data/test/data/faq/ex11-layout2.rbhtml +6 -0
  61. data/test/data/faq/ex11.rb +5 -0
  62. data/test/data/faq/ex11.rbhtml +8 -0
  63. data/test/data/faq/ex11.source +11 -0
  64. data/test/data/faq/ex11_arraybuffer.result +15 -0
  65. data/test/data/faq/ex1_chksyntax.result +3 -0
  66. data/test/data/faq/ex2-content.rbhtml +3 -0
  67. data/test/data/faq/ex2-layout.rbhtml +11 -0
  68. data/test/data/faq/ex2_removenl.result +19 -0
  69. data/test/data/faq/ex3.rb +4 -0
  70. data/test/data/faq/ex3.rbhtml +1 -0
  71. data/test/data/faq/ex3_escapefunc1.result +2 -0
  72. data/test/data/faq/ex3_escapefunc2.result +2 -0
  73. data/test/data/faq/ex5.rbhtml +7 -0
  74. data/test/data/faq/ex5_template_args.source +9 -0
  75. data/test/data/faq/ex6-content.rhtml +6 -0
  76. data/test/data/faq/ex6-layout.rhtml +6 -0
  77. data/test/data/faq/ex6.rb +10 -0
  78. data/test/data/faq/ex6_eruby.result +12 -0
  79. data/test/data/faq/ex7-expr-pattern.rb +34 -0
  80. data/test/data/faq/ex7-expr-pattern.rbhtml +3 -0
  81. data/test/data/faq/ex7_expr_pattern.result +4 -0
  82. data/test/data/faq/ex8-m18n.rb +77 -0
  83. data/test/data/faq/ex8-m18n.rbhtml +4 -0
  84. data/test/data/faq/ex8_m18n.result +10 -0
  85. data/test/data/faq/ex9-baselayout.rbhtml +8 -0
  86. data/test/data/faq/ex9-content.rbhtml +6 -0
  87. data/test/data/faq/ex9-mylayout.rbhtml +5 -0
  88. data/test/data/faq/ex9_changelayout.result +11 -0
  89. data/test/data/users_guide/content6.rbhtml +3 -0
  90. data/test/data/users_guide/content7.rbhtml +5 -0
  91. data/test/data/users_guide/content8.rbhtml +2 -0
  92. data/test/data/users_guide/contextdata.rb +7 -0
  93. data/test/data/users_guide/datafile.rb +5 -0
  94. data/test/data/users_guide/datafile.yaml +10 -0
  95. data/test/data/users_guide/ex.rbhtml +6 -0
  96. data/test/data/users_guide/ex.result +7 -0
  97. data/test/data/users_guide/ex.script +5 -0
  98. data/test/data/users_guide/ex_script.result +7 -0
  99. data/test/data/users_guide/ex_source.result +8 -0
  100. data/test/data/users_guide/example1.rbhtml +12 -0
  101. data/test/data/users_guide/example1.result +17 -0
  102. data/test/data/users_guide/example10.rbhtml +4 -0
  103. data/test/data/users_guide/example10_template_args.result +6 -0
  104. data/test/data/users_guide/example11.rbhtml +5 -0
  105. data/test/data/users_guide/example11_template_args_result +2 -0
  106. data/test/data/users_guide/example12.rbhtml +12 -0
  107. data/test/data/users_guide/example12_preprocessed.result +10 -0
  108. data/test/data/users_guide/example12_preprocessed_source.result +10 -0
  109. data/test/data/users_guide/example13.rbhtml +6 -0
  110. data/test/data/users_guide/example13_preprocessed.result +2 -0
  111. data/test/data/users_guide/example13_preprocessed_source.result +2 -0
  112. data/test/data/users_guide/example14.rb +32 -0
  113. data/test/data/users_guide/example14.rbhtml +6 -0
  114. data/test/data/users_guide/example14_tmplclass.result +15 -0
  115. data/test/data/users_guide/example15.rb +10 -0
  116. data/test/data/users_guide/example15_escapefunc.result +14 -0
  117. data/test/data/users_guide/example16.rbhtml +4 -0
  118. data/test/data/users_guide/example16a.rb +10 -0
  119. data/test/data/users_guide/example16a.result +4 -0
  120. data/test/data/users_guide/example16b.rb +13 -0
  121. data/test/data/users_guide/example16b.result +4 -0
  122. data/test/data/users_guide/example16c.rb +12 -0
  123. data/test/data/users_guide/example16c.result +4 -0
  124. data/test/data/users_guide/example1_S.result +14 -0
  125. data/test/data/users_guide/example1_SXNC.result +10 -0
  126. data/test/data/users_guide/example1_source.result +14 -0
  127. data/test/data/users_guide/example2.rbhtml +3 -0
  128. data/test/data/users_guide/example2_sb.result2 +9 -0
  129. data/test/data/users_guide/example3.rbhtml +5 -0
  130. data/test/data/users_guide/example3_syntaxcheck.result +2 -0
  131. data/test/data/users_guide/example4.rbhtml +13 -0
  132. data/test/data/users_guide/example4_datafile_rb.result +13 -0
  133. data/test/data/users_guide/example4_yaml.result +13 -0
  134. data/test/data/users_guide/example5.rbhtml +9 -0
  135. data/test/data/users_guide/example5_datastr_rb.result +9 -0
  136. data/test/data/users_guide/example5_datastr_yaml.result +9 -0
  137. data/test/data/users_guide/example6.rbhtml +19 -0
  138. data/test/data/users_guide/example6_layout.result +29 -0
  139. data/test/data/users_guide/example6_nested.result +28 -0
  140. data/test/data/users_guide/example7_layout2.result +13 -0
  141. data/test/data/users_guide/example8_layout3.result +8 -0
  142. data/test/data/users_guide/example9.rbhtml +18 -0
  143. data/test/data/users_guide/example9_capture.result +26 -0
  144. data/test/data/users_guide/footer.html +5 -0
  145. data/test/data/users_guide/footer.rbhtml +4 -0
  146. data/test/data/users_guide/layout6.rbhtml +17 -0
  147. data/test/data/users_guide/layout7.rbhtml +9 -0
  148. data/test/data/users_guide/layout8_html.rbhtml +5 -0
  149. data/test/data/users_guide/layout8_xhtml.rbhtml +6 -0
  150. data/test/data/users_guide/layout9.rbhtml +25 -0
  151. data/test/data/users_guide/sidemenu.rbhtml +5 -0
  152. data/test/data/users_guide/user_app.cgi +39 -0
  153. data/test/data/users_guide/user_app.result +30 -0
  154. data/test/data/users_guide/user_create.rbhtml +6 -0
  155. data/test/data/users_guide/user_edit.rbhtml +7 -0
  156. data/test/data/users_guide/user_form.rbhtml +10 -0
  157. data/test/data/users_guide/user_layout.rbhtml +16 -0
  158. data/test/test_all.rb +23 -0
  159. data/test/test_engine.rb +526 -0
  160. data/test/test_engine.yaml +2039 -0
  161. data/test/test_examples.rb +81 -0
  162. data/test/test_faq.rb +60 -0
  163. data/test/test_htmlhelper.rb +78 -0
  164. data/test/test_main.rb +564 -0
  165. data/test/test_main.yaml +174 -0
  166. data/test/test_template.rb +113 -0
  167. data/test/test_template.yaml +1244 -0
  168. data/test/test_users_guide.rb +75 -0
  169. data/test/testcase-helper.rb +166 -0
  170. metadata +226 -0
@@ -0,0 +1,126 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: Tenjin::Context</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">Tenjin::Context</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/lib/tenjin_rb.html">
59
+ lib/tenjin.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ <a href="BaseContext.html">
69
+ BaseContext
70
+ </a>
71
+ </td>
72
+ </tr>
73
+ </table>
74
+ </div>
75
+ <!-- banner header -->
76
+
77
+ <div id="bodyContent">
78
+
79
+
80
+
81
+ <div id="contextContent">
82
+
83
+ <div id="description">
84
+ <p>
85
+ context class for <a href="Template.html">Template</a>
86
+ </p>
87
+
88
+ </div>
89
+
90
+
91
+ </div>
92
+
93
+
94
+ </div>
95
+
96
+
97
+ <!-- if includes -->
98
+ <div id="includes">
99
+ <h3 class="section-bar">Included Modules</h3>
100
+
101
+ <div id="includes-list">
102
+ <span class="include-name"><a href="HtmlHelper.html">HtmlHelper</a></span>
103
+ </div>
104
+ </div>
105
+
106
+ <div id="section">
107
+
108
+
109
+
110
+
111
+
112
+
113
+
114
+
115
+ <!-- if method_list -->
116
+
117
+
118
+ </div>
119
+
120
+
121
+ <div id="validator-badges">
122
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
123
+ </div>
124
+
125
+ </body>
126
+ </html>
@@ -0,0 +1,433 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Module: Tenjin::ContextHelper</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Module</strong></td>
53
+ <td class="class-name-in-header">Tenjin::ContextHelper</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/lib/tenjin_rb.html">
59
+ lib/tenjin.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ </table>
66
+ </div>
67
+ <!-- banner header -->
68
+
69
+ <div id="bodyContent">
70
+
71
+
72
+
73
+ <div id="contextContent">
74
+
75
+ <div id="description">
76
+ <p>
77
+ helper module for <a href="BaseContext.html">BaseContext</a> class
78
+ </p>
79
+
80
+ </div>
81
+
82
+
83
+ </div>
84
+
85
+ <div id="method-list">
86
+ <h3 class="section-bar">Methods</h3>
87
+
88
+ <div class="name-list">
89
+ <a href="#M000015">_P</a>&nbsp;&nbsp;
90
+ <a href="#M000016">_decode_params</a>&nbsp;&nbsp;
91
+ <a href="#M000014">_p</a>&nbsp;&nbsp;
92
+ <a href="#M000013">captured_as</a>&nbsp;&nbsp;
93
+ <a href="#M000010">echo</a>&nbsp;&nbsp;
94
+ <a href="#M000009">import</a>&nbsp;&nbsp;
95
+ <a href="#M000011">start_capture</a>&nbsp;&nbsp;
96
+ <a href="#M000012">stop_capture</a>&nbsp;&nbsp;
97
+ </div>
98
+ </div>
99
+
100
+ </div>
101
+
102
+
103
+ <!-- if includes -->
104
+
105
+ <div id="section">
106
+
107
+
108
+
109
+
110
+
111
+ <div id="attribute-list">
112
+ <h3 class="section-bar">Attributes</h3>
113
+
114
+ <div class="name-list">
115
+ <table>
116
+ <tr class="top-aligned-row context-row">
117
+ <td class="context-item-name">_buf</td>
118
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
119
+ <td class="context-item-desc"></td>
120
+ </tr>
121
+ <tr class="top-aligned-row context-row">
122
+ <td class="context-item-name">_engine</td>
123
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
124
+ <td class="context-item-desc"></td>
125
+ </tr>
126
+ <tr class="top-aligned-row context-row">
127
+ <td class="context-item-name">_layout</td>
128
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
129
+ <td class="context-item-desc"></td>
130
+ </tr>
131
+ </table>
132
+ </div>
133
+ </div>
134
+
135
+
136
+
137
+ <!-- if method_list -->
138
+ <div id="methods">
139
+ <h3 class="section-bar">Public Instance methods</h3>
140
+
141
+ <div id="method-M000015" class="method-detail">
142
+ <a name="M000015"></a>
143
+
144
+ <div class="method-heading">
145
+ <a href="#M000015" class="method-signature">
146
+ <span class="method-name">_P</span><span class="method-args">(arg)</span>
147
+ </a>
148
+ </div>
149
+
150
+ <div class="method-description">
151
+ <p>
152
+ ex. <a
153
+ href="ContextHelper.html#M000015">_P</a>(&quot;item[&#8216;name&#8217;]&quot;)
154
+ =&gt; ${item[&#8216;name&#8217;]}
155
+ </p>
156
+ <p><a class="source-toggle" href="#"
157
+ onclick="toggleCode('M000015-source');return false;">[Source]</a></p>
158
+ <div class="method-source-code" id="M000015-source">
159
+ <pre>
160
+ <span class="ruby-comment cmt"># File lib/tenjin.rb, line 201</span>
161
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">_P</span>(<span class="ruby-identifier">arg</span>)
162
+ <span class="ruby-keyword kw">return</span> <span class="ruby-node">&quot;&lt;`$#{arg}$`&gt;&quot;</span> <span class="ruby-comment cmt"># decoded into ${...} by preprocessor</span>
163
+ <span class="ruby-keyword kw">end</span>
164
+ </pre>
165
+ </div>
166
+ </div>
167
+ </div>
168
+
169
+ <div id="method-M000016" class="method-detail">
170
+ <a name="M000016"></a>
171
+
172
+ <div class="method-heading">
173
+ <a href="#M000016" class="method-signature">
174
+ <span class="method-name">_decode_params</span><span class="method-args">(s)</span>
175
+ </a>
176
+ </div>
177
+
178
+ <div class="method-description">
179
+ <p>
180
+ decode &lt;`#&#8230;#`&gt; and &lt;`$&#8230;$`&gt; into #{&#8230;} and
181
+ ${&#8230;}
182
+ </p>
183
+ <p><a class="source-toggle" href="#"
184
+ onclick="toggleCode('M000016-source');return false;">[Source]</a></p>
185
+ <div class="method-source-code" id="M000016-source">
186
+ <pre>
187
+ <span class="ruby-comment cmt"># File lib/tenjin.rb, line 208</span>
188
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">_decode_params</span>(<span class="ruby-identifier">s</span>)
189
+ <span class="ruby-identifier">require</span> <span class="ruby-value str">'cgi'</span>
190
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">s</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">s</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">String</span>)
191
+ <span class="ruby-identifier">s</span> = <span class="ruby-identifier">s</span>.<span class="ruby-identifier">dup</span>
192
+ <span class="ruby-identifier">s</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/%3C%60%23(.*?)%23%60%3E/i</span><span class="ruby-identifier">m</span>) { <span class="ruby-node">&quot;\#\{#{CGI::unescape($1)}\}&quot;</span> }
193
+ <span class="ruby-identifier">s</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/%3C%60%24(.*?)%24%60%3E/i</span><span class="ruby-identifier">m</span>) { <span class="ruby-node">&quot;\$\{#{CGI::unescape($1)}\}&quot;</span> }
194
+ <span class="ruby-identifier">s</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/&amp;lt;`\#(.*?)\#`&amp;gt;/</span><span class="ruby-identifier">m</span>) { <span class="ruby-node">&quot;\#\{#{CGI::unescapeHTML($1)}\}&quot;</span> }
195
+ <span class="ruby-identifier">s</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/&amp;lt;`\$(.*?)\$`&amp;gt;/</span><span class="ruby-identifier">m</span>) { <span class="ruby-node">&quot;\$\{#{CGI::unescapeHTML($1)}\}&quot;</span> }
196
+ <span class="ruby-identifier">s</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/&lt;`\#(.*?)\#`&gt;/</span><span class="ruby-identifier">m</span>, <span class="ruby-value str">'#{\1}'</span>)
197
+ <span class="ruby-identifier">s</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/&lt;`\$(.*?)\$`&gt;/</span><span class="ruby-identifier">m</span>, <span class="ruby-value str">'${\1}'</span>)
198
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">s</span>
199
+ <span class="ruby-keyword kw">end</span>
200
+ </pre>
201
+ </div>
202
+ </div>
203
+ </div>
204
+
205
+ <div id="method-M000014" class="method-detail">
206
+ <a name="M000014"></a>
207
+
208
+ <div class="method-heading">
209
+ <a href="#M000014" class="method-signature">
210
+ <span class="method-name">_p</span><span class="method-args">(arg)</span>
211
+ </a>
212
+ </div>
213
+
214
+ <div class="method-description">
215
+ <p>
216
+ ex. <a
217
+ href="ContextHelper.html#M000014">_p</a>(&quot;item[&#8216;name&#8217;]&quot;)
218
+ =&gt; #{item[&#8216;name&#8217;]}
219
+ </p>
220
+ <p><a class="source-toggle" href="#"
221
+ onclick="toggleCode('M000014-source');return false;">[Source]</a></p>
222
+ <div class="method-source-code" id="M000014-source">
223
+ <pre>
224
+ <span class="ruby-comment cmt"># File lib/tenjin.rb, line 194</span>
225
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">_p</span>(<span class="ruby-identifier">arg</span>)
226
+ <span class="ruby-keyword kw">return</span> <span class="ruby-node">&quot;&lt;`\##{arg}\#`&gt;&quot;</span> <span class="ruby-comment cmt"># decoded into #{...} by preprocessor</span>
227
+ <span class="ruby-keyword kw">end</span>
228
+ </pre>
229
+ </div>
230
+ </div>
231
+ </div>
232
+
233
+ <div id="method-M000013" class="method-detail">
234
+ <a name="M000013"></a>
235
+
236
+ <div class="method-heading">
237
+ <a href="#M000013" class="method-signature">
238
+ <span class="method-name">captured_as</span><span class="method-args">(name)</span>
239
+ </a>
240
+ </div>
241
+
242
+ <div class="method-description">
243
+ <p>
244
+ if captured string is found then add it to _buf and return true, else
245
+ return false. this is a helper method for layout template.
246
+ </p>
247
+ <p><a class="source-toggle" href="#"
248
+ onclick="toggleCode('M000013-source');return false;">[Source]</a></p>
249
+ <div class="method-source-code" id="M000013-source">
250
+ <pre>
251
+ <span class="ruby-comment cmt"># File lib/tenjin.rb, line 184</span>
252
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">captured_as</span>(<span class="ruby-identifier">name</span>)
253
+ <span class="ruby-identifier">str</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">instance_variable_get</span>(<span class="ruby-node">&quot;@#{name}&quot;</span>)
254
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">str</span>
255
+ <span class="ruby-ivar">@_buf</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">str</span>
256
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
257
+ <span class="ruby-keyword kw">end</span>
258
+ </pre>
259
+ </div>
260
+ </div>
261
+ </div>
262
+
263
+ <div id="method-M000010" class="method-detail">
264
+ <a name="M000010"></a>
265
+
266
+ <div class="method-heading">
267
+ <a href="#M000010" class="method-signature">
268
+ <span class="method-name">echo</span><span class="method-args">(value)</span>
269
+ </a>
270
+ </div>
271
+
272
+ <div class="method-description">
273
+ <p>
274
+ add value into _buf. this is equivarent to &#8217;#{value}&#8217;.
275
+ </p>
276
+ <p><a class="source-toggle" href="#"
277
+ onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
278
+ <div class="method-source-code" id="M000010-source">
279
+ <pre>
280
+ <span class="ruby-comment cmt"># File lib/tenjin.rb, line 116</span>
281
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">echo</span>(<span class="ruby-identifier">value</span>)
282
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">_buf</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">value</span>
283
+ <span class="ruby-keyword kw">end</span>
284
+ </pre>
285
+ </div>
286
+ </div>
287
+ </div>
288
+
289
+ <div id="method-M000009" class="method-detail">
290
+ <a name="M000009"></a>
291
+
292
+ <div class="method-heading">
293
+ <a href="#M000009" class="method-signature">
294
+ <span class="method-name">import</span><span class="method-args">(template_name, _append_to_buf=true)</span>
295
+ </a>
296
+ </div>
297
+
298
+ <div class="method-description">
299
+ <p>
300
+ include template. &#8216;template_name&#8217; can be filename or short
301
+ name.
302
+ </p>
303
+ <p><a class="source-toggle" href="#"
304
+ onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
305
+ <div class="method-source-code" id="M000009-source">
306
+ <pre>
307
+ <span class="ruby-comment cmt"># File lib/tenjin.rb, line 108</span>
308
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">import</span>(<span class="ruby-identifier">template_name</span>, <span class="ruby-identifier">_append_to_buf</span>=<span class="ruby-keyword kw">true</span>)
309
+ <span class="ruby-identifier">_buf</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">_buf</span>
310
+ <span class="ruby-identifier">output</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">_engine</span>.<span class="ruby-identifier">render</span>(<span class="ruby-identifier">template_name</span>, <span class="ruby-identifier">context</span>=<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">layout</span>=<span class="ruby-keyword kw">false</span>)
311
+ <span class="ruby-identifier">_buf</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">output</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">_append_to_buf</span>
312
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">output</span>
313
+ <span class="ruby-keyword kw">end</span>
314
+ </pre>
315
+ </div>
316
+ </div>
317
+ </div>
318
+
319
+ <div id="method-M000011" class="method-detail">
320
+ <a name="M000011"></a>
321
+
322
+ <div class="method-heading">
323
+ <a href="#M000011" class="method-signature">
324
+ <span class="method-name">start_capture</span><span class="method-args">(varname=nil) {|| ...}</span>
325
+ </a>
326
+ </div>
327
+
328
+ <div class="method-description">
329
+ <p>
330
+ start capturing. returns captured string if block given, else return nil.
331
+ if block is not given, calling <a
332
+ href="ContextHelper.html#M000012">stop_capture</a>() is required.
333
+ </p>
334
+ <p>
335
+ ex. list.rbhtml
336
+ </p>
337
+ <pre>
338
+ &lt;html&gt;&lt;body&gt;
339
+ &lt;h1&gt;&lt;?rb start_capture(:title) do ?&gt;Document Title&lt;?rb end ?&gt;&lt;/h1&gt;
340
+ &lt;?rb start_capture(:content) ?&gt;
341
+ &lt;ul&gt;
342
+ &lt;?rb for item in list do ?&gt;
343
+ &lt;li&gt;${item}&lt;/li&gt;
344
+ &lt;?rb end ?&gt;
345
+ &lt;/ul&gt;
346
+ &lt;?rb stop_capture() ?&gt;
347
+ &lt;/body&gt;&lt;/html&gt;
348
+ </pre>
349
+ <p>
350
+ ex. layout.rbhtml
351
+ </p>
352
+ <pre>
353
+ &lt;?xml version=&quot;1.0&quot; ?&gt;
354
+ &lt;html xml:lang=&quot;en&quot;&gt;
355
+ &lt;head&gt;
356
+ &lt;title&gt;${@title}&lt;/title&gt;
357
+ &lt;/head&gt;
358
+ &lt;body&gt;
359
+ &lt;h1&gt;${@title}&lt;/h1&gt;
360
+ &lt;div id=&quot;content&quot;&gt;
361
+ &lt;?rb echo(@content) ?&gt;
362
+ &lt;/div&gt;
363
+ &lt;/body&gt;
364
+ &lt;/html&gt;
365
+ </pre>
366
+ <p><a class="source-toggle" href="#"
367
+ onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
368
+ <div class="method-source-code" id="M000011-source">
369
+ <pre>
370
+ <span class="ruby-comment cmt"># File lib/tenjin.rb, line 151</span>
371
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">start_capture</span>(<span class="ruby-identifier">varname</span>=<span class="ruby-keyword kw">nil</span>)
372
+ <span class="ruby-ivar">@_capture_varname</span> = <span class="ruby-identifier">varname</span>
373
+ <span class="ruby-ivar">@_start_position</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">_buf</span>.<span class="ruby-identifier">length</span>
374
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
375
+ <span class="ruby-keyword kw">yield</span>
376
+ <span class="ruby-identifier">output</span> = <span class="ruby-identifier">stop_capture</span>()
377
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">output</span>
378
+ <span class="ruby-keyword kw">else</span>
379
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
380
+ <span class="ruby-keyword kw">end</span>
381
+ <span class="ruby-keyword kw">end</span>
382
+ </pre>
383
+ </div>
384
+ </div>
385
+ </div>
386
+
387
+ <div id="method-M000012" class="method-detail">
388
+ <a name="M000012"></a>
389
+
390
+ <div class="method-heading">
391
+ <a href="#M000012" class="method-signature">
392
+ <span class="method-name">stop_capture</span><span class="method-args">(store_to_context=true)</span>
393
+ </a>
394
+ </div>
395
+
396
+ <div class="method-description">
397
+ <p>
398
+ stop capturing. returns captured string. see <a
399
+ href="ContextHelper.html#M000011">start_capture</a>()&#8217;s document.
400
+ </p>
401
+ <p><a class="source-toggle" href="#"
402
+ onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
403
+ <div class="method-source-code" id="M000012-source">
404
+ <pre>
405
+ <span class="ruby-comment cmt"># File lib/tenjin.rb, line 168</span>
406
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stop_capture</span>(<span class="ruby-identifier">store_to_context</span>=<span class="ruby-keyword kw">true</span>)
407
+ <span class="ruby-identifier">output</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">_buf</span>[<span class="ruby-ivar">@_start_position</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>]
408
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">_buf</span>[<span class="ruby-ivar">@_start_position</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>] = <span class="ruby-value str">''</span>
409
+ <span class="ruby-ivar">@_start_position</span> = <span class="ruby-keyword kw">nil</span>
410
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@_capture_varname</span>
411
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">instance_variable_set</span>(<span class="ruby-node">&quot;@#{@_capture_varname}&quot;</span>, <span class="ruby-identifier">output</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">store_to_context</span>
412
+ <span class="ruby-ivar">@_capture_varname</span> = <span class="ruby-keyword kw">nil</span>
413
+ <span class="ruby-keyword kw">end</span>
414
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">output</span>
415
+ <span class="ruby-keyword kw">end</span>
416
+ </pre>
417
+ </div>
418
+ </div>
419
+ </div>
420
+
421
+
422
+ </div>
423
+
424
+
425
+ </div>
426
+
427
+
428
+ <div id="validator-badges">
429
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
430
+ </div>
431
+
432
+ </body>
433
+ </html>