kwaff 1.0.0

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