tenjin 0.6.0 → 0.6.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.
- data/CHANGES.txt +46 -0
- data/MIT-LICENSE +1 -1
- data/README.txt +7 -7
- data/bin/rbtenjin +2 -2
- data/doc-api/classes/Tenjin.html +2 -2
- data/doc-api/classes/Tenjin/ArrayBufferTemplate.html +28 -28
- data/doc-api/classes/Tenjin/BaseContext.html +61 -44
- data/doc-api/classes/Tenjin/ContextHelper.html +85 -57
- data/doc-api/classes/Tenjin/Engine.html +88 -88
- data/doc-api/classes/Tenjin/ErubisTemplate.html +7 -7
- data/doc-api/classes/Tenjin/Preprocessor.html +28 -28
- data/doc-api/classes/Tenjin/Template.html +142 -142
- data/doc-api/created.rid +1 -1
- data/doc-api/files/README_txt.html +10 -10
- data/doc-api/files/lib/tenjin_rb.html +2 -2
- data/doc-api/fr_method_index.html +55 -53
- data/doc/examples.html +2 -2
- data/doc/faq.html +2 -2
- data/doc/users-guide.html +47 -4
- data/examples/form/Makefile +5 -0
- data/examples/form/Rakefile +7 -0
- data/examples/form/create.rbhtml +4 -0
- data/examples/form/form.rbhtml +14 -0
- data/examples/form/layout.rbhtml +8 -0
- data/examples/form/main.rb +9 -0
- data/examples/form/update.rbhtml +4 -0
- data/examples/preprocessing/Makefile +8 -0
- data/examples/preprocessing/Rakefile +11 -0
- data/examples/preprocessing/helper.rb +16 -0
- data/examples/preprocessing/main.rb +11 -0
- data/examples/preprocessing/select.rbhtml +15 -0
- data/examples/table/Makefile +5 -0
- data/examples/table/Rakefile +7 -0
- data/examples/table/table.rb +9 -0
- data/examples/table/table.rbhtml +16 -0
- data/lib/tenjin.rb +28 -18
- data/setup.rb +861 -607
- data/tenjin.gemspec +16 -12
- data/test/assert-text-equal.rb +2 -2
- data/test/data/users_guide/example16d.rb +27 -0
- data/test/data/users_guide/example16d.result +4 -0
- data/test/test_all.rb +2 -2
- data/test/test_engine.rb +2 -2
- data/test/test_examples.rb +2 -2
- data/test/test_faq.rb +2 -2
- data/test/test_htmlhelper.rb +2 -2
- data/test/test_main.rb +2 -2
- data/test/test_template.rb +2 -2
- data/test/test_users_guide.rb +2 -2
- data/test/testcase-helper.rb +2 -2
- metadata +64 -35
data/doc-api/created.rid
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
Thu, 07 Feb 2008 11:07:39 +0900
|
@@ -56,7 +56,7 @@
|
|
56
56
|
</tr>
|
57
57
|
<tr class="top-aligned-row">
|
58
58
|
<td><strong>Last Update:</strong></td>
|
59
|
-
<td>
|
59
|
+
<td>Thu Feb 07 11:04:47 +0900 2008</td>
|
60
60
|
</tr>
|
61
61
|
</table>
|
62
62
|
</div>
|
@@ -71,25 +71,25 @@
|
|
71
71
|
<div id="description">
|
72
72
|
<h1>README</h1>
|
73
73
|
<table>
|
74
|
-
<tr><td valign="top">release:</td><td>0.6.
|
74
|
+
<tr><td valign="top">release:</td><td>0.6.1
|
75
75
|
|
76
76
|
</td></tr>
|
77
|
-
<tr><td valign="top">copyright:</td><td>copyright(c) 2007 kuwata-lab all rights reserved.
|
77
|
+
<tr><td valign="top">copyright:</td><td>copyright(c) 2007-2008 kuwata-lab.com all rights reserved.
|
78
78
|
|
79
79
|
</td></tr>
|
80
80
|
</table>
|
81
81
|
<h2>About</h2>
|
82
82
|
<p>
|
83
|
-
rbTenjin is a very fast and full-featured template engine
|
84
|
-
Ruby
|
85
|
-
|
83
|
+
rbTenjin is a very fast and full-featured template engine. You can embed
|
84
|
+
Ruby statements and expressions into your text file. rbTenjin converts it
|
85
|
+
into Ruby program and evaluate it.
|
86
86
|
</p>
|
87
87
|
<h2>Features</h2>
|
88
88
|
<ul>
|
89
89
|
<li>Very fast (twice faster than eruby and three times faster than ERB)
|
90
90
|
|
91
91
|
</li>
|
92
|
-
<li>Lightweight (only
|
92
|
+
<li>Lightweight (only a file which contains about 1000 lines)
|
93
93
|
|
94
94
|
</li>
|
95
95
|
<li>Not break HTML design because it uses XML Processing Instructions (PI) as
|
@@ -129,13 +129,13 @@ See doc/*.html for details.
|
|
129
129
|
$ sudo gem install tenjin
|
130
130
|
</pre>
|
131
131
|
</li>
|
132
|
-
<li>Else download rbtenjin-
|
132
|
+
<li>Else download rbtenjin-0.6.1.tar.bz2 and just copy
|
133
133
|
‘lib/tenjin.rb’ and ‘bin/rbtenjin’ into proper
|
134
134
|
directory.
|
135
135
|
|
136
136
|
<pre>
|
137
|
-
$ tar xjf rbtenjin-
|
138
|
-
$ cd rbtenjin-
|
137
|
+
$ tar xjf rbtenjin-0.6.1.tar.bz2
|
138
|
+
$ cd rbtenjin-0.6.1/
|
139
139
|
$ sudo copy lib/tenjin.rb /usr/local/lib/ruby/1.8/site_ruby/1.8/
|
140
140
|
$ sudo copy bin/rbtenjin /usr/local/bin/
|
141
141
|
</pre>
|
@@ -56,7 +56,7 @@
|
|
56
56
|
</tr>
|
57
57
|
<tr class="top-aligned-row">
|
58
58
|
<td><strong>Last Update:</strong></td>
|
59
|
-
<td>
|
59
|
+
<td>Wed Feb 06 12:44:46 +0900 2008</td>
|
60
60
|
</tr>
|
61
61
|
</table>
|
62
62
|
</div>
|
@@ -70,7 +70,7 @@
|
|
70
70
|
|
71
71
|
<div id="description">
|
72
72
|
<p>
|
73
|
-
copyright(c) 2007 kuwata-lab all rights reserved.
|
73
|
+
copyright(c) 2007-2008 kuwata-lab.com all rights reserved.
|
74
74
|
</p>
|
75
75
|
<p>
|
76
76
|
Permission is hereby granted, free of charge, to any person obtaining a
|
@@ -20,68 +20,70 @@
|
|
20
20
|
<div id="index">
|
21
21
|
<h1 class="section-bar">Methods</h1>
|
22
22
|
<div id="index-entries">
|
23
|
-
<a href="classes/Tenjin/BaseContext.html#
|
24
|
-
<a href="classes/Tenjin/BaseContext.html#
|
25
|
-
<a href="classes/Tenjin/ContextHelper.html#
|
26
|
-
<a href="classes/Tenjin/ContextHelper.html#
|
27
|
-
<a href="classes/Tenjin/ContextHelper.html#
|
28
|
-
<a href="classes/Tenjin/
|
29
|
-
<a href="classes/Tenjin/
|
30
|
-
<a href="classes/Tenjin/Template.html#
|
31
|
-
<a href="classes/Tenjin/Template.html#
|
32
|
-
<a href="classes/Tenjin/Template.html#
|
33
|
-
<a href="classes/Tenjin/Template.html#
|
34
|
-
<a href="classes/Tenjin/Engine.html#
|
35
|
-
<a href="classes/Tenjin/ContextHelper.html#
|
23
|
+
<a href="classes/Tenjin/BaseContext.html#M000024">[] (Tenjin::BaseContext)</a><br />
|
24
|
+
<a href="classes/Tenjin/BaseContext.html#M000025">[]= (Tenjin::BaseContext)</a><br />
|
25
|
+
<a href="classes/Tenjin/ContextHelper.html#M000016">_P (Tenjin::ContextHelper)</a><br />
|
26
|
+
<a href="classes/Tenjin/ContextHelper.html#M000017">_decode_params (Tenjin::ContextHelper)</a><br />
|
27
|
+
<a href="classes/Tenjin/ContextHelper.html#M000015">_p (Tenjin::ContextHelper)</a><br />
|
28
|
+
<a href="classes/Tenjin/Preprocessor.html#M000046">add_expr (Tenjin::Preprocessor)</a><br />
|
29
|
+
<a href="classes/Tenjin/Template.html#M000063">add_expr (Tenjin::Template)</a><br />
|
30
|
+
<a href="classes/Tenjin/Template.html#M000064">add_stmt (Tenjin::Template)</a><br />
|
31
|
+
<a href="classes/Tenjin/Template.html#M000061">add_text (Tenjin::Template)</a><br />
|
32
|
+
<a href="classes/Tenjin/Template.html#M000051">after_convert (Tenjin::Template)</a><br />
|
33
|
+
<a href="classes/Tenjin/Template.html#M000050">before_convert (Tenjin::Template)</a><br />
|
34
|
+
<a href="classes/Tenjin/Engine.html#M000036">cachename (Tenjin::Engine)</a><br />
|
35
|
+
<a href="classes/Tenjin/ContextHelper.html#M000014">captured_as (Tenjin::ContextHelper)</a><br />
|
36
36
|
<a href="classes/Tenjin/HtmlHelper.html#M000004">checked (Tenjin::HtmlHelper)</a><br />
|
37
|
-
<a href="classes/Tenjin/Template.html#
|
38
|
-
<a href="classes/Tenjin/Template.html#
|
39
|
-
<a href="classes/Tenjin/Template.html#
|
40
|
-
<a href="classes/Tenjin/Engine.html#
|
37
|
+
<a href="classes/Tenjin/Template.html#M000052">compile_stmt_pattern (Tenjin::Template)</a><br />
|
38
|
+
<a href="classes/Tenjin/Template.html#M000049">convert (Tenjin::Template)</a><br />
|
39
|
+
<a href="classes/Tenjin/Template.html#M000048">convert_file (Tenjin::Template)</a><br />
|
40
|
+
<a href="classes/Tenjin/Engine.html#M000037">create_template (Tenjin::Engine)</a><br />
|
41
41
|
<a href="classes/Tenjin/HtmlHelper.html#M000006">disabled (Tenjin::HtmlHelper)</a><br />
|
42
|
-
<a href="classes/Tenjin/BaseContext.html#
|
43
|
-
<a href="classes/Tenjin/ContextHelper.html#
|
42
|
+
<a href="classes/Tenjin/BaseContext.html#M000030">each (Tenjin::BaseContext)</a><br />
|
43
|
+
<a href="classes/Tenjin/ContextHelper.html#M000011">echo (Tenjin::ContextHelper)</a><br />
|
44
|
+
<a href="classes/Tenjin/ContextHelper.html#M000009">escape (Tenjin::ContextHelper)</a><br />
|
44
45
|
<a href="classes/Tenjin/HtmlHelper.html#M000002">escape (Tenjin::HtmlHelper)</a><br />
|
45
|
-
<a href="classes/Tenjin/
|
46
|
-
<a href="classes/Tenjin/Preprocessor.html#
|
47
|
-
<a href="classes/Tenjin/Template.html#M000060">escape_str (Tenjin::Template)</a><br />
|
46
|
+
<a href="classes/Tenjin/Template.html#M000062">escape_str (Tenjin::Template)</a><br />
|
47
|
+
<a href="classes/Tenjin/Preprocessor.html#M000045">escape_str (Tenjin::Preprocessor)</a><br />
|
48
48
|
<a href="classes/Tenjin/HtmlHelper.html#M000001">escape_xml (Tenjin::HtmlHelper)</a><br />
|
49
|
-
<a href="classes/Tenjin/ArrayBufferTemplate.html#
|
50
|
-
<a href="classes/Tenjin/
|
51
|
-
<a href="classes/Tenjin/
|
52
|
-
<a href="classes/Tenjin/Engine.html#
|
53
|
-
<a href="classes/Tenjin/Template.html#
|
54
|
-
<a href="classes/Tenjin/Engine.html#
|
55
|
-
<a href="classes/Tenjin/
|
56
|
-
<a href="classes/Tenjin/
|
49
|
+
<a href="classes/Tenjin/ArrayBufferTemplate.html#M000019">expr_pattern (Tenjin::ArrayBufferTemplate)</a><br />
|
50
|
+
<a href="classes/Tenjin/Template.html#M000055">expr_pattern (Tenjin::Template)</a><br />
|
51
|
+
<a href="classes/Tenjin/Preprocessor.html#M000044">expr_pattern (Tenjin::Preprocessor)</a><br />
|
52
|
+
<a href="classes/Tenjin/Engine.html#M000033">find_template_file (Tenjin::Engine)</a><br />
|
53
|
+
<a href="classes/Tenjin/Template.html#M000056">get_expr_and_escapeflag (Tenjin::Template)</a><br />
|
54
|
+
<a href="classes/Tenjin/Engine.html#M000040">get_template (Tenjin::Engine)</a><br />
|
55
|
+
<a href="classes/Tenjin/BaseContext.html#M000029">has_key? (Tenjin::BaseContext)</a><br />
|
56
|
+
<a href="classes/Tenjin/Engine.html#M000042">hook_context (Tenjin::Engine)</a><br />
|
57
|
+
<a href="classes/Tenjin/ContextHelper.html#M000010">import (Tenjin::ContextHelper)</a><br />
|
57
58
|
<a href="classes/Tenjin/BaseContext.html#M000027">key? (Tenjin::BaseContext)</a><br />
|
58
|
-
<a href="classes/Tenjin/
|
59
|
-
<a href="classes/Tenjin/
|
60
|
-
<a href="classes/Tenjin/
|
61
|
-
<a href="classes/Tenjin/Template.html#
|
59
|
+
<a href="classes/Tenjin/BaseContext.html#M000028">key? (Tenjin::BaseContext)</a><br />
|
60
|
+
<a href="classes/Tenjin/Engine.html#M000039">load_cachefile (Tenjin::Engine)</a><br />
|
61
|
+
<a href="classes/Tenjin/BaseContext.html#M000023">new (Tenjin::BaseContext)</a><br />
|
62
|
+
<a href="classes/Tenjin/Template.html#M000047">new (Tenjin::Template)</a><br />
|
63
|
+
<a href="classes/Tenjin/Engine.html#M000031">new (Tenjin::Engine)</a><br />
|
62
64
|
<a href="classes/Tenjin/HtmlHelper.html#M000007">nl2br (Tenjin::HtmlHelper)</a><br />
|
63
|
-
<a href="classes/Tenjin/
|
64
|
-
<a href="classes/Tenjin/
|
65
|
-
<a href="classes/Tenjin/Template.html#
|
66
|
-
<a href="classes/Tenjin/ErubisTemplate.html#
|
67
|
-
<a href="classes/Tenjin/ArrayBufferTemplate.html#
|
68
|
-
<a href="classes/Tenjin/ArrayBufferTemplate.html#
|
69
|
-
<a href="classes/Tenjin/Engine.html#
|
70
|
-
<a href="classes/Tenjin/Engine.html#
|
71
|
-
<a href="classes/Tenjin/Engine.html#
|
72
|
-
<a href="classes/Tenjin/Template.html#
|
65
|
+
<a href="classes/Tenjin/Template.html#M000057">parse_exprs (Tenjin::Template)</a><br />
|
66
|
+
<a href="classes/Tenjin/ArrayBufferTemplate.html#M000020">parse_exprs (Tenjin::ArrayBufferTemplate)</a><br />
|
67
|
+
<a href="classes/Tenjin/Template.html#M000054">parse_stmts (Tenjin::Template)</a><br />
|
68
|
+
<a href="classes/Tenjin/ErubisTemplate.html#M000018">parse_stmts (Tenjin::ErubisTemplate)</a><br />
|
69
|
+
<a href="classes/Tenjin/ArrayBufferTemplate.html#M000022">quote_expr (Tenjin::ArrayBufferTemplate)</a><br />
|
70
|
+
<a href="classes/Tenjin/ArrayBufferTemplate.html#M000021">quote_str (Tenjin::ArrayBufferTemplate)</a><br />
|
71
|
+
<a href="classes/Tenjin/Engine.html#M000034">read_template_file (Tenjin::Engine)</a><br />
|
72
|
+
<a href="classes/Tenjin/Engine.html#M000035">register_template (Tenjin::Engine)</a><br />
|
73
|
+
<a href="classes/Tenjin/Engine.html#M000041">render (Tenjin::Engine)</a><br />
|
74
|
+
<a href="classes/Tenjin/Template.html#M000065">render (Tenjin::Template)</a><br />
|
73
75
|
<a href="classes/Tenjin/HtmlHelper.html#M000005">selected (Tenjin::HtmlHelper)</a><br />
|
74
|
-
<a href="classes/Tenjin/ContextHelper.html#
|
75
|
-
<a href="classes/Tenjin/Template.html#
|
76
|
-
<a href="classes/Tenjin/Template.html#
|
77
|
-
<a href="classes/Tenjin/Template.html#
|
78
|
-
<a href="classes/Tenjin/Preprocessor.html#
|
79
|
-
<a href="classes/Tenjin/ContextHelper.html#
|
80
|
-
<a href="classes/Tenjin/Template.html#
|
81
|
-
<a href="classes/Tenjin/Engine.html#
|
76
|
+
<a href="classes/Tenjin/ContextHelper.html#M000012">start_capture (Tenjin::ContextHelper)</a><br />
|
77
|
+
<a href="classes/Tenjin/Template.html#M000059">start_text_part (Tenjin::Template)</a><br />
|
78
|
+
<a href="classes/Tenjin/Template.html#M000058">statement_hook (Tenjin::Template)</a><br />
|
79
|
+
<a href="classes/Tenjin/Template.html#M000053">stmt_pattern (Tenjin::Template)</a><br />
|
80
|
+
<a href="classes/Tenjin/Preprocessor.html#M000043">stmt_pattern (Tenjin::Preprocessor)</a><br />
|
81
|
+
<a href="classes/Tenjin/ContextHelper.html#M000013">stop_capture (Tenjin::ContextHelper)</a><br />
|
82
|
+
<a href="classes/Tenjin/Template.html#M000060">stop_text_part (Tenjin::Template)</a><br />
|
83
|
+
<a href="classes/Tenjin/Engine.html#M000038">store_cachefile (Tenjin::Engine)</a><br />
|
82
84
|
<a href="classes/Tenjin/HtmlHelper.html#M000003">tagattr (Tenjin::HtmlHelper)</a><br />
|
83
85
|
<a href="classes/Tenjin/HtmlHelper.html#M000008">text2html (Tenjin::HtmlHelper)</a><br />
|
84
|
-
<a href="classes/Tenjin/Engine.html#
|
86
|
+
<a href="classes/Tenjin/Engine.html#M000032">to_filename (Tenjin::Engine)</a><br />
|
85
87
|
<a href="classes/Tenjin/BaseContext.html#M000026">update (Tenjin::BaseContext)</a><br />
|
86
88
|
</div>
|
87
89
|
</div>
|
data/doc/examples.html
CHANGED
@@ -14,10 +14,10 @@
|
|
14
14
|
|
15
15
|
<div align="left"><h1>rbTenjin Examples</h1></div>
|
16
16
|
<div align="left">
|
17
|
-
last update: $Date: 2007-
|
17
|
+
last update: $Date: 2007-10-23 15:29:14 +0900 (Tue, 23 Oct 2007) $<br>
|
18
18
|
</div>
|
19
19
|
|
20
|
-
<p>Release: 0.6.
|
20
|
+
<p>Release: 0.6.1
|
21
21
|
</p>
|
22
22
|
<p>Table of Contents:
|
23
23
|
<ul>
|
data/doc/faq.html
CHANGED
@@ -14,10 +14,10 @@
|
|
14
14
|
|
15
15
|
<div align="left"><h1>rbTenjin FAQ</h1></div>
|
16
16
|
<div align="left">
|
17
|
-
last update: $Date:
|
17
|
+
last update: $Date: 2008-02-04 22:21:53 +0900 (Mon, 04 Feb 2008) $<br>
|
18
18
|
</div>
|
19
19
|
|
20
|
-
<p>Release: 0.6.
|
20
|
+
<p>Release: 0.6.1
|
21
21
|
</p>
|
22
22
|
<p>Table of contents:
|
23
23
|
<ul>
|
data/doc/users-guide.html
CHANGED
@@ -14,10 +14,10 @@
|
|
14
14
|
|
15
15
|
<div align="left"><h1>rbTenjin User's Guide</h1></div>
|
16
16
|
<div align="left">
|
17
|
-
last update: $Date:
|
17
|
+
last update: $Date: 2008-02-06 12:44:46 +0900 (Wed, 06 Feb 2008) $<br>
|
18
18
|
</div>
|
19
19
|
|
20
|
-
<p>Release: 0.6.
|
20
|
+
<p>Release: 0.6.1
|
21
21
|
</p>
|
22
22
|
<p>Table of Contents:
|
23
23
|
<ul>
|
@@ -430,7 +430,7 @@ Result:</div>
|
|
430
430
|
<pre class="terminal">$ rbtenjin <strong>-wz</strong> example3.rbhtml
|
431
431
|
example3.rbhtml:5: syntax error, unexpected $end, expecting kEND
|
432
432
|
</pre>
|
433
|
-
<p>Command-line option '-wz' is more convenient than '<code>rbtenjin -s file | ruby -
|
433
|
+
<p>Command-line option '-wz' is more convenient than '<code>rbtenjin -s file | ruby -wc</code>'
|
434
434
|
because the former can take several filenames.
|
435
435
|
</p>
|
436
436
|
<p>Command-line option '-q' (quiet-mode) prints nothing if it has no errors.
|
@@ -521,7 +521,7 @@ Result:</div>
|
|
521
521
|
|
522
522
|
<a name="des-cmlinecontext"></a>
|
523
523
|
<h3 class="section2">Command-line Context Data</h3>
|
524
|
-
<p>Command-line option '<code>-
|
524
|
+
<p>Command-line option '<code>-c</code>' specifies context data in YAML format or Ruby code.
|
525
525
|
</p>
|
526
526
|
<a name="example5.rbhtml"></a>
|
527
527
|
<div class="program_caption">
|
@@ -1150,6 +1150,8 @@ filename = 'file.rbhtml'
|
|
1150
1150
|
output = engine.render(filename, context)
|
1151
1151
|
print output
|
1152
1152
|
</pre>
|
1153
|
+
<p>If you want to define helper functions for template, see <a href="#dev-helpers">Add Your Helper Functions</a> section.
|
1154
|
+
</p>
|
1153
1155
|
<br>
|
1154
1156
|
|
1155
1157
|
|
@@ -1657,6 +1659,47 @@ Result:</div>
|
|
1657
1659
|
<li><a href="/">Top</a></li>
|
1658
1660
|
</ul>
|
1659
1661
|
</pre>
|
1662
|
+
<p>(D) Define helper functions in current class, set context data as instance variables, and pass self as context object
|
1663
|
+
</p>
|
1664
|
+
<a name="example16d.rb"></a>
|
1665
|
+
<div class="program_caption">
|
1666
|
+
File 'example16d.rb':</div>
|
1667
|
+
<pre class="program">require 'tenjin'
|
1668
|
+
|
1669
|
+
class MyClass
|
1670
|
+
<strong>include Tenjin::ContextHelper</strong>
|
1671
|
+
<strong>#include Tenjin::HtmlHelper</strong> # optional
|
1672
|
+
|
1673
|
+
def link_to(label, url) # define helper functions in current class
|
1674
|
+
return "<a href=\"#{escape(url)}\">#{escape(label)}</a>"
|
1675
|
+
end
|
1676
|
+
|
1677
|
+
def render_template(template_name)
|
1678
|
+
engine = Tenjin::Engine.new()
|
1679
|
+
output = engine.render(template_name, <strong>self</strong>) # pass self as context object
|
1680
|
+
return output
|
1681
|
+
end
|
1682
|
+
|
1683
|
+
def main
|
1684
|
+
## set context data as instance variables
|
1685
|
+
<strong>@label = 'Top'</strong>
|
1686
|
+
<strong>@url = '/'</strong>
|
1687
|
+
output = render_template('example16.rbhtml')
|
1688
|
+
print output
|
1689
|
+
end
|
1690
|
+
|
1691
|
+
end
|
1692
|
+
|
1693
|
+
MyClass.new.main()
|
1694
|
+
</pre>
|
1695
|
+
<a name="example16d.result"></a>
|
1696
|
+
<div class="terminal_caption">
|
1697
|
+
Result:</div>
|
1698
|
+
<pre class="terminal">$ ruby example16d.rb
|
1699
|
+
<ul>
|
1700
|
+
<li><a href="/">Top</a></li>
|
1701
|
+
</ul>
|
1702
|
+
</pre>
|
1660
1703
|
<br>
|
1661
1704
|
|
1662
1705
|
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<?rb #@ARGS action, params, label ?>
|
2
|
+
<form action="${@action}" method="post">
|
3
|
+
<p>
|
4
|
+
<label>Name:</label>
|
5
|
+
<input type="text" name="name" value="${@params[:name]}" />
|
6
|
+
</p>
|
7
|
+
<p>
|
8
|
+
<label>Gender:</label>
|
9
|
+
<?rb gender = @params[:gender] ?>
|
10
|
+
<input type="radio" name="gender" value="M" #{checked(gender=='M')} />Man
|
11
|
+
<input type="radio" name="gender" value="W" #{checked(gender=='W')} />Woman
|
12
|
+
</p>
|
13
|
+
<input type="submit" value="${@label}" />
|
14
|
+
</form>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
## create Engine object
|
2
|
+
require 'tenjin'
|
3
|
+
engine = Tenjin::Engine.new(:postfix=>'.rbhtml', :layout=>'layout.rbhtml')
|
4
|
+
|
5
|
+
## render template with context data
|
6
|
+
params = { :name=>'Foo', :gender=>'M' }
|
7
|
+
context = { :params=>params }
|
8
|
+
output = engine.render(:update, context) # :update == 'update'+postfix
|
9
|
+
puts output
|
@@ -0,0 +1,16 @@
|
|
1
|
+
LANGUAGES = [
|
2
|
+
['en', 'Engilish'],
|
3
|
+
['fr', 'French'],
|
4
|
+
['de', 'German'],
|
5
|
+
['es', 'Spanish'],
|
6
|
+
['ch', 'Chinese'],
|
7
|
+
['ja', 'Japanese'],
|
8
|
+
]
|
9
|
+
|
10
|
+
def link_to(label, options={})
|
11
|
+
action, id = options[:action], options[:id]
|
12
|
+
url = '/app'
|
13
|
+
url << '/' << action if action && !action.empty?
|
14
|
+
url << '/' << id if id
|
15
|
+
return "<a href=\"#{CGI::escape(url).gsub(/%2F/i, '/')}\">#{label}</a>"
|
16
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
## create engine
|
4
|
+
require 'tenjin'
|
5
|
+
engine = Tenjin::Engine.new(:postfix=>'.rbhtml', :preprocess=>true)
|
6
|
+
|
7
|
+
## render template with context data
|
8
|
+
params = { :id=>1234, :name=>'Foo', :lang=>'ch' }
|
9
|
+
context = { :params => params }
|
10
|
+
output = engine.render(:select, context)
|
11
|
+
puts output
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<?RB require 'helper' ?>
|
2
|
+
<form>
|
3
|
+
<label>Select your language:</label>
|
4
|
+
<select name="lang">
|
5
|
+
<?rb table = { @params[:lang] => ' selected="selected"' } ?>
|
6
|
+
<?RB for val, name in LANGUAGES ?>
|
7
|
+
<option value="${{val}}" #{table[#{{val.inspect}}]}>${{name}}</option>
|
8
|
+
<?RB end ?>
|
9
|
+
</select>
|
10
|
+
<input type="submit" value="OK" />
|
11
|
+
</form>
|
12
|
+
<p>
|
13
|
+
#{{link_to('Back', :action=>'index')}} |
|
14
|
+
#{{link_to('Show '+_P('@params[:name]'), :action=>'show', :id=>_p('@params[:id]'))}}
|
15
|
+
</p>
|