tenjin 0.6.0 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- 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>
|