kwartz 3.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 (169) hide show
  1. data/COPYING +340 -0
  2. data/ChangeLog +103 -0
  3. data/README.txt +37 -0
  4. data/bin/kwartz +12 -0
  5. data/doc-api/classes/Kwartz.html +218 -0
  6. data/doc-api/classes/Kwartz/Assertion.html +140 -0
  7. data/doc-api/classes/Kwartz/AssertionError.html +148 -0
  8. data/doc-api/classes/Kwartz/AttrInfo.html +320 -0
  9. data/doc-api/classes/Kwartz/BaseError.html +206 -0
  10. data/doc-api/classes/Kwartz/BaseTranslator.html +331 -0
  11. data/doc-api/classes/Kwartz/CharacterType.html +212 -0
  12. data/doc-api/classes/Kwartz/CommandOptionError.html +154 -0
  13. data/doc-api/classes/Kwartz/CommandOptions.html +374 -0
  14. data/doc-api/classes/Kwartz/Config.html +150 -0
  15. data/doc-api/classes/Kwartz/ConvertError.html +191 -0
  16. data/doc-api/classes/Kwartz/Converter.html +252 -0
  17. data/doc-api/classes/Kwartz/CssStyleParser.html +483 -0
  18. data/doc-api/classes/Kwartz/DocumentRuleset.html +369 -0
  19. data/doc-api/classes/Kwartz/ElementExpander.html +325 -0
  20. data/doc-api/classes/Kwartz/ElementInfo.html +312 -0
  21. data/doc-api/classes/Kwartz/ElementRuleset.html +582 -0
  22. data/doc-api/classes/Kwartz/EperlHandler.html +338 -0
  23. data/doc-api/classes/Kwartz/EperlTranslator.html +167 -0
  24. data/doc-api/classes/Kwartz/ErubisHandler.html +113 -0
  25. data/doc-api/classes/Kwartz/ErubisTranslator.html +168 -0
  26. data/doc-api/classes/Kwartz/ErubyHandler.html +337 -0
  27. data/doc-api/classes/Kwartz/ErubyTranslator.html +167 -0
  28. data/doc-api/classes/Kwartz/ExpandStatement.html +227 -0
  29. data/doc-api/classes/Kwartz/Expression.html +119 -0
  30. data/doc-api/classes/Kwartz/Handler.html +558 -0
  31. data/doc-api/classes/Kwartz/JstlHandler.html +657 -0
  32. data/doc-api/classes/Kwartz/JstlTranslator.html +226 -0
  33. data/doc-api/classes/Kwartz/KwartzError.html +146 -0
  34. data/doc-api/classes/Kwartz/Main.html +384 -0
  35. data/doc-api/classes/Kwartz/NativeExpression.html +236 -0
  36. data/doc-api/classes/Kwartz/NativeStatement.html +254 -0
  37. data/doc-api/classes/Kwartz/Node.html +156 -0
  38. data/doc-api/classes/Kwartz/ParseError.html +148 -0
  39. data/doc-api/classes/Kwartz/PhpHandler.html +333 -0
  40. data/doc-api/classes/Kwartz/PhpTranslator.html +194 -0
  41. data/doc-api/classes/Kwartz/PresentationLogicParser.html +830 -0
  42. data/doc-api/classes/Kwartz/PrintStatement.html +221 -0
  43. data/doc-api/classes/Kwartz/RailsHandler.html +587 -0
  44. data/doc-api/classes/Kwartz/RailsTranslator.html +167 -0
  45. data/doc-api/classes/Kwartz/RubyStyleParser.html +558 -0
  46. data/doc-api/classes/Kwartz/Ruleset.html +117 -0
  47. data/doc-api/classes/Kwartz/Statement.html +119 -0
  48. data/doc-api/classes/Kwartz/StrutsTranslator.html +190 -0
  49. data/doc-api/classes/Kwartz/TagInfo.html +314 -0
  50. data/doc-api/classes/Kwartz/TextConverter.html +270 -0
  51. data/doc-api/classes/Kwartz/Translator.html +318 -0
  52. data/doc-api/classes/Test.html +107 -0
  53. data/doc-api/classes/Test/Unit.html +101 -0
  54. data/doc-api/created.rid +1 -0
  55. data/doc-api/files/__/README_txt.html +150 -0
  56. data/doc-api/files/kwartz/assert_rb.html +114 -0
  57. data/doc-api/files/kwartz/binding/eperl_rb.html +116 -0
  58. data/doc-api/files/kwartz/binding/erubis_rb.html +116 -0
  59. data/doc-api/files/kwartz/binding/eruby_rb.html +115 -0
  60. data/doc-api/files/kwartz/binding/jstl_rb.html +116 -0
  61. data/doc-api/files/kwartz/binding/php_rb.html +116 -0
  62. data/doc-api/files/kwartz/binding/rails_rb.html +115 -0
  63. data/doc-api/files/kwartz/binding/struts_rb.html +117 -0
  64. data/doc-api/files/kwartz/config_rb.html +107 -0
  65. data/doc-api/files/kwartz/converter_rb.html +119 -0
  66. data/doc-api/files/kwartz/error_rb.html +107 -0
  67. data/doc-api/files/kwartz/main_rb.html +124 -0
  68. data/doc-api/files/kwartz/node_rb.html +114 -0
  69. data/doc-api/files/kwartz/parser_rb.html +117 -0
  70. data/doc-api/files/kwartz/translator_rb.html +115 -0
  71. data/doc-api/files/kwartz/util/assert-text-equal_rb.html +115 -0
  72. data/doc-api/files/kwartz/util/testcase-helper_rb.html +115 -0
  73. data/doc-api/files/kwartz_rb.html +120 -0
  74. data/doc-api/fr_class_index.html +75 -0
  75. data/doc-api/fr_file_index.html +45 -0
  76. data/doc-api/fr_method_index.html +216 -0
  77. data/doc-api/index.html +24 -0
  78. data/doc-api/rdoc-style.css +208 -0
  79. data/doc/docstyle.css +188 -0
  80. data/doc/p-pattern.html +1207 -0
  81. data/doc/reference.html +3396 -0
  82. data/doc/users-guide.html +1670 -0
  83. data/examples/breadcrumbs1/Makefile +15 -0
  84. data/examples/breadcrumbs1/breadcrumbs.eruby.plogic +27 -0
  85. data/examples/breadcrumbs1/breadcrumbs.html +12 -0
  86. data/examples/breadcrumbs1/breadcrumbs.jstl.plogic +28 -0
  87. data/examples/breadcrumbs1/breadcrumbs.php.plogic +26 -0
  88. data/examples/breadcrumbs1/main.php +12 -0
  89. data/examples/breadcrumbs1/main.rb +12 -0
  90. data/examples/breadcrumbs2/Makefile +15 -0
  91. data/examples/breadcrumbs2/breadcrumbs.eruby.plogic +22 -0
  92. data/examples/breadcrumbs2/breadcrumbs.html +14 -0
  93. data/examples/breadcrumbs2/breadcrumbs.jstl.plogic +24 -0
  94. data/examples/breadcrumbs2/breadcrumbs.php.plogic +23 -0
  95. data/examples/breadcrumbs2/main.php +12 -0
  96. data/examples/breadcrumbs2/main.rb +12 -0
  97. data/examples/pagelayout/Makefile +47 -0
  98. data/examples/pagelayout/content.eruby.plogic +44 -0
  99. data/examples/pagelayout/content.jstl.plogic +36 -0
  100. data/examples/pagelayout/content.php.plogic +37 -0
  101. data/examples/pagelayout/content1.html +36 -0
  102. data/examples/pagelayout/content2.html +29 -0
  103. data/examples/pagelayout/design.css +40 -0
  104. data/examples/pagelayout/layout.html +50 -0
  105. data/examples/pagelayout/main.php +55 -0
  106. data/examples/pagelayout/main.rb +77 -0
  107. data/examples/pagelayout/menu.eruby.plogic +14 -0
  108. data/examples/pagelayout/menu.html +13 -0
  109. data/examples/pagelayout/menu.jstl.plogic +14 -0
  110. data/examples/pagelayout/menu.php.plogic +14 -0
  111. data/examples/rails1/Makefile +36 -0
  112. data/examples/rails1/README +19 -0
  113. data/examples/rails1/application_helper.rb +31 -0
  114. data/examples/rails1/edit.html +28 -0
  115. data/examples/rails1/edit.plogic +10 -0
  116. data/examples/rails1/form.html +52 -0
  117. data/examples/rails1/form.plogic +33 -0
  118. data/examples/rails1/layout.plogic +15 -0
  119. data/examples/rails1/link_to.plogic +19 -0
  120. data/examples/rails1/list.html +48 -0
  121. data/examples/rails1/list.plogic +28 -0
  122. data/examples/rails1/new.html +27 -0
  123. data/examples/rails1/new.plogic +10 -0
  124. data/examples/rails1/reader.plogic +29 -0
  125. data/examples/rails1/show.html +40 -0
  126. data/examples/rails1/show.plogic +4 -0
  127. data/examples/rails1/writer.plogic +8 -0
  128. data/examples/table1/Makefile +15 -0
  129. data/examples/table1/main.php +11 -0
  130. data/examples/table1/main.rb +11 -0
  131. data/examples/table1/table1.eruby.plogic +21 -0
  132. data/examples/table1/table1.html +16 -0
  133. data/examples/table1/table1.jstl.plogic +21 -0
  134. data/examples/table1/table1.php.plogic +22 -0
  135. data/kwartz.gemspec +55 -0
  136. data/lib/kwartz.rb +13 -0
  137. data/lib/kwartz/assert.rb +31 -0
  138. data/lib/kwartz/binding/eperl.rb +166 -0
  139. data/lib/kwartz/binding/erubis.rb +61 -0
  140. data/lib/kwartz/binding/eruby.rb +164 -0
  141. data/lib/kwartz/binding/jstl.rb +334 -0
  142. data/lib/kwartz/binding/php.rb +167 -0
  143. data/lib/kwartz/binding/rails.rb +295 -0
  144. data/lib/kwartz/binding/struts.rb +109 -0
  145. data/lib/kwartz/config.rb +28 -0
  146. data/lib/kwartz/converter.rb +920 -0
  147. data/lib/kwartz/error.rb +41 -0
  148. data/lib/kwartz/main.rb +464 -0
  149. data/lib/kwartz/node.rb +454 -0
  150. data/lib/kwartz/parser.rb +903 -0
  151. data/lib/kwartz/translator.rb +153 -0
  152. data/lib/kwartz/util/assert-text-equal.rb +44 -0
  153. data/lib/kwartz/util/testcase-helper.rb +112 -0
  154. data/setup.rb +1331 -0
  155. data/test/test-compile.rb +36 -0
  156. data/test/test-compile.yaml +178 -0
  157. data/test/test-converter.rb +34 -0
  158. data/test/test-converter.yaml +127 -0
  159. data/test/test-directives.rb +32 -0
  160. data/test/test-directives.yaml +1411 -0
  161. data/test/test-main.rb +464 -0
  162. data/test/test-parser.rb +54 -0
  163. data/test/test-parser.yaml +394 -0
  164. data/test/test-rails.rb +28 -0
  165. data/test/test-rails.yaml +301 -0
  166. data/test/test-ruleset.rb +36 -0
  167. data/test/test-ruleset.yaml +804 -0
  168. data/test/test.rb +44 -0
  169. metadata +236 -0
