kwaff 1.0.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.
Files changed (85) hide show
  1. data/COPYING +340 -0
  2. data/ChangeLog.txt +118 -0
  3. data/README.txt +96 -0
  4. data/bin/kwaff +131 -0
  5. data/doc/docstyle.css +307 -0
  6. data/doc/examples.html +1283 -0
  7. data/doc/users-guide.html +395 -0
  8. data/examples/Makefile +17 -0
  9. data/examples/ant/Makefile +7 -0
  10. data/examples/ant/build.kwaff +57 -0
  11. data/examples/hibernate/AuctionItem.hbm.kwaff +45 -0
  12. data/examples/hibernate/Bid.hbm.kwaff +42 -0
  13. data/examples/hibernate/Makefile +9 -0
  14. data/examples/hibernate/User.hbm.kwaff +65 -0
  15. data/examples/hibernate/hibernate.cfg.kwaff +17 -0
  16. data/examples/seasar2/Makefile +9 -0
  17. data/examples/seasar2/seasar2.kwaff +62 -0
  18. data/examples/servlet/Makefile +9 -0
  19. data/examples/servlet/web.kwaff +37 -0
  20. data/examples/spring/Makefile +9 -0
  21. data/examples/spring/applicationContext.kwaff +147 -0
  22. data/examples/xhtml/Makefile +9 -0
  23. data/examples/xhtml/README.kwaff +84 -0
  24. data/examples/xi/Makefile +9 -0
  25. data/examples/xi/bbs.kwaff +58 -0
  26. data/lib/kwaff.rb +85 -0
  27. data/lib/kwaff/doctype.rb +124 -0
  28. data/lib/kwaff/doctypes.yaml +138 -0
  29. data/lib/kwaff/errors.rb +26 -0
  30. data/lib/kwaff/node.rb +101 -0
  31. data/lib/kwaff/optparse.rb +101 -0
  32. data/lib/kwaff/orderedhash.rb +56 -0
  33. data/lib/kwaff/parser.rb +342 -0
  34. data/lib/kwaff/rexml.rb +394 -0
  35. data/lib/kwaff/translator.rb +275 -0
  36. data/setup.rb +1331 -0
  37. data/test/ex101.exp +10 -0
  38. data/test/ex101.in +8 -0
  39. data/test/ex102.exp +14 -0
  40. data/test/ex102.in +16 -0
  41. data/test/ex103.exp +13 -0
  42. data/test/ex103.in +13 -0
  43. data/test/ex104.exp +24 -0
  44. data/test/ex104.in +24 -0
  45. data/test/ex105.exp +12 -0
  46. data/test/ex105.in +18 -0
  47. data/test/ex106.exp +22 -0
  48. data/test/ex106.in +21 -0
  49. data/test/ex107.exp +14 -0
  50. data/test/ex107.in +14 -0
  51. data/test/ex111.exp +7 -0
  52. data/test/ex111.in +13 -0
  53. data/test/ex112.exp +15 -0
  54. data/test/ex112.in +16 -0
  55. data/test/ex113.exp +23 -0
  56. data/test/ex113.in +22 -0
  57. data/test/ex114.exp +12 -0
  58. data/test/ex114.in +17 -0
  59. data/test/ex115.exp +9 -0
  60. data/test/ex115.in +12 -0
  61. data/test/ex121.exp +10 -0
  62. data/test/ex121.in +8 -0
  63. data/test/ex122.exp +10 -0
  64. data/test/ex122.in +8 -0
  65. data/test/ex301.exp +13 -0
  66. data/test/ex301.in +14 -0
  67. data/test/ex302.exp +15 -0
  68. data/test/ex302.in +18 -0
  69. data/test/ex303.exp +15 -0
  70. data/test/ex303.in +16 -0
  71. data/test/ex304.exp +17 -0
  72. data/test/ex304.in +15 -0
  73. data/test/ex311.exp +18 -0
  74. data/test/ex311.in +32 -0
  75. data/test/ex312.exp +21 -0
  76. data/test/ex312.in +18 -0
  77. data/test/ex313.exp +20 -0
  78. data/test/ex313.in +33 -0
  79. data/test/ex314.exp +34 -0
  80. data/test/ex314.in +24 -0
  81. data/test/ex801.exp +16 -0
  82. data/test/ex801.in +15 -0
  83. data/test/test.rb +273 -0
  84. data/todo.txt +1 -0
  85. metadata +132 -0
