kwartz 3.1.2 → 3.2.0
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 +444 -0
- data/README.txt +4 -1
- data/bin/kwartz +2 -2
- data/doc-api/classes/Kwartz.html +16 -7
- data/doc-api/classes/Kwartz/Assertion.html +6 -6
- data/doc-api/classes/Kwartz/AssertionError.html +6 -6
- data/doc-api/classes/Kwartz/AttrInfo.html +71 -61
- data/doc-api/classes/Kwartz/BaseError.html +12 -12
- data/doc-api/classes/Kwartz/BaseTranslator.html +104 -74
- data/doc-api/classes/Kwartz/CharacterType.html +24 -24
- data/doc-api/classes/Kwartz/CommandOptionError.html +7 -7
- data/doc-api/classes/Kwartz/CommandOptions.html +50 -50
- data/doc-api/classes/Kwartz/Config.html +5 -0
- data/doc-api/classes/Kwartz/ConvertError.html +12 -12
- data/doc-api/classes/Kwartz/Converter.html +31 -33
- data/doc-api/classes/Kwartz/CssStyleParser.html +207 -168
- data/doc-api/classes/Kwartz/Defun.html +32 -31
- data/doc-api/classes/Kwartz/{HandlerArgument.html → Directive.html} +27 -53
- data/doc-api/classes/Kwartz/ElementInfo.html +68 -53
- data/doc-api/classes/Kwartz/EperlExpressionParser.html +185 -0
- data/doc-api/classes/Kwartz/EperlHandler.html +65 -58
- data/doc-api/classes/Kwartz/EperlTranslator.html +14 -7
- data/doc-api/classes/Kwartz/ErubisTranslator.html +14 -7
- data/doc-api/classes/Kwartz/ErubyTranslator.html +14 -7
- data/doc-api/classes/Kwartz/ExpandStatement.html +20 -20
- data/doc-api/classes/Kwartz/Expander.html +358 -0
- data/doc-api/classes/Kwartz/Handler.html +287 -157
- data/doc-api/classes/Kwartz/{StatementHelper.html → HandlerHelper.html} +307 -112
- data/doc-api/classes/Kwartz/Helper/ActionViewHelper.html +23 -23
- data/doc-api/classes/Kwartz/Helper/RailsTemplate.html +96 -96
- data/doc-api/classes/Kwartz/JstlExpressionParser.html +181 -0
- data/doc-api/classes/Kwartz/JstlHandler.html +134 -126
- data/doc-api/classes/Kwartz/JstlTranslator.html +21 -14
- data/doc-api/classes/Kwartz/KwartzError.html +6 -6
- data/doc-api/classes/Kwartz/Main.html +4 -4
- data/doc-api/classes/Kwartz/NativeExpression.html +19 -19
- data/doc-api/classes/Kwartz/NativeStatement.html +24 -24
- data/doc-api/classes/Kwartz/Node.html +7 -7
- data/doc-api/classes/Kwartz/PIErubisTranslator.html +21 -14
- data/doc-api/classes/Kwartz/ParseError.html +6 -6
- data/doc-api/classes/Kwartz/PerlExpressionParser.html +185 -0
- data/doc-api/classes/Kwartz/PerlHandler.html +353 -0
- data/doc-api/classes/Kwartz/PerlTranslator.html +226 -0
- data/doc-api/classes/Kwartz/PhpExpressionParser.html +185 -0
- data/doc-api/classes/Kwartz/PhpHandler.html +63 -56
- data/doc-api/classes/Kwartz/PhpTranslator.html +21 -14
- data/doc-api/classes/Kwartz/PresentationLogicParser.html +126 -123
- data/doc-api/classes/Kwartz/PrintStatement.html +18 -18
- data/doc-api/classes/Kwartz/RailsHandler.html +84 -85
- data/doc-api/classes/Kwartz/RailsTranslator.html +13 -6
- data/doc-api/classes/Kwartz/RubyExpressionParser.html +180 -0
- data/doc-api/classes/Kwartz/RubyHandler.html +73 -69
- data/doc-api/classes/Kwartz/RubyStyleParser.html +86 -86
- data/doc-api/classes/Kwartz/RubyTranslator.html +28 -21
- data/doc-api/classes/Kwartz/Ruleset.html +622 -1
- data/doc-api/classes/Kwartz/StrutsTranslator.html +14 -14
- data/doc-api/classes/Kwartz/TagInfo.html +52 -27
- data/doc-api/classes/Kwartz/TextConverter.html +75 -37
- data/doc-api/classes/Kwartz/Translator.html +54 -53
- data/doc-api/classes/Kwartz/Util.html +25 -25
- data/doc-api/created.rid +1 -1
- data/doc-api/files/__/README_txt.html +7 -2
- data/doc-api/files/kwartz/assert_rb.html +2 -2
- data/doc-api/files/kwartz/binding/eperl_rb.html +2 -2
- data/doc-api/files/kwartz/binding/erubis_rb.html +2 -2
- data/doc-api/files/kwartz/binding/eruby_rb.html +2 -2
- data/doc-api/files/kwartz/binding/jstl_rb.html +2 -2
- data/doc-api/files/kwartz/binding/perl_rb.html +115 -0
- data/doc-api/files/kwartz/binding/php_rb.html +2 -2
- data/doc-api/files/kwartz/binding/pierubis_rb.html +2 -2
- data/doc-api/files/kwartz/binding/rails_rb.html +2 -2
- data/doc-api/files/kwartz/binding/ruby_rb.html +2 -2
- data/doc-api/files/kwartz/binding/struts_rb.html +2 -2
- data/doc-api/files/kwartz/config_rb.html +2 -2
- data/doc-api/files/kwartz/converter_rb.html +2 -2
- data/doc-api/files/kwartz/defun_rb.html +2 -2
- data/doc-api/files/kwartz/error_rb.html +2 -2
- data/doc-api/files/kwartz/helper/rails_rb.html +2 -2
- data/doc-api/files/kwartz/main_rb.html +3 -2
- data/doc-api/files/kwartz/node_rb.html +2 -2
- data/doc-api/files/kwartz/parser_rb.html +2 -2
- data/doc-api/files/kwartz/translator_rb.html +2 -2
- data/doc-api/files/kwartz/util/assert-text-equal_rb.html +2 -2
- data/doc-api/files/kwartz/util/testcase-helper_rb.html +2 -2
- data/doc-api/files/kwartz/util_rb.html +2 -2
- data/doc-api/files/kwartz_rb.html +2 -2
- data/doc-api/fr_class_index.html +10 -5
- data/doc-api/fr_file_index.html +1 -0
- data/doc-api/fr_method_index.html +268 -239
- data/doc/docstyle.css +9 -3
- data/doc/img/fig05.png +0 -0
- data/doc/introduction-to-kwartz.html +3040 -0
- data/doc/pattern-catalog.html +5 -3
- data/doc/reference.html +680 -26
- data/doc/users-guide.html +222 -67
- data/kwartz.gemspec +4 -4
- data/lib/kwartz.rb +3 -3
- data/lib/kwartz/assert.rb +2 -2
- data/lib/kwartz/binding/eperl.rb +71 -31
- data/lib/kwartz/binding/erubis.rb +3 -2
- data/lib/kwartz/binding/eruby.rb +3 -2
- data/lib/kwartz/binding/jstl.rb +66 -29
- data/lib/kwartz/binding/perl.rb +230 -0
- data/lib/kwartz/binding/php.rb +69 -29
- data/lib/kwartz/binding/pierubis.rb +3 -2
- data/lib/kwartz/binding/rails.rb +18 -18
- data/lib/kwartz/binding/ruby.rb +74 -42
- data/lib/kwartz/binding/struts.rb +22 -21
- data/lib/kwartz/config.rb +4 -4
- data/lib/kwartz/converter.rb +465 -345
- data/lib/kwartz/defun.rb +2 -2
- data/lib/kwartz/error.rb +2 -2
- data/lib/kwartz/helper/rails.rb +2 -2
- data/lib/kwartz/main.rb +5 -4
- data/lib/kwartz/node.rb +92 -144
- data/lib/kwartz/parser.rb +112 -103
- data/lib/kwartz/translator.rb +14 -6
- data/lib/kwartz/util.rb +2 -2
- data/lib/kwartz/util/assert-text-equal.rb +2 -2
- data/lib/kwartz/util/testcase-helper.rb +1 -1
- data/test/test-compile.rb +2 -2
- data/test/test-compile.yaml +81 -0
- data/test/test-converter.rb +4 -8
- data/test/test-converter.yaml +152 -3
- data/test/test-directives.rb +2 -2
- data/test/test-directives.yaml +222 -0
- data/test/test-main.rb +6 -4
- data/test/test-main.yaml +66 -1
- data/test/test-parser.rb +12 -3
- data/test/test-parser.yaml +64 -51
- data/test/test-rails.rb +2 -2
- data/test/test-ruleset.rb +2 -2
- data/test/test-ruleset.yaml +465 -4
- data/test/test.log +6 -0
- data/test/test.rb +2 -2
- metadata +116 -106
- data/ChangeLog +0 -156
- data/doc-api/classes/Kwartz/DocumentRuleset.html +0 -369
- data/doc-api/classes/Kwartz/ElementExpander.html +0 -325
- data/doc-api/classes/Kwartz/ElementRuleset.html +0 -612
data/doc/pattern-catalog.html
CHANGED
@@ -13,9 +13,11 @@
|
|
13
13
|
<div class="mainbody">
|
14
14
|
|
15
15
|
<div align="left"><h1>Presentation Pattern Catalog</h1></div>
|
16
|
-
<
|
17
|
-
$
|
18
|
-
|
16
|
+
<div align="left">
|
17
|
+
release: $Release: 3.2.0 $<br>
|
18
|
+
last update: $Date$<br>
|
19
|
+
</div>
|
20
|
+
|
19
21
|
<a name="preface"></a>
|
20
22
|
<h2 class="section1">Preface</h2>
|
21
23
|
<p>Kwartz is the template system which realized the concept of '<strong>Independence of Presentation Logic (IoPL)</strong>.'
|
data/doc/reference.html
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
<html>
|
3
3
|
<head>
|
4
4
|
<meta http-equiv="Content-Type" content="text/html">
|
5
|
-
<title>Kwartz-ruby 3.
|
5
|
+
<title>Kwartz-ruby 3.2 Reference Guide</title>
|
6
6
|
<meta name="generator" content="kwaser">
|
7
7
|
<meta http-equiv="Content-Style-Type" content="text/css">
|
8
8
|
<link rel="stylesheet" href="docstyle.css" type="text/css">
|
@@ -12,10 +12,12 @@
|
|
12
12
|
<blockquote>
|
13
13
|
<div class="mainbody">
|
14
14
|
|
15
|
-
<div align="left"><h1>Kwartz-ruby 3.
|
16
|
-
<
|
17
|
-
$
|
18
|
-
|
15
|
+
<div align="left"><h1>Kwartz-ruby 3.2 Reference Guide</h1></div>
|
16
|
+
<div align="left">
|
17
|
+
release: $Release: 3.2.0 $<br>
|
18
|
+
last update: $Date$<br>
|
19
|
+
</div>
|
20
|
+
|
19
21
|
<a name="preface"></a>
|
20
22
|
<h2 class="section1">Preface</h2>
|
21
23
|
<p>This document<sup>(<a href="#fnref:1" name="fnlink:1">*1</a>)</sup> is the reference manual of Kwartz-ruby.
|
@@ -43,7 +45,7 @@ Kwartz-ruby is an implementation of Kwartz in Ruby.
|
|
43
45
|
</li>
|
44
46
|
</ul>
|
45
47
|
</li>
|
46
|
-
<li><a href="#plogic">Pesentation Logic</a>
|
48
|
+
<li><a href="#plogic">Properties in Pesentation Logic</a>
|
47
49
|
<ul>
|
48
50
|
<li><a href="#property-elem">elem, Elem, ELEM</a>
|
49
51
|
</li>
|
@@ -63,11 +65,15 @@ Kwartz-ruby is an implementation of Kwartz in Ruby.
|
|
63
65
|
</li>
|
64
66
|
<li><a href="#property-logic">logic</a>
|
65
67
|
</li>
|
68
|
+
<li><a href="#property-before">before, after</a>
|
69
|
+
</li>
|
66
70
|
<li><a href="#property-begin">begin, end</a>
|
67
71
|
</li>
|
72
|
+
<li><a href="#property-attrvar">Attribute Variable</a>
|
73
|
+
</li>
|
68
74
|
</ul>
|
69
75
|
</li>
|
70
|
-
<li><a href="#directives">Directives</a>
|
76
|
+
<li><a href="#directives">Directives in Presentation Data</a>
|
71
77
|
<ul>
|
72
78
|
<li><a href="#directive-elem">elem, Elem, ELEM</a>
|
73
79
|
</li>
|
@@ -105,6 +111,8 @@ Kwartz-ruby is an implementation of Kwartz in Ruby.
|
|
105
111
|
</li>
|
106
112
|
<li><a href="#directive-replace">replace_element/content_with_element/content</a>
|
107
113
|
</li>
|
114
|
+
<li><a href="#directive-expr">Language-independent Directive</a>
|
115
|
+
</li>
|
108
116
|
</ul>
|
109
117
|
</li>
|
110
118
|
<li><a href="#cmdline">Command-Line Options</a>
|
@@ -117,7 +125,7 @@ Kwartz-ruby is an implementation of Kwartz in Ruby.
|
|
117
125
|
|
118
126
|
|
119
127
|
<a name="plogic"></a>
|
120
|
-
<h2 class="section1">Pesentation Logic</h2>
|
128
|
+
<h2 class="section1">Properties in Pesentation Logic</h2>
|
121
129
|
<p>Presentation logic format in Kwartz is similar to Cascading Style Sheet (CSS).
|
122
130
|
</p>
|
123
131
|
<ul type="disc">
|
@@ -130,19 +138,31 @@ Kwartz-ruby is an implementation of Kwartz in Ruby.
|
|
130
138
|
</ul>
|
131
139
|
<div class="output_caption">
|
132
140
|
Pseudo-EBNF syntax of presentation logic</div>
|
133
|
-
<pre class="output">plogic
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
141
|
+
<pre class="output">plogic ::= rulesets
|
142
|
+
rulesets ::= rulesets ruleset
|
143
|
+
| ruleset
|
144
|
+
ruleset ::= selectors '{' declarations '}'
|
145
|
+
| selectors '{' '}'
|
146
|
+
selectors ::= selectors ',' selector
|
147
|
+
| selector
|
148
|
+
desclarations ::= declarations declaration
|
149
|
+
| declaration
|
150
|
+
selector ::= '#' name
|
151
|
+
| '.' name
|
152
|
+
| name
|
153
|
+
declaration ::= property ':' value ';'
|
154
|
+
| property ':' '{' value '}'
|
155
|
+
property ::= 'elem' | 'Elem' | 'ELEM'
|
156
|
+
| 'stag' | 'Stag' | 'STAG'
|
157
|
+
| 'etag' | 'Etag' | 'ETAG'
|
158
|
+
| 'cont' | 'Cont' | 'CONT'
|
159
|
+
| 'value' | 'Value' | 'VALUE'
|
160
|
+
| 'attrs' | 'Attrs' | 'ATTRS'
|
161
|
+
| 'append' | 'Append' | 'APPEND'
|
162
|
+
| 'remove'
|
163
|
+
| 'logic'
|
164
|
+
| 'before'
|
165
|
+
| 'after'
|
146
166
|
</pre>
|
147
167
|
<p>Notice that the tail semicolon of declaration is not omittable.
|
148
168
|
</p>
|
@@ -1288,12 +1308,358 @@ compile</div>
|
|
1288
1308
|
<br>
|
1289
1309
|
|
1290
1310
|
|
1311
|
+
<a name="property-before"></a>
|
1312
|
+
<h3 class="section2">before, after</h3>
|
1313
|
+
<p><code>before:</code> and <code>after:</code> property represents the prework and postwork
|
1314
|
+
of each element's presentation logics.
|
1315
|
+
These properties enables to share or reuse presentation logics.
|
1316
|
+
</p>
|
1317
|
+
<a name="property-before-eruby"></a>
|
1318
|
+
<h4 class="section3">Ruby</h4>
|
1319
|
+
<div class="program_caption">
|
1320
|
+
presentation data (ex-before.pdata)</div>
|
1321
|
+
<pre class="program"><!-- Groups -->
|
1322
|
+
<ul id="mark:groups">
|
1323
|
+
<li class="item"></li>
|
1324
|
+
</ul>
|
1325
|
+
|
1326
|
+
<!-- Members -->
|
1327
|
+
<ol id="mark:members">
|
1328
|
+
<li class="item"></li>
|
1329
|
+
</ol>
|
1330
|
+
</pre>
|
1331
|
+
<div class="program_caption">
|
1332
|
+
presentation logic (ex-before.plogic)</div>
|
1333
|
+
<pre class="program">#groups {
|
1334
|
+
<strong>before:</strong> {
|
1335
|
+
<strong>list = @groups</strong>
|
1336
|
+
}
|
1337
|
+
<strong>after:</strong> {
|
1338
|
+
<strong>group_count = count</strong>
|
1339
|
+
}
|
1340
|
+
}
|
1341
|
+
#members {
|
1342
|
+
<strong>before:</strong> {
|
1343
|
+
<strong>list = @members</strong>
|
1344
|
+
}
|
1345
|
+
<strong>after:</strong> {
|
1346
|
+
<strong>member_count = count</strong>
|
1347
|
+
}
|
1348
|
+
}
|
1349
|
+
|
1350
|
+
/* common 'logic:' part */
|
1351
|
+
#groups, #members {
|
1352
|
+
logic: {
|
1353
|
+
count = 0
|
1354
|
+
_stag
|
1355
|
+
for item in list
|
1356
|
+
unless item.obsolete?
|
1357
|
+
count += 1
|
1358
|
+
_cont
|
1359
|
+
end
|
1360
|
+
end
|
1361
|
+
_etag
|
1362
|
+
}
|
1363
|
+
}
|
1364
|
+
|
1365
|
+
.item {
|
1366
|
+
value: item.name;
|
1367
|
+
}
|
1368
|
+
</pre>
|
1369
|
+
<div class="terminal_caption">
|
1370
|
+
compile</div>
|
1371
|
+
<pre class="terminal">$ kwartz -l eruby -p ex-before.plogic ex-before.pdata
|
1372
|
+
<!-- Groups -->
|
1373
|
+
<% <strong>list = @groups</strong> %>
|
1374
|
+
<% count = 0 %>
|
1375
|
+
<ul>
|
1376
|
+
<% for item in list %>
|
1377
|
+
<% unless item.obsolete? %>
|
1378
|
+
<% count += 1 %>
|
1379
|
+
<li class="item"><%= item.name %></li>
|
1380
|
+
<% end %>
|
1381
|
+
<% end %>
|
1382
|
+
</ul>
|
1383
|
+
<% <strong>group_count = count</strong> %>
|
1384
|
+
|
1385
|
+
<!-- Members -->
|
1386
|
+
<% <strong>list = @members</strong> %>
|
1387
|
+
<% count = 0 %>
|
1388
|
+
<ol>
|
1389
|
+
<% for item in list %>
|
1390
|
+
<% unless item.obsolete? %>
|
1391
|
+
<% count += 1 %>
|
1392
|
+
<li class="item"><%= item.name %></li>
|
1393
|
+
<% end %>
|
1394
|
+
<% end %>
|
1395
|
+
</ol>
|
1396
|
+
<% <strong>member_count = count</strong> %>
|
1397
|
+
</pre>
|
1398
|
+
<br>
|
1399
|
+
|
1400
|
+
<a name="property-before-php"></a>
|
1401
|
+
<h4 class="section3">PHP</h4>
|
1402
|
+
<div class="program_caption">
|
1403
|
+
presentation data (ex-before.pdata)</div>
|
1404
|
+
<pre class="program"><!-- Groups -->
|
1405
|
+
<ul id="mark:groups">
|
1406
|
+
<li class="item"></li>
|
1407
|
+
</ul>
|
1408
|
+
|
1409
|
+
<!-- Members -->
|
1410
|
+
<ol id="mark:members">
|
1411
|
+
<li class="item"></li>
|
1412
|
+
</ol>
|
1413
|
+
</pre>
|
1414
|
+
<div class="program_caption">
|
1415
|
+
presentation logic (ex-before.plogic)</div>
|
1416
|
+
<pre class="program">#groups {
|
1417
|
+
<strong>before:</strong> {
|
1418
|
+
<strong>$list = $groups;</strong>
|
1419
|
+
}
|
1420
|
+
<strong>after:</strong> {
|
1421
|
+
<strong>$group_count = $count;</strong>
|
1422
|
+
}
|
1423
|
+
}
|
1424
|
+
#members {
|
1425
|
+
<strong>before:</strong> {
|
1426
|
+
<strong>$list = $members;</strong>
|
1427
|
+
}
|
1428
|
+
<strong>after:</strong> {
|
1429
|
+
<strong>$member_count = $count;</strong>
|
1430
|
+
}
|
1431
|
+
}
|
1432
|
+
|
1433
|
+
/* common 'logic:' part */
|
1434
|
+
#groups, #members {
|
1435
|
+
logic: {
|
1436
|
+
$count = 0;
|
1437
|
+
_stag();
|
1438
|
+
foreach ($list as $item) {
|
1439
|
+
if (! $item->obsolete) {
|
1440
|
+
$count++;
|
1441
|
+
_cont();
|
1442
|
+
}
|
1443
|
+
}
|
1444
|
+
_etag();
|
1445
|
+
}
|
1446
|
+
}
|
1447
|
+
|
1448
|
+
.item {
|
1449
|
+
value: $item->name;
|
1450
|
+
}
|
1451
|
+
</pre>
|
1452
|
+
<div class="terminal_caption">
|
1453
|
+
compile</div>
|
1454
|
+
<pre class="terminal">$ kwartz -l php -p ex-before.plogic ex-before.pdata
|
1455
|
+
<!-- Groups -->
|
1456
|
+
<?php <strong>$list = $groups;</strong> ?>
|
1457
|
+
<?php $count = 0; ?>
|
1458
|
+
<ul>
|
1459
|
+
<?php foreach ($list as $item) { ?>
|
1460
|
+
<?php if (! $item->obsolete) { ?>
|
1461
|
+
<?php $count++; ?>
|
1462
|
+
<li class="item"><?php echo $item->name; ?></li>
|
1463
|
+
<?php } ?>
|
1464
|
+
<?php } ?>
|
1465
|
+
</ul>
|
1466
|
+
<?php <strong>$group_count = $count;</strong> ?>
|
1467
|
+
|
1468
|
+
<!-- Members -->
|
1469
|
+
<?php <strong>$list = $members;</strong> ?>
|
1470
|
+
<?php $count = 0; ?>
|
1471
|
+
<ol>
|
1472
|
+
<?php foreach ($list as $item) { ?>
|
1473
|
+
<?php if (! $item->obsolete) { ?>
|
1474
|
+
<?php $count++; ?>
|
1475
|
+
<li class="item"><?php echo $item->name; ?></li>
|
1476
|
+
<?php } ?>
|
1477
|
+
<?php } ?>
|
1478
|
+
</ol>
|
1479
|
+
<?php <strong>$member_count = $count;</strong> ?>
|
1480
|
+
</pre>
|
1481
|
+
<br>
|
1482
|
+
|
1483
|
+
<a name="property-before-jstl"></a>
|
1484
|
+
<h4 class="section3">JSP</h4>
|
1485
|
+
<div class="program_caption">
|
1486
|
+
presentation data (ex-before.pdata)</div>
|
1487
|
+
<pre class="program"><!-- Groups -->
|
1488
|
+
<ul id="mark:groups">
|
1489
|
+
<li class="item"></li>
|
1490
|
+
</ul>
|
1491
|
+
|
1492
|
+
<!-- Members -->
|
1493
|
+
<ol id="mark:members">
|
1494
|
+
<li class="item"></li>
|
1495
|
+
</ol>
|
1496
|
+
</pre>
|
1497
|
+
<div class="program_caption">
|
1498
|
+
presentation logic (ex-before.plogic)</div>
|
1499
|
+
<pre class="program">#groups {
|
1500
|
+
<strong>before:</strong> {
|
1501
|
+
<strong><c:set var="list" value="${groups}" /></strong>
|
1502
|
+
}
|
1503
|
+
<strong>after:</strong> {
|
1504
|
+
<strong><c:set var="group_count" value="${count}" /></strong>
|
1505
|
+
}
|
1506
|
+
}
|
1507
|
+
#members {
|
1508
|
+
<strong>before:</strong> {
|
1509
|
+
<strong><c:set var="list" value="${members}" /></strong>
|
1510
|
+
}
|
1511
|
+
<strong>after:</strong> {
|
1512
|
+
<strong><c:set var="members_count" value="${count}" /></strong>
|
1513
|
+
}
|
1514
|
+
}
|
1515
|
+
|
1516
|
+
/* common 'logic:' part */
|
1517
|
+
#groups, #members {
|
1518
|
+
logic: {
|
1519
|
+
<c:set var="count" value="${0}" />
|
1520
|
+
_stag()
|
1521
|
+
<c:forEach var="item" items="${list}" />
|
1522
|
+
<c:if test="${not item.obsolete}" />
|
1523
|
+
<c:set var="count" value="${count+1}" />
|
1524
|
+
_cont()
|
1525
|
+
</c:if>
|
1526
|
+
</c:forEach>
|
1527
|
+
_etag()
|
1528
|
+
}
|
1529
|
+
}
|
1530
|
+
|
1531
|
+
.item {
|
1532
|
+
value: item.name;
|
1533
|
+
}
|
1534
|
+
</pre>
|
1535
|
+
<div class="terminal_caption">
|
1536
|
+
compile</div>
|
1537
|
+
<pre class="terminal">$ kwartz -l jstl -p ex-before.plogic ex-before.pdata
|
1538
|
+
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
1539
|
+
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
1540
|
+
<!-- Groups -->
|
1541
|
+
<strong><c:set var="list" value="${groups}" /></strong>
|
1542
|
+
<c:set var="count" value="${0}" />
|
1543
|
+
<ul>
|
1544
|
+
<c:forEach var="item" items="${list}" />
|
1545
|
+
<c:if test="${not item.obsolete}" />
|
1546
|
+
<c:set var="count" value="${count+1}" />
|
1547
|
+
<li class="item">${item.name}</li>
|
1548
|
+
</c:if>
|
1549
|
+
</c:forEach>
|
1550
|
+
</ul>
|
1551
|
+
<strong><c:set var="group_count" value="${count}" /></strong>
|
1552
|
+
|
1553
|
+
<!-- Members -->
|
1554
|
+
<strong><c:set var="list" value="${members}" /></strong>
|
1555
|
+
<c:set var="count" value="${0}" />
|
1556
|
+
<ol>
|
1557
|
+
<c:forEach var="item" items="${list}" />
|
1558
|
+
<c:if test="${not item.obsolete}" />
|
1559
|
+
<c:set var="count" value="${count+1}" />
|
1560
|
+
<li class="item">${item.name}</li>
|
1561
|
+
</c:if>
|
1562
|
+
</c:forEach>
|
1563
|
+
</ol>
|
1564
|
+
<strong><c:set var="members_count" value="${count}" /></strong>
|
1565
|
+
</pre>
|
1566
|
+
<br>
|
1567
|
+
|
1568
|
+
<a name="property-before-eperl"></a>
|
1569
|
+
<h4 class="section3">Perl</h4>
|
1570
|
+
<div class="program_caption">
|
1571
|
+
presentation data (ex-before.pdata)</div>
|
1572
|
+
<pre class="program"><!-- Groups -->
|
1573
|
+
<ul id="mark:groups">
|
1574
|
+
<li class="item"></li>
|
1575
|
+
</ul>
|
1576
|
+
|
1577
|
+
<!-- Members -->
|
1578
|
+
<ol id="mark:members">
|
1579
|
+
<li class="item"></li>
|
1580
|
+
</ol>
|
1581
|
+
</pre>
|
1582
|
+
<div class="program_caption">
|
1583
|
+
presentation logic (ex-before.plogic)</div>
|
1584
|
+
<pre class="program">#groups {
|
1585
|
+
<strong>before:</strong> {
|
1586
|
+
<strong>@list = @groups;</strong>
|
1587
|
+
}
|
1588
|
+
<strong>after:</strong> {
|
1589
|
+
<strong>$group_count = $count;</strong>
|
1590
|
+
}
|
1591
|
+
}
|
1592
|
+
#members {
|
1593
|
+
<strong>before:</strong> {
|
1594
|
+
<strong>@list = @members;</strong>
|
1595
|
+
}
|
1596
|
+
<strong>after:</strong> {
|
1597
|
+
<strong>$member_count = $count;</strong>
|
1598
|
+
}
|
1599
|
+
}
|
1600
|
+
|
1601
|
+
/* common 'logic:' part */
|
1602
|
+
#groups, #members {
|
1603
|
+
logic: {
|
1604
|
+
$count = 0;
|
1605
|
+
_stag();
|
1606
|
+
foreach $item (@list) {
|
1607
|
+
if (! $item['obsolete']) {
|
1608
|
+
$count++;
|
1609
|
+
_cont();
|
1610
|
+
}
|
1611
|
+
}
|
1612
|
+
_etag();
|
1613
|
+
}
|
1614
|
+
}
|
1615
|
+
|
1616
|
+
.item {
|
1617
|
+
value: $item['name'];
|
1618
|
+
}
|
1619
|
+
</pre>
|
1620
|
+
<div class="terminal_caption">
|
1621
|
+
compile</div>
|
1622
|
+
<pre class="terminal">$ kwartz -l eperl -p ex-before.plogic ex-before.pdata
|
1623
|
+
<!-- Groups -->
|
1624
|
+
<? <strong>@list = @groups;</strong> !>
|
1625
|
+
<? $count = 0; !>
|
1626
|
+
<ul>
|
1627
|
+
<? foreach $item (@list) { !>
|
1628
|
+
<? if (! $item['obsolete']) { !>
|
1629
|
+
<? $count++; !>
|
1630
|
+
<li class="item"><?= $item['name'] !></li>
|
1631
|
+
<? } !>
|
1632
|
+
<? } !>
|
1633
|
+
</ul>
|
1634
|
+
<? <strong>$group_count = $count;</strong> !>
|
1635
|
+
|
1636
|
+
<!-- Members -->
|
1637
|
+
<? <strong>@list = @members;</strong> !>
|
1638
|
+
<? $count = 0; !>
|
1639
|
+
<ol>
|
1640
|
+
<? foreach $item (@list) { !>
|
1641
|
+
<? if (! $item['obsolete']) { !>
|
1642
|
+
<? $count++; !>
|
1643
|
+
<li class="item"><?= $item['name'] !></li>
|
1644
|
+
<? } !>
|
1645
|
+
<? } !>
|
1646
|
+
</ol>
|
1647
|
+
<? <strong>$member_count = $count;</strong> !>
|
1648
|
+
</pre>
|
1649
|
+
<br>
|
1650
|
+
|
1651
|
+
<br>
|
1652
|
+
|
1653
|
+
|
1291
1654
|
<a name="property-begin"></a>
|
1292
1655
|
<h3 class="section2">begin, end</h3>
|
1293
|
-
<p><code>begin:</code> and <code>end:</code>
|
1294
|
-
|
1295
|
-
|
1296
|
-
|
1656
|
+
<p><code>begin:</code> and <code>end:</code> properties are equal to <code>before:</code> and <code>after:</code>.
|
1657
|
+
<strong>These are obsolete and leaved for compatibility</strong>.
|
1658
|
+
</p>
|
1659
|
+
<p><code>begin:</code> and <code>end:</code> were aimed to add prework and postwork of document,
|
1660
|
+
and restricted to be available only with '#DOCUMENT' selector.
|
1661
|
+
Currently <code>before:</code> and <code>after:</code> are available with '#DOCUMENT' selector,
|
1662
|
+
so you should use these properties instead of <code>begin:</code> and <code>end:</code>.
|
1297
1663
|
</p>
|
1298
1664
|
<a name="property-begin-eruby"></a>
|
1299
1665
|
<h4 class="section3">Ruby</h4>
|
@@ -1488,11 +1854,177 @@ compile</div>
|
|
1488
1854
|
<br>
|
1489
1855
|
|
1490
1856
|
|
1857
|
+
<a name="property-attrvar"></a>
|
1858
|
+
<h3 class="section2">Attribute Variable</h3>
|
1859
|
+
<p>Attribute variable is a notation such as '$(attrname)' which represents attribute value.
|
1860
|
+
Attribute variable allows presentation logic to refer attribute value in presentation data.
|
1861
|
+
</p>
|
1862
|
+
<a name="property-attrvar-eruby"></a>
|
1863
|
+
<h4 class="section3">Ruby</h4>
|
1864
|
+
<div class="program_caption">
|
1865
|
+
presentation data (ex-attrvar.pdata)</div>
|
1866
|
+
<pre class="program"><form action="create" <strong>method="post"</strong>>
|
1867
|
+
Username: <input type="text" id="comment_username" <strong>size="30"</strong>><br>
|
1868
|
+
Comment: <textarea id="comment_text" <strong>rows="3"</strong> <strong>cols="50"</strong>></textarea><br>
|
1869
|
+
<input id="mark:submit" type="submit" <strong>value="Send comment"</strong>>
|
1870
|
+
</form>
|
1871
|
+
</pre>
|
1872
|
+
<div class="program_caption">
|
1873
|
+
presentation logic (ex-attrvar.plogic)</div>
|
1874
|
+
<pre class="program">form {
|
1875
|
+
stag: start_form_tag :action=>'<strong>$(action)</strong>';
|
1876
|
+
}
|
1877
|
+
#comment_username {
|
1878
|
+
elem: text_field 'comment', 'username', :size=><strong>$(size)</strong>;
|
1879
|
+
}
|
1880
|
+
#comment_text {
|
1881
|
+
elem: text_area 'comment', 'text', :rows=><strong>$(rows)</strong>, :cols=><strong>$(cols)</strong>;
|
1882
|
+
}
|
1883
|
+
#submit {
|
1884
|
+
elem: submit_tag '<strong>$(value)</strong>';
|
1885
|
+
}
|
1886
|
+
</pre>
|
1887
|
+
<div class="terminal_caption">
|
1888
|
+
compile</div>
|
1889
|
+
<pre class="terminal">$ kwartz -l eruby -p ex-attrvar.plogic ex-attrvar.pdata
|
1890
|
+
<%= start_form_tag :action=>'<strong>create</strong>' %>
|
1891
|
+
Username: <%= text_field 'comment', 'username', :size=><strong>30</strong> %><br>
|
1892
|
+
Comment: <%= text_area 'comment', 'text', :rows=><strong>3</strong>, :cols=><strong>50</strong> %><br>
|
1893
|
+
<%= submit_tag '<strong>Send comment</strong>' %>
|
1894
|
+
</form>
|
1895
|
+
</pre>
|
1896
|
+
<br>
|
1897
|
+
|
1898
|
+
<a name="property-attrvar-php"></a>
|
1899
|
+
<h4 class="section3">PHP</h4>
|
1900
|
+
<div class="program_caption">
|
1901
|
+
presentation data (ex-attrvar.pdata)</div>
|
1902
|
+
<pre class="program"><form action="create" <strong>method="post"</strong>>
|
1903
|
+
Username: <input type="text" id="comment_username" <strong>size="30"</strong>><br>
|
1904
|
+
Comment: <textarea id="comment_text" <strong>rows="3"</strong> <strong>cols="50"</strong>></textarea><br>
|
1905
|
+
<input id="mark:submit" type="submit" <strong>value="Send comment"</strong>>
|
1906
|
+
</form>
|
1907
|
+
</pre>
|
1908
|
+
<div class="program_caption">
|
1909
|
+
presentation logic (ex-attrvar.plogic)</div>
|
1910
|
+
<pre class="program">form {
|
1911
|
+
stag: form_tag('comment/<strong>$(action)</strong>');
|
1912
|
+
}
|
1913
|
+
#comment_username {
|
1914
|
+
elem: text_field('comment', 'username', array('size'=><strong>$(size)</strong>));
|
1915
|
+
}
|
1916
|
+
#comment_text {
|
1917
|
+
elem: text_area('comment', 'text', array('rows'=><strong>$(rows)</strong>, 'cols'=><strong>$(cols)</strong>));
|
1918
|
+
}
|
1919
|
+
#submit {
|
1920
|
+
elem: submit_tag('<strong>$(value)</strong>');
|
1921
|
+
}
|
1922
|
+
</pre>
|
1923
|
+
<div class="terminal_caption">
|
1924
|
+
compile</div>
|
1925
|
+
<pre class="terminal">$ kwartz -l php -p ex-attrvar.plogic ex-attrvar.pdata
|
1926
|
+
<?php echo form_tag('comment/<strong>create</strong>'); ?>
|
1927
|
+
Username: <?php echo text_field('comment', 'username', array('size'=><strong>30</strong>)); ?><br>
|
1928
|
+
Comment: <?php echo text_area('comment', 'text', array('rows'=><strong>3</strong>, 'cols'=><strong>50</strong>)); ?><br>
|
1929
|
+
<?php echo submit_tag('<strong>Send comment</strong>'); ?>
|
1930
|
+
</form>
|
1931
|
+
</pre>
|
1932
|
+
<br>
|
1933
|
+
|
1934
|
+
<a name="property-attrvar-jstl"></a>
|
1935
|
+
<h4 class="section3">JSP</h4>
|
1936
|
+
<div class="program_caption">
|
1937
|
+
presentation data (ex-attrvar.pdata)</div>
|
1938
|
+
<pre class="program"><form action="create" <strong>method="post"</strong>>
|
1939
|
+
Username: <input type="text" id="comment_username" <strong>size="30"</strong>><br>
|
1940
|
+
Comment: <textarea id="comment_text" <strong>rows="3"</strong> <strong>cols="50"</strong>></textarea><br>
|
1941
|
+
<input id="mark:submit" type="submit" <strong>value="Send comment"</strong>>
|
1942
|
+
</form>
|
1943
|
+
</pre>
|
1944
|
+
<div class="program_caption">
|
1945
|
+
presentation logic (ex-attrvar.plogic)</div>
|
1946
|
+
<pre class="program">form {
|
1947
|
+
logic: {
|
1948
|
+
<form:form action="<strong>$(action)</strong>.do">
|
1949
|
+
_cont
|
1950
|
+
</form:form>
|
1951
|
+
}
|
1952
|
+
}
|
1953
|
+
#comment_username {
|
1954
|
+
logic: {
|
1955
|
+
<form:textfield name="username" size="<strong>$(size)</strong>"/>
|
1956
|
+
}
|
1957
|
+
}
|
1958
|
+
#comment_text {
|
1959
|
+
logic: {
|
1960
|
+
<form:textarea name="text", rows="<strong>$(rows)</strong>" cols="<strong>$(cols)</strong>"/>
|
1961
|
+
}
|
1962
|
+
}
|
1963
|
+
#submit {
|
1964
|
+
logic: {
|
1965
|
+
<form:submit value="<strong>$(value)</strong>"/>
|
1966
|
+
}
|
1967
|
+
}
|
1968
|
+
</pre>
|
1969
|
+
<div class="terminal_caption">
|
1970
|
+
compile</div>
|
1971
|
+
<pre class="terminal">$ kwartz -l jstl -p ex-attrvar.plogic ex-attrvar.pdata
|
1972
|
+
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
1973
|
+
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
1974
|
+
<form:form action="<strong>create</strong>.do">
|
1975
|
+
Username: <form:textfield name="username" size="<strong>30</strong>"/>
|
1976
|
+
<br>
|
1977
|
+
Comment: <form:textarea name="text", rows="<strong>3</strong>" cols="<strong>50</strong>"/>
|
1978
|
+
<br>
|
1979
|
+
<form:submit value="<strong>Send comment</strong>"/>
|
1980
|
+
</form:form>
|
1981
|
+
</pre>
|
1982
|
+
<br>
|
1983
|
+
|
1984
|
+
<a name="property-attrvar-eperl"></a>
|
1985
|
+
<h4 class="section3">Perl</h4>
|
1986
|
+
<div class="program_caption">
|
1987
|
+
presentation data (ex-attrvar.pdata)</div>
|
1988
|
+
<pre class="program"><form action="create" <strong>method="post"</strong>>
|
1989
|
+
Username: <input type="text" id="comment_username" <strong>size="30"</strong>><br>
|
1990
|
+
Comment: <textarea id="comment_text" <strong>rows="3"</strong> <strong>cols="50"</strong>></textarea><br>
|
1991
|
+
<input id="mark:submit" type="submit" <strong>value="Send comment"</strong>>
|
1992
|
+
</form>
|
1993
|
+
</pre>
|
1994
|
+
<div class="program_caption">
|
1995
|
+
presentation logic (ex-attrvar.plogic)</div>
|
1996
|
+
<pre class="program">form {
|
1997
|
+
stag: &form_tag({'action'=>'<strong>$(action)</strong>'});
|
1998
|
+
}
|
1999
|
+
#comment_username {
|
2000
|
+
elem: &text_field('comment', 'username', {'size'=><strong>$(size)</strong>});
|
2001
|
+
}
|
2002
|
+
#comment_text {
|
2003
|
+
elem: &text_area('comment', 'text', {'rows'=><strong>$(rows)</strong>, 'cols'=><strong>$(cols)</strong>});
|
2004
|
+
}
|
2005
|
+
#submit {
|
2006
|
+
elem: &submit_tag('<strong>$(value)</strong>');
|
2007
|
+
}
|
2008
|
+
</pre>
|
2009
|
+
<div class="terminal_caption">
|
2010
|
+
compile</div>
|
2011
|
+
<pre class="terminal">$ kwartz -l eperl -p ex-attrvar.plogic ex-attrvar.pdata
|
2012
|
+
<?= &form_tag({'action'=>'<strong>create</strong>'}) !>
|
2013
|
+
Username: <?= &text_field('comment', 'username', {'size'=><strong>30</strong>}) !><br>
|
2014
|
+
Comment: <?= &text_area('comment', 'text', {'rows'=><strong>3</strong>, 'cols'=><strong>50</strong>}) !><br>
|
2015
|
+
<?= &submit_tag('<strong>Send comment</strong>') !>
|
2016
|
+
</form>
|
2017
|
+
</pre>
|
2018
|
+
<br>
|
2019
|
+
|
2020
|
+
<br>
|
2021
|
+
|
2022
|
+
|
1491
2023
|
<br>
|
1492
2024
|
|
1493
2025
|
|
1494
2026
|
<a name="directives"></a>
|
1495
|
-
<h2 class="section1">Directives</h2>
|
2027
|
+
<h2 class="section1">Directives in Presentation Data</h2>
|
1496
2028
|
<p>Directives are commands to embed presentation logics into presentation data.
|
1497
2029
|
For example, <code>title="for item in @list"</code> directive represents iteration of the element.
|
1498
2030
|
</p>
|
@@ -3250,6 +3782,128 @@ compile</div>
|
|
3250
3782
|
<br>
|
3251
3783
|
|
3252
3784
|
|
3785
|
+
<a name="directive-expr"></a>
|
3786
|
+
<h3 class="section2">Language-independent Directive</h3>
|
3787
|
+
<p>Some directives can be language-independent.
|
3788
|
+
</p>
|
3789
|
+
<ul type="disc">
|
3790
|
+
<li>'mark' and 'replace_(element|content)_with_(element|content)' directives can be
|
3791
|
+
language-independent because their argument is element name which is
|
3792
|
+
language-independent.
|
3793
|
+
</li>
|
3794
|
+
<li>'dummy' directive can be language-independent because it takes dummy argument.
|
3795
|
+
</li>
|
3796
|
+
<li>'value', 'elem', 'stag', 'etag', 'cont', and 'default' directives can be
|
3797
|
+
language-independent if their expression argument is one of the following format.
|
3798
|
+
<ul type="circle">
|
3799
|
+
<li><code>variable</code>
|
3800
|
+
</li>
|
3801
|
+
<li><code>object.property</code>
|
3802
|
+
</li>
|
3803
|
+
<li><code>hash['key']</code>, <code>hash["key"]</code>, <code>hash[:key]</code>
|
3804
|
+
</li>
|
3805
|
+
<li><code>array[123]</code>, <code>array[var]</code>
|
3806
|
+
</li>
|
3807
|
+
</ul>
|
3808
|
+
</li>
|
3809
|
+
</ul>
|
3810
|
+
<p>Language-independent directives are always described with id attribute.
|
3811
|
+
</p>
|
3812
|
+
<a name="directive-expr-eruby"></a>
|
3813
|
+
<h4 class="section3">Ruby</h4>
|
3814
|
+
<div class="program_caption">
|
3815
|
+
presentation data (ex-expr.pdata)</div>
|
3816
|
+
<pre class="program"><p id="value:user">foo</p>
|
3817
|
+
<p id="value:user.name">foo</p>
|
3818
|
+
<p id="value:user['name']">foo</p>
|
3819
|
+
<p id="value:user[:name]">foo</p>
|
3820
|
+
<p id="value:user[0]">foo</p>
|
3821
|
+
<p id="value:user[index]">foo</p>
|
3822
|
+
</pre>
|
3823
|
+
<div class="terminal_caption">
|
3824
|
+
compile</div>
|
3825
|
+
<pre class="terminal">$ kwartz -l eruby ex-expr.pdata
|
3826
|
+
<p><%= user %></p>
|
3827
|
+
<p><%= user.name %></p>
|
3828
|
+
<p><%= user['name'] %></p>
|
3829
|
+
<p><%= user[:name] %></p>
|
3830
|
+
<p><%= user[0] %></p>
|
3831
|
+
<p><%= user[index] %></p>
|
3832
|
+
</pre>
|
3833
|
+
<br>
|
3834
|
+
|
3835
|
+
<a name="directive-expr-php"></a>
|
3836
|
+
<h4 class="section3">PHP</h4>
|
3837
|
+
<div class="program_caption">
|
3838
|
+
presentation data (ex-expr.pdata)</div>
|
3839
|
+
<pre class="program"><p id="value:user">foo</p>
|
3840
|
+
<p id="value:user.name">foo</p>
|
3841
|
+
<p id="value:user['name']">foo</p>
|
3842
|
+
<p id="value:user[:name]">foo</p>
|
3843
|
+
<p id="value:user[0]">foo</p>
|
3844
|
+
<p id="value:user[index]">foo</p>
|
3845
|
+
</pre>
|
3846
|
+
<div class="terminal_caption">
|
3847
|
+
compile</div>
|
3848
|
+
<pre class="terminal">$ kwartz -l php ex-expr.pdata
|
3849
|
+
<p><?php echo $user; ?></p>
|
3850
|
+
<p><?php echo $user->name; ?></p>
|
3851
|
+
<p><?php echo $user['name']; ?></p>
|
3852
|
+
<p><?php echo $user['name']; ?></p>
|
3853
|
+
<p><?php echo $user[0]; ?></p>
|
3854
|
+
<p><?php echo $user[$index]; ?></p>
|
3855
|
+
</pre>
|
3856
|
+
<br>
|
3857
|
+
|
3858
|
+
<a name="directive-expr-jstl"></a>
|
3859
|
+
<h4 class="section3">JSP</h4>
|
3860
|
+
<div class="program_caption">
|
3861
|
+
presentation data (ex-expr.pdata)</div>
|
3862
|
+
<pre class="program"><p id="value:user">foo</p>
|
3863
|
+
<p id="value:user.name">foo</p>
|
3864
|
+
<p id="value:user['name']">foo</p>
|
3865
|
+
<p id="value:user[:name]">foo</p>
|
3866
|
+
<p id="value:user[0]">foo</p>
|
3867
|
+
<p id="value:user[index]">foo</p>
|
3868
|
+
</pre>
|
3869
|
+
<div class="terminal_caption">
|
3870
|
+
compile</div>
|
3871
|
+
<pre class="terminal">$ kwartz -l jstl ex-expr.pdata
|
3872
|
+
<p>${user}</p>
|
3873
|
+
<p>${user.name}</p>
|
3874
|
+
<p>${user['name']}</p>
|
3875
|
+
<p>${user['name']}</p>
|
3876
|
+
<p>${user[0]}</p>
|
3877
|
+
<p>${user[index]}</p>
|
3878
|
+
</pre>
|
3879
|
+
<br>
|
3880
|
+
|
3881
|
+
<a name="directive-expr-eperl"></a>
|
3882
|
+
<h4 class="section3">Perl</h4>
|
3883
|
+
<div class="program_caption">
|
3884
|
+
presentation data (ex-expr.pdata)</div>
|
3885
|
+
<pre class="program"><p id="value:user">foo</p>
|
3886
|
+
<p id="value:user.name">foo</p>
|
3887
|
+
<p id="value:user['name']">foo</p>
|
3888
|
+
<p id="value:user[:name]">foo</p>
|
3889
|
+
<p id="value:user[0]">foo</p>
|
3890
|
+
<p id="value:user[index]">foo</p>
|
3891
|
+
</pre>
|
3892
|
+
<div class="terminal_caption">
|
3893
|
+
compile</div>
|
3894
|
+
<pre class="terminal">$ kwartz -l eperl ex-expr.pdata
|
3895
|
+
<p><?= $user !></p>
|
3896
|
+
<p><?= $user->{name} !></p>
|
3897
|
+
<p><?= $user{'name'} !></p>
|
3898
|
+
<p><?= $user{'name'} !></p>
|
3899
|
+
<p><?= $user[0] !></p>
|
3900
|
+
<p><?= $user[$index] !></p>
|
3901
|
+
</pre>
|
3902
|
+
<br>
|
3903
|
+
|
3904
|
+
<br>
|
3905
|
+
|
3906
|
+
|
3253
3907
|
<br>
|
3254
3908
|
|
3255
3909
|
|