@@ -0,0 +1,464 @@
1
+ ###
2
+ ### $Rev: 112 $
3
+ ### $Release: 3.0.0 $
4
+ ### copyright(c) 2004-2006 kuwata-lab.com all rights reserved
5
+ ###
6
+
7
+ require "#{File.dirname(__FILE__)}/test.rb"
8
+
9
+
10
+ PDATA = <<END
11
+ <html>
12
+ <body>
13
+ <h1 id="doctitle">hoge</h1>
14
+ <table id="content">
15
+ <tr id="mark:list">
16
+ <td id="mark:item">item</td>
17
+ </tr>
18
+ </table>
19
+ </body>
20
+ </html>
21
+ END
22
+
23
+
24
+ ERUBY_PLOGIC = <<END
25
+ #doctitle {
26
+ value: @title;
27
+ remove: "id";
28
+ }
29
+ #list {
30
+ logic: {
31
+ for item in @list
32
+ _elem
33
+ end
34
+ }
35
+ }
36
+ #item {
37
+ Value: item;
38
+ }
39
+ END
40
+
41
+
42
+ ERUBY_OUTPUT = <<END
43
+ <html>
44
+ <body>
45
+ <h1><%= @title %></h1>
46
+ <table id="content">
47
+ <% for item in @list %>
48
+ <tr>
49
+ <td><%=h item %></td>
50
+ </tr>
51
+ <% end %>
52
+ </table>
53
+ </body>
54
+ </html>
55
+ END
56
+
57
+
58
+ PHP_PLOGIC = <<END
59
+ #doctitle {
60
+ value: $title;
61
+ remove: "id";
62
+ }
63
+ #list {
64
+ logic: {
65
+ foreach ($list as $item) {
66
+ _elem();
67
+ }
68
+ }
69
+ }
70
+ #item {
71
+ Value: $item;
72
+ }
73
+ END
74
+
75
+
76
+ PHP_OUTPUT = <<END
77
+ <html>
78
+ <body>
79
+ <h1><?php echo $title; ?></h1>
80
+ <table id="content">
81
+ <?php foreach ($list as $item) { ?>
82
+ <tr>
83
+ <td><?php echo htmlspecialchars($item); ?></td>
84
+ </tr>
85
+ <?php } ?>
86
+ </table>
87
+ </body>
88
+ </html>
89
+ END
90
+
91
+
92
+ YAML_DATA = <<END
93
+ title: kwartz example
94
+ list:
95
+ - <aaa>
96
+ - b&b
97
+ - '"ccc"'
98
+ END
99
+
100
+ YAML_OUTPUT = <<END
101
+ <html>
102
+ <body>
103
+ <h1>kwartz example</h1>
104
+ <table id="content">
105
+ <tr>
106
+ <td>&lt;aaa&gt;</td>
107
+ </tr>
108
+ <tr>
109
+ <td>b&amp;b</td>
110
+ </tr>
111
+ <tr>
112
+ <td>&quot;ccc&quot;</td>
113
+ </tr>
114
+ </table>
115
+ </body>
116
+ </html>
117
+ END
118
+
119
+
120
+ class File
121
+ def self.write(filename, content)
122
+ File.open(filename, 'w') { |f| f.write(content) }
123
+ end
124
+ end
125
+
126
+
127
+ class MainTest < Test::Unit::TestCase
128
+
129
+ ## define test methods
130
+ #filename = __FILE__.sub(/\.rb$/, '.yaml')
131
+ #load_yaml_testdata(filename)
132
+
133
+
134
+ def _test
135
+ @name = (caller()[0] =~ /in `test_(.*?)'/) && $1
136
+ begin
137
+ File.write("#{@name}.pdata", @pdata) if @pdata
138
+ File.write("#{@name}.plogic", @plogic) if @plogic
139
+ File.write("#{@name}.yaml", @yamldata) if @yamldata
140
+ main = Kwartz::Main.new(@argv)
141
+ if @exception
142
+ mesg = nil
143
+ assert_raise(@exception) do
144
+ begin
145
+ actual = main.execute()
146
+ rescue => ex
147
+ mesg = ex.message
148
+ raise ex
149
+ end
150
+ end
151
+ assert_text_equal(@message, mesg) if @message
152
+ else
153
+ actual = main.execute()
154
+ @actual = actual
155
+ assert_text_equal(@expected, actual)
156
+ end
157
+ ensure
158
+ f = nil
159
+ File.unlink(f) if test(?f, f = "#{@name}.pdata")
160
+ File.unlink(f) if test(?f, f = "#{@name}.plogic")
161
+ File.unlink(f) if test(?f, f = "#{@name}.yaml")
162
+ end
163
+ end
164
+
165
+
166
+ def test_pdata1
167
+ @pdata = PDATA
168
+ @argv = %w[pdata1.pdata]
169
+ @expected = PDATA.gsub(/ id="mark:\w+"/, '')
170
+ _test
171
+ end
172
+
173
+
174
+ def test_pstyle1 # -P
175
+ # OK
176
+ @pdata = PDATA
177
+ @plogic = ERUBY_PLOGIC
178
+ @argv = %w[-Pcss -p pstyle1 pstyle1.pdata]
179
+ @expected = ERUBY_OUTPUT
180
+ _test
181
+ # NG
182
+ @argv = %w[-Phoge -p pstyle1 pstyle1.pdata]
183
+ @exception = Kwartz::CommandOptionError
184
+ @message = "-P hoge: unknown style name (parser class not registered)."
185
+ _test
186
+ end
187
+
188
+
189
+ def test_lang1 # -l
190
+ # OK
191
+ @pdata = PDATA
192
+ @plogic = PHP_PLOGIC
193
+ @argv = %w[-l php -p lang1 lang1.pdata]
194
+ @expected = PHP_OUTPUT
195
+ _test
196
+ # NG
197
+ @argv = %w[-l hoge -p lang1 lang1.pdata]
198
+ @exception = Kwartz::CommandOptionError
199
+ @message = "-l hoge: unknown lang name (handler class not registered)."
200
+ _test
201
+ end
202
+
203
+
204
+ def test_requires1 # -r
205
+ # OK
206
+ @pdata = PDATA
207
+ @argv = %w[-rstringio,tsort requires1.pdata]
208
+ @expected = PDATA.gsub(/ id="mark:.*?"/, '')
209
+ _test
210
+ assert_nothing_raised do
211
+ obj = StringIO.new("")
212
+ s = TSort.name
213
+ end
214
+ # NG
215
+ @argv = %w[-rhogeratta requires1.pdata]
216
+ assert_raise(LoadError) do
217
+ _test
218
+ end
219
+ end
220
+
221
+
222
+ def test_plogics1 # -p
223
+ # OK
224
+ @pdata = PDATA
225
+ @plogic = ERUBY_PLOGIC
226
+ @argv = %w[-p plogics1.plogic plogics1.pdata]
227
+ @expected = ERUBY_OUTPUT
228
+ _test
229
+ # NG (not found)
230
+ @argv = %w[-p hogeratta plogics1.pdata]
231
+ @exception = Kwartz::CommandOptionError
232
+ @message = "-p hogeratta[.plogic]: file not found."
233
+ _test
234
+ # NG (syntax error)
235
+ @plogic = ERUBY_PLOGIC.sub(/@title;/, '@title')
236
+ @argv = %w[-p plogics1 plogics1.pdata]
237
+ @exception = Kwartz::ParseError
238
+ @message = "plogics1.plogic:3:1: 'value:': ';' is required."
239
+ _test
240
+ end
241
+
242
+
243
+ def test_escape1 # -e, --escape
244
+ # OK
245
+ @pdata = PDATA
246
+ @plogic = ERUBY_PLOGIC
247
+ @expected = ERUBY_OUTPUT.sub(/<%= @title %>/, '<%=h @title %>')
248
+ @argv = %w[-epescape1 escape1.pdata]
249
+ _test
250
+ # OK
251
+ @pdata = PDATA
252
+ @plogic = PHP_PLOGIC
253
+ @expected = PHP_OUTPUT.sub(/echo \$title;/, 'echo htmlspecialchars($title);')
254
+ @argv = %w[--escape -lphp -pescape1 escape1.pdata]
255
+ _test
256
+ end
257
+
258
+
259
+ def test_import1 # -i
260
+ # OK
261
+ @pdata = PDATA
262
+ @plogic = ERUBY_PLOGIC.sub(/^\#doctitle.*?\}/m, "#doctitle{logic:{\n_element(sectitle)\n}\n}")
263
+ @expected = ERUBY_OUTPUT.sub(/^\s*<h1>.*?<\/h1>/, '<%= sectitle %>')
264
+ s = <<END
265
+ <div>
266
+ <span id="mark:sectitle">foo</span>
267
+ </div>
268
+ END
269
+ File.write('import1a.pdata', s)
270
+ s = <<END
271
+ #sectitle {
272
+ elem: sectitle;
273
+ }
274
+ END
275
+ File.write('import1a.plogic', s)
276
+ @argv = %w[-p import1,import1a -i import1a.pdata import1.pdata]
277
+ begin
278
+ _test
279
+ ensure
280
+ %w[import1a.pdata import1a.plogic].each do |filename|
281
+ File.unlink filename if test(?f, filename)
282
+ end
283
+ end
284
+ # NG
285
+ @argv = %w[-p import1 -i hogehoge import1.pdata]
286
+ @exception = Kwartz::CommandOptionError
287
+ @message = "-i hogehoge: file not found."
288
+ _test
289
+ end
290
+
291
+
292
+ def test_layout1 # -L
293
+ # OK
294
+ @pdata = PDATA
295
+ @plogic = ERUBY_PLOGIC
296
+ s = <<END
297
+ <?xml version="1.0" charset="utf8"?>
298
+ <html>
299
+ <head>
300
+ <title title="replace_content_with: content(doctitle)">layout file</title>
301
+ </head>
302
+ <body>
303
+
304
+ <div title="replace_element_with: element(content)">
305
+ foo
306
+ bar
307
+ </div>
308
+
309
+ </body>
310
+ </html>
311
+ END
312
+ File.write('layout.html', s)
313
+ content_str = (ERUBY_OUTPUT =~ /^\s*<table.*?<\/table>/m) && $&
314
+ @expected = s.sub(/^(\s*)<title.*?<\/title>/, '\1<title><%= @title %></title>')
315
+ @expected.sub!(/^( *)<div .*?<\/div>/m, content_str)
316
+ @argv = %w[-p layout1 -L layout.html layout1.pdata]
317
+ begin
318
+ _test
319
+ ensure
320
+ %w[layout.html].each do |filename|
321
+ File.unlink filename if test(?f, filename)
322
+ end
323
+ end
324
+ # NG
325
+ @argv = %w[-p layout1 -L hogehoge layout1.pdata]
326
+ @exception = Kwartz::CommandOptionError
327
+ @message = "-L hogehoge: file not found."
328
+ _test
329
+ end
330
+
331
+
332
+ def test_extract1 # -X
333
+ # OK
334
+ @pdata = PDATA
335
+ @plogic = ERUBY_PLOGIC
336
+ @argv = %w[-X content -p extract1 extract1.pdata]
337
+ @expected = (ERUBY_OUTPUT =~ /^ *<table.*?<\/table>\n/m) && $&
338
+ _test
339
+ # NG
340
+ @exception = Kwartz::ConvertError
341
+ @message = "extract1.pdata:: element 'hogehoge' not found."
342
+ @argv = %w[-X hogehoge -p extract1 extract1.pdata]
343
+ _test
344
+ end
345
+
346
+
347
+ def test_extract2 # -x
348
+ # OK
349
+ @pdata = PDATA
350
+ @plogic = ERUBY_PLOGIC
351
+ @argv = %w[-x content -p extract2 extract2.pdata]
352
+ @expected = (ERUBY_OUTPUT =~ /<table id=".*?">\n(.*)^ *<\/table>/m) && $1
353
+ _test
354
+ # NG
355
+ @exception = Kwartz::ConvertError
356
+ @message = "extract2.pdata:: element 'hogehoge' not found."
357
+ @argv = %w[-x hogehoge -p extract2 extract2.pdata]
358
+ _test
359
+ end
360
+
361
+
362
+ def test_yamlfile1 # -f
363
+ # OK
364
+ @pdata = PDATA
365
+ @plogic = ERUBY_PLOGIC
366
+ @argv = %w[-f yamlfile1.yaml -p yamlfile1 yamlfile1.pdata]
367
+ @yamldata = YAML_DATA.gsub(/\t/, ' ')
368
+ @expected = YAML_OUTPUT
369
+ _test
370
+ # NG (not found)
371
+ @argv = %w[-f hogehoge.yaml -p yamlfile1 yamlfile1.pdata]
372
+ @exception = Kwartz::CommandOptionError
373
+ @message = "-f hogehoge.yaml: file not found."
374
+ _test
375
+ # NG (not a mapping)
376
+ @yamldata = <<END
377
+ - title: kwartz test
378
+ - list:
379
+ - aaa
380
+ - bbb
381
+ - ccc
382
+ END
383
+ @argv = %w[-f yamlfile1.yaml -p yamlfile1 yamlfile1.pdata]
384
+ @exception = Kwartz::CommandOptionError
385
+ @message = "-f yamlfile1.yaml: not a mapping."
386
+ _test
387
+ end
388
+
389
+
390
+ def test_untabify1 # -t
391
+ # OK
392
+ @pdata = PDATA
393
+ @plogic = ERUBY_PLOGIC
394
+ @argv = %w[-tf untabify1.yaml -p untabify1 untabify1.pdata]
395
+ @yamldata = YAML_DATA
396
+ @expected = YAML_OUTPUT
397
+ _test
398
+ # NG
399
+ @argv = %w[-f untabify1.yaml -p untabify1 untabify1.pdata]
400
+ @exception = ArgumentError # yaml syntax error
401
+ end
402
+
403
+
404
+ def test_intern1 # -S
405
+ # OK
406
+ @pdata = <<END
407
+ <span title="value: @aaa[:bb1][:cc1][:dd1]">xxx</span>
408
+ <span title="value: @aaa[:bb1][:cc1][:dd2][:bb2]">xxx</span>
409
+ END
410
+ @yamldata = <<END
411
+ aaa: &anchor1
412
+ bb1:
413
+ cc1:
414
+ dd1: foo
415
+ dd2: *anchor1
416
+ bb2: bar
417
+ END
418
+ @expected = <<END
419
+ <span>foo</span>
420
+ <span>bar</span>
421
+ END
422
+ @argv = %w[-tSf intern1.yaml intern1.pdata]
423
+ _test
424
+ # OK
425
+ @pdata = <<END
426
+ <span title="value: @aaa['bb1']['cc1']['dd1']">xxx</span>
427
+ <span title="value: @aaa['bb1']['cc1']['dd2']['bb2']">xxx</span>
428
+ END
429
+ @argv = %w[-tf intern1.yaml intern1.pdata]
430
+ _test
431
+ end
432
+
433
+
434
+ def test_no_args
435
+ @exception = Kwartz::CommandOptionError
436
+ tuples = [
437
+ [?l, 'lang name'],
438
+ [?k, 'kanji code'],
439
+ [?r, 'library name'],
440
+ [?p, 'file name'],
441
+ [?P, 'parser style'],
442
+ [?x, 'element id'],
443
+ [?X, 'element id'],
444
+ [?i, 'file name'],
445
+ [?L, 'file name'],
446
+ [?f, 'yaml file'],
447
+ ]
448
+ tuples.each do |char, argname|
449
+ @argv = ["-#{char.chr}"]
450
+ @message = "-#{char.chr}: #{argname} required."
451
+ _test
452
+ end
453
+ end
454
+
455
+
456
+ def test_no_filenames
457
+ @exception = Kwartz::CommandOptionError
458
+ @argv = %w[-p foo]
459
+ @message = 'filename of presentation data is required.'
460
+ _test
461
+ end
462
+
463
+
464
+ end