@@ -0,0 +1,395 @@
1
+ <?xml version="1.0"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
4
+ <html xmlns="http://www.w3.org/1999/xhtml">
5
+ <head>
6
+ <meta http-equiv="Content-Type" content="text/xhtml" />
7
+ <title>Kwaff Users' Guide</title>
8
+ <meta name="generator" content="kwaser" />
9
+ <link rel="stylesheet" href="docstyle.css" type="text/css" />
10
+ <meta http-equiv="Content-Style-Type" content="text/css" />
11
+ </head>
12
+ <body>
13
+
14
+ <div id="mainbody">
15
+
16
+ <!-- BeginEditable "doc_content" -->
17
+ <div id="doc_content">
18
+ <h1 id="doc_title">Kwaff Users' Guide</h1>
19
+ <div id="doc_author">
20
+ last update: $Date: 2005-06-14 21:50:59 +0900 (Tue, 14 Jun 2005) $<br />
21
+ </div>
22
+
23
+ <div class="toc">
24
+ <span>Table of Contents:</span>
25
+ <ul>
26
+ <li><a href="#intro">Introduction</a>
27
+ </li>
28
+ <li><a href="#install">Install</a>
29
+ </li>
30
+ <li><a href="#format">Kwaff Format</a>
31
+ <ul>
32
+ <li><a href="#format-element">Element</a>
33
+ </li>
34
+ <li><a href="#format-attribute">Attribute</a>
35
+ </li>
36
+ <li><a href="#format-text">Text</a>
37
+ </li>
38
+ <li><a href="#format-comment">Comment</a>
39
+ </li>
40
+ <li><a href="#format-cdata">CData</a>
41
+ </li>
42
+ <li><a href="#format-doctype">Document Type</a>
43
+ </li>
44
+ <li><a href="#format-xmldecl">XML Declaration</a>
45
+ </li>
46
+ </ul>
47
+ </li>
48
+ <li><a href="#rexml">Kwaff and REXML</a>
49
+ </li>
50
+ </ul>
51
+ </div>
52
+ <a name="intro"></a>
53
+ <h2 class="section1">Introduction</h2>
54
+ <p>Kwaff is a little tool to convert Kwaff format document into XML document.
55
+ </p>
56
+ <p>Kwaff format is a simple and friendly format for human than XML.
57
+ You'd like it.
58
+ </p>
59
+ <a name="example.kwaff"></a>
60
+ <div class="program_caption">Kwaff format document (filename `example.kwaff'):</div>
61
+ <pre class="program">? encoding = ISO-8859-1
62
+ ? doctype = @xhtml
63
+ * html
64
+ - lang = en
65
+ * body
66
+ * ul
67
+ * li = item1
68
+ * li = item2
69
+ * li = item3
70
+ # this is a XML comment
71
+ // this is a Kwaff comment (ignored by kwaff)
72
+ </pre>
73
+ <div class="terminal_caption">Convert:</div>
74
+ <pre class="terminal">$ kwaff example.kwaff &gt; example.xml
75
+ </pre>
76
+ <div class="program_caption">XML format document (filename `example.xml'):</div>
77
+ <pre class="program">&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;
78
+ &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
79
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
80
+ &lt;html lang="en"&gt;
81
+ &lt;body&gt;
82
+ &lt;ul&gt;
83
+ &lt;li&gt;item1&lt;/li&gt;
84
+ &lt;li&gt;item2&lt;/li&gt;
85
+ &lt;li&gt;item3&lt;/li&gt;
86
+ &lt;/ul&gt;
87
+ &lt;/body&gt;
88
+ &lt;!-- this is a XML comment --&gt;
89
+ &lt;/html&gt;
90
+ </pre>
91
+ <p>Indent width is 2 (default). You can change it by the command-line option <code>-i<i>N</i></code> (input indent width)
92
+ and <code>-I<i>N</i></code> (output indent width).
93
+ </p>
94
+ <p>Kwaff can also revert XML document into Kwaff format document.
95
+ </p>
96
+ <pre class="terminal">### revert XML document into Kwaff document
97
+ $ kwaff -r example.xml &gt; example.kwaff
98
+ </pre>
99
+
100
+
101
+
102
+ <a name="install"></a>
103
+ <h2 class="section1">Install</h2>
104
+ <ul class="ul1">
105
+ <li>If you have installed RubyGems, just type <code>gem install --remote kwaff</code>.
106
+ </li>
107
+ <li>Else if you can be administrator, use <code>setup.rb</code>.
108
+ <pre class="terminal">$ tar xjf kwaff_X.X.X.tar.bz2
109
+ $ cd kwaff_X.X.X/
110
+ $ ruby setup.rb config
111
+ $ ruby setup.rb setup
112
+ $ su -
113
+ # ruby setup.rb install
114
+ </pre>
115
+ </li>
116
+ <li>Else copy bin/kwaff script and lib/kwaff* into proper directory.
117
+ <pre class="terminal">$ tar xjf kwaff_X.X.X.tar.bz2
118
+ $ cd kwaff_X.X.X/
119
+ $ mkdir $HOME/bin; copy bin/kwaff $HOME/bin
120
+ $ mkdir $HOME/lib/ruby; copy lib/kwaff* $HOME/lib/ruby
121
+ $ export RUBYLIB=$HOME/lib/ruby
122
+ </pre>
123
+ </li>
124
+ </ul>
125
+
126
+
127
+
128
+ <a name="format"></a>
129
+ <h2 class="section1">Kwaff Format</h2>
130
+ <a name="format-element"></a>
131
+ <h3 class="section2">Element</h3>
132
+ <a name="element1.kwaff"></a>
133
+ <div class="program_caption">Kwaff:</div>
134
+ <pre class="program">* html
135
+ * body
136
+ * p = text
137
+ </pre>
138
+ <div class="program_caption">XML:</div>
139
+ <pre class="program">&lt;?xml version="1.0"?&gt;
140
+ &lt;html&gt;
141
+ &lt;body&gt;
142
+ &lt;p&gt;text&lt;/p&gt;
143
+ &lt;/body&gt;
144
+ &lt;/html&gt;
145
+ </pre>
146
+
147
+
148
+
149
+ <a name="format-attribute"></a>
150
+ <h3 class="section2">Attribute</h3>
151
+ <a name="attribute1.kwaff"></a>
152
+ <div class="program_caption">Kwaff:</div>
153
+ <pre class="program">* div
154
+ - align = center
155
+ * a = Kwaff homepage
156
+ - href = http://kuwata-lab.com/kwaff
157
+ - class = link
158
+ </pre>
159
+ <div class="program_caption">XML:</div>
160
+ <pre class="program">&lt;?xml version="1.0"?&gt;
161
+ &lt;div align="center"&gt;
162
+ &lt;a href="http://kuwata-lab.com/kwaff" class="link"&gt;Kwaff homepage&lt;/a&gt;
163
+ &lt;/div&gt;
164
+ </pre>
165
+
166
+
167
+
168
+ <a name="format-text"></a>
169
+ <h3 class="section2">Text</h3>
170
+ <a name="text1.kwaff"></a>
171
+ <div class="program_caption">Kwaff:</div>
172
+ <pre class="program">* body
173
+ * p = foo bar baz...
174
+ * p
175
+ . foo
176
+ . bar
177
+ . baz...
178
+ * p = &lt;&lt;&lt;END
179
+ foo
180
+ bar
181
+ baz...
182
+ END
183
+ * p = &lt;&lt;&lt;END
184
+ foo
185
+ bar
186
+ baz...
187
+ END
188
+ </pre>
189
+ <div class="program_caption">XML:</div>
190
+ <pre class="program">&lt;?xml version="1.0"?&gt;
191
+ &lt;body&gt;
192
+ &lt;p&gt;foo bar baz...&lt;/p&gt;
193
+ &lt;p&gt;foo
194
+ bar
195
+ baz...&lt;/p&gt;
196
+ &lt;p&gt; foo
197
+ bar
198
+ baz...&lt;/p&gt;
199
+ &lt;p&gt;foo
200
+ bar
201
+ baz...&lt;/p&gt;
202
+ &lt;/body&gt;
203
+ </pre>
204
+
205
+
206
+
207
+ <a name="format-comment"></a>
208
+ <h3 class="section2">Comment</h3>
209
+ <a name="comment1.kwaff"></a>
210
+ <div class="program_caption">Kwaff:</div>
211
+ <pre class="program">* body
212
+ # This is a XML comment
213
+ // This is a Kwaff comment
214
+ * p = foo bar baz...
215
+ </pre>
216
+ <div class="program_caption">XML:</div>
217
+ <pre class="program">&lt;?xml version="1.0"?&gt;
218
+ &lt;body&gt;
219
+ &lt;!-- This is a XML comment --&gt;
220
+ &lt;p&gt;foo bar baz...&lt;/p&gt;
221
+ &lt;/body&gt;
222
+ </pre>
223
+
224
+
225
+
226
+ <a name="format-cdata"></a>
227
+ <h3 class="section2">CData</h3>
228
+ <a name="cdata1.kwaff"></a>
229
+ <div class="program_caption">Kwaff:</div>
230
+ <pre class="program">* body
231
+ * p
232
+ . if (a &gt; 0 &amp;&amp; a &lt; 100) ... end
233
+ * p
234
+ ~ if (a &gt; 0 &amp;&amp; a &lt; 100) ... end
235
+
236
+ * pre = &lt;&lt;&lt;END
237
+ &lt;b&gt;foo&lt;/b&gt;
238
+ &lt;i&gt;bar&lt;/i&gt;
239
+ END
240
+ * pre = &lt;&lt;&lt;'END'
241
+ &lt;b&gt;foo&lt;/b&gt;
242
+ &lt;i&gt;bar&lt;/i&gt;
243
+ END
244
+
245
+ ~ &lt;!--
246
+ ~
247
+ * dl
248
+ * dt = word
249
+ * dd = desc
250
+ ~ --&gt;
251
+ ~
252
+ </pre>
253
+ <div class="program_caption">XML:</div>
254
+ <pre class="program">&lt;?xml version="1.0"?&gt;
255
+ &lt;body&gt;
256
+ &lt;p&gt;if (a &amp;gt; 0 &amp;amp;&amp;amp; a &amp;lt; 100) ... end&lt;/p&gt;
257
+ &lt;p&gt;if (a &gt; 0 &amp;&amp; a &lt; 100) ... end&lt;/p&gt;
258
+
259
+ &lt;pre&gt;&amp;lt;b&amp;gt;foo&amp;lt;/b&amp;gt;
260
+ &amp;lt;i&amp;gt;bar&amp;lt;/i&amp;gt;&lt;/pre&gt;
261
+ &lt;pre&gt;&lt;b&gt;foo&lt;/b&gt;
262
+ &lt;i&gt;bar&lt;/i&gt;&lt;/pre&gt;
263
+
264
+ &lt;!--
265
+ &lt;dl&gt;
266
+ &lt;dt&gt;word&lt;/dt&gt;
267
+ &lt;dd&gt;desc&lt;/dd&gt;
268
+ &lt;/dl&gt;
269
+ --&gt;
270
+ &lt;/body&gt;
271
+ </pre>
272
+
273
+
274
+
275
+ <a name="format-doctype"></a>
276
+ <h3 class="section2">Document Type</h3>
277
+ <a name="doctype1.kwaff"></a>
278
+ <div class="program_caption">Kwaff:</div>
279
+ <pre class="program">? doctype = &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;
280
+ * html
281
+ * body
282
+ </pre>
283
+ <div class="program_caption">XML:</div>
284
+ <pre class="program">&lt;?xml version="1.0"?&gt;
285
+ &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;
286
+ &lt;html&gt;
287
+ &lt;body/&gt;
288
+ &lt;/html&gt;
289
+ </pre>
290
+ <p> Kwaff allow you to specify doctype shortly.
291
+ </p>
292
+ <a name="doctype2.kwaff"></a>
293
+ <div class="program_caption">Kwaff:</div>
294
+ <pre class="program">? doctype = @xhtml
295
+ * html
296
+ * body
297
+ </pre>
298
+ <div class="program_caption">XML:</div>
299
+ <pre class="program">&lt;?xml version="1.0"?&gt;
300
+ &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
301
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
302
+ &lt;html&gt;
303
+ &lt;body/&gt;
304
+ &lt;/html&gt;
305
+ </pre>
306
+ <p> You can see all short name of document type by '<code>kwaff -D</code>'.
307
+ If you want to add new document type, see lib/kwaff/doctypes.yaml file.
308
+ </p>
309
+
310
+
311
+
312
+ <a name="format-xmldecl"></a>
313
+ <h3 class="section2">XML Declaration</h3>
314
+ <a name="xmldecl1.kwaff"></a>
315
+ <div class="program_caption">Kwaff:</div>
316
+ <pre class="program">? xmlversion = 1.1
317
+ ? encoding = ISO-8859-1
318
+ ? doctype = @xhtml
319
+ * html
320
+ * body
321
+ * p = foo
322
+ </pre>
323
+ <div class="program_caption">XML:</div>
324
+ <pre class="program">&lt;?xml version="1.1" encoding="ISO-8859-1"?&gt;
325
+ &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
326
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
327
+ &lt;html&gt;
328
+ &lt;body&gt;
329
+ &lt;p&gt;foo&lt;/p&gt;
330
+ &lt;/body&gt;
331
+ &lt;/html&gt;
332
+ </pre>
333
+
334
+
335
+
336
+
337
+
338
+
339
+ <a name="rexml"></a>
340
+ <h2 class="section1">Kwaff and REXML</h2>
341
+ <p>You can convert Kwaff format string into REXML document.
342
+ </p>
343
+ <a name="rexml1.rb"></a>
344
+ <div class="program_caption">Kwaff format string ==&gt; REXML document</div>
345
+ <pre class="program">#/usr/bin/env ruby
346
+ require 'kwaff'
347
+ require 'kwaff/rexml'
348
+ require 'rexml/document'
349
+
350
+ ## read Kwaff format string
351
+ kwaff_str = ARGF.read()
352
+
353
+ ## convert Kwaff format string into REXML::Document
354
+ rexml_document = Kwaff::Rexml::parse_document(kwaff_str)
355
+ rexml_document.write($stdout, 0)
356
+ </pre>
357
+ <a name="rexml2.rb"></a>
358
+ <div class="program_caption">REXML document ==&gt; Kwaff format string</div>
359
+ <pre class="program">#/usr/bin/env ruby
360
+ require 'kwaff'
361
+ require 'kwaff/rexml'
362
+ require 'rexml/document'
363
+
364
+ ## create REXML Document
365
+ xml_str = ARGF.read()
366
+ rexml_document = REXML::Document.new(xml_str)
367
+
368
+ ## convert REXML::Document into Kwaff format string
369
+ translator = Kwaff::Rexml::KwaffTranslator.new()
370
+ kwaff_str = translator.translate(rexml_document)
371
+ print kwaff_str
372
+ </pre>
373
+ <a name="rexml3.rb"></a>
374
+ <div class="program_caption">XML string ==&gt; Kwaff format string</div>
375
+ <pre class="program">#/usr/bin/env ruby
376
+ require 'kwaff'
377
+ require 'kwaff/rexml'
378
+
379
+ ## read XML format string
380
+ xml_str = ARGF.read()
381
+
382
+ ## convert XML format string into Kwaff format string
383
+ kwaff_str = Kwaff::Rexml::revert(xml_str)
384
+ print kwaff_str
385
+ </pre>
386
+
387
+
388
+
389
+
390
+ </div>
391
+ <!-- EndEditable "doc_content" -->
392
+ </div>
393
+
394
+ </body>
395
+ </html>
@@ -0,0 +1,17 @@
1
+ all:
2
+ cd xhtml; make all
3
+ cd servlet; make all
4
+ cd spring; make all
5
+ cd ant; make all
6
+ cd hibernate; make all
7
+ cd seasar2; make all
8
+ cd xi; make all
9
+
10
+ clean:
11
+ cd xhtml; make clean
12
+ cd servlet; make clean
13
+ cd spring; make clean
14
+ cd ant; make clean
15
+ cd hibernate; make clean
16
+ cd seasar2; make clean
17
+ cd xi; make clean
@@ -0,0 +1,7 @@
1
+ all: build.xml
2
+
3
+ %.xml: %.kwaff
4
+ kwaff $< > $@
5
+
6
+ clean:
7
+ rm -f build.xml
@@ -0,0 +1,57 @@
1
+ //
2
+ // from http://ant.apache.org/manual/using.html#example
3
+ //
4
+ * project
5
+ - name = MyProject
6
+ - default = dist
7
+ - basedir = .
8
+ * description = simple example build file
9
+
10
+ # set global properties for this build
11
+ * property
12
+ - name = src
13
+ - location = src
14
+ * property
15
+ - name = build
16
+ - location = build
17
+ * property
18
+ - name = dist
19
+ - location = dist
20
+
21
+ * target
22
+ - name = init
23
+ # Create the time stamp
24
+ * tstamp
25
+ # Create the build directory structure used by compile
26
+ * mkdir
27
+ - dir = ${build}
28
+
29
+ * target
30
+ - name = compile
31
+ - depends = init
32
+ - description = compile the source
33
+ # Compile the java code from ${src} into ${build}
34
+ * javac
35
+ - srcdir = ${src}
36
+ - destdir = ${build}
37
+
38
+ * target
39
+ - name = dist
40
+ - depends = compile
41
+ - description = generate the distribution
42
+ # Create the distribution directory
43
+ * mkdir
44
+ - dir = ${dist}/lib
45
+ # Put everything in ${build} into the MyProject-${DSTAMP}.jar file
46
+ * jar
47
+ - jarfile = ${dist}/lib/MyProject-${DSTAMP}.jar
48
+ - basedir = ${build}
49
+
50
+ * target
51
+ - name = clean
52
+ - description = clean up
53
+ # Delete the ${build} and ${dist} directory trees
54
+ * delete
55
+ - dir = ${build}
56
+ * delete
57
+ - dir = ${dist}