arti_mark 0.0.1.beta4 → 0.1.beta1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -0
- data/README.md +2 -2
- data/Rakefile +10 -0
- data/arti_mark.gemspec +4 -2
- data/lib/arti_mark/block_image_parser.rb +2 -2
- data/lib/arti_mark/{context.rb → html/context.rb} +6 -1
- data/lib/arti_mark/html/generator.rb +159 -0
- data/lib/arti_mark/html/header_writer.rb +32 -0
- data/lib/arti_mark/html/result.rb +27 -0
- data/lib/arti_mark/html/tag_writer.rb +110 -0
- data/lib/arti_mark/html/util.rb +12 -0
- data/lib/arti_mark/html/writer_selector.rb +24 -0
- data/lib/arti_mark/parser.kpeg +97 -0
- data/lib/arti_mark/parser.kpeg.rb +2533 -0
- data/lib/arti_mark/parser.rb +31 -0
- data/lib/arti_mark/version.rb +1 -1
- data/lib/arti_mark.rb +10 -21
- data/spec/arti_mark_spec.rb +108 -218
- metadata +40 -17
- data/lib/arti_mark/result.rb +0 -25
@@ -0,0 +1,2533 @@
|
|
1
|
+
require 'kpeg/compiled_parser'
|
2
|
+
|
3
|
+
class ArtiMark::Parser < KPeg::CompiledParser
|
4
|
+
# :stopdoc:
|
5
|
+
|
6
|
+
# eof = !.
|
7
|
+
def _eof
|
8
|
+
_save = self.pos
|
9
|
+
_tmp = get_byte
|
10
|
+
_tmp = _tmp ? nil : true
|
11
|
+
self.pos = _save
|
12
|
+
set_failed_rule :_eof unless _tmp
|
13
|
+
return _tmp
|
14
|
+
end
|
15
|
+
|
16
|
+
# space = (" " | "\\t")
|
17
|
+
def _space
|
18
|
+
|
19
|
+
_save = self.pos
|
20
|
+
while true # choice
|
21
|
+
_tmp = match_string(" ")
|
22
|
+
break if _tmp
|
23
|
+
self.pos = _save
|
24
|
+
_tmp = match_string("\\t")
|
25
|
+
break if _tmp
|
26
|
+
self.pos = _save
|
27
|
+
break
|
28
|
+
end # end choice
|
29
|
+
|
30
|
+
set_failed_rule :_space unless _tmp
|
31
|
+
return _tmp
|
32
|
+
end
|
33
|
+
|
34
|
+
# eof_comment = lh space* "#" (!eof .)*
|
35
|
+
def _eof_comment
|
36
|
+
|
37
|
+
_save = self.pos
|
38
|
+
while true # sequence
|
39
|
+
_tmp = apply(:_lh)
|
40
|
+
unless _tmp
|
41
|
+
self.pos = _save
|
42
|
+
break
|
43
|
+
end
|
44
|
+
while true
|
45
|
+
_tmp = apply(:_space)
|
46
|
+
break unless _tmp
|
47
|
+
end
|
48
|
+
_tmp = true
|
49
|
+
unless _tmp
|
50
|
+
self.pos = _save
|
51
|
+
break
|
52
|
+
end
|
53
|
+
_tmp = match_string("#")
|
54
|
+
unless _tmp
|
55
|
+
self.pos = _save
|
56
|
+
break
|
57
|
+
end
|
58
|
+
while true
|
59
|
+
|
60
|
+
_save3 = self.pos
|
61
|
+
while true # sequence
|
62
|
+
_save4 = self.pos
|
63
|
+
_tmp = apply(:_eof)
|
64
|
+
_tmp = _tmp ? nil : true
|
65
|
+
self.pos = _save4
|
66
|
+
unless _tmp
|
67
|
+
self.pos = _save3
|
68
|
+
break
|
69
|
+
end
|
70
|
+
_tmp = get_byte
|
71
|
+
unless _tmp
|
72
|
+
self.pos = _save3
|
73
|
+
end
|
74
|
+
break
|
75
|
+
end # end sequence
|
76
|
+
|
77
|
+
break unless _tmp
|
78
|
+
end
|
79
|
+
_tmp = true
|
80
|
+
unless _tmp
|
81
|
+
self.pos = _save
|
82
|
+
end
|
83
|
+
break
|
84
|
+
end # end sequence
|
85
|
+
|
86
|
+
set_failed_rule :_eof_comment unless _tmp
|
87
|
+
return _tmp
|
88
|
+
end
|
89
|
+
|
90
|
+
# comment = lh space* "#" (!nl .)* nl
|
91
|
+
def _comment
|
92
|
+
|
93
|
+
_save = self.pos
|
94
|
+
while true # sequence
|
95
|
+
_tmp = apply(:_lh)
|
96
|
+
unless _tmp
|
97
|
+
self.pos = _save
|
98
|
+
break
|
99
|
+
end
|
100
|
+
while true
|
101
|
+
_tmp = apply(:_space)
|
102
|
+
break unless _tmp
|
103
|
+
end
|
104
|
+
_tmp = true
|
105
|
+
unless _tmp
|
106
|
+
self.pos = _save
|
107
|
+
break
|
108
|
+
end
|
109
|
+
_tmp = match_string("#")
|
110
|
+
unless _tmp
|
111
|
+
self.pos = _save
|
112
|
+
break
|
113
|
+
end
|
114
|
+
while true
|
115
|
+
|
116
|
+
_save3 = self.pos
|
117
|
+
while true # sequence
|
118
|
+
_save4 = self.pos
|
119
|
+
_tmp = apply(:_nl)
|
120
|
+
_tmp = _tmp ? nil : true
|
121
|
+
self.pos = _save4
|
122
|
+
unless _tmp
|
123
|
+
self.pos = _save3
|
124
|
+
break
|
125
|
+
end
|
126
|
+
_tmp = get_byte
|
127
|
+
unless _tmp
|
128
|
+
self.pos = _save3
|
129
|
+
end
|
130
|
+
break
|
131
|
+
end # end sequence
|
132
|
+
|
133
|
+
break unless _tmp
|
134
|
+
end
|
135
|
+
_tmp = true
|
136
|
+
unless _tmp
|
137
|
+
self.pos = _save
|
138
|
+
break
|
139
|
+
end
|
140
|
+
_tmp = apply(:_nl)
|
141
|
+
unless _tmp
|
142
|
+
self.pos = _save
|
143
|
+
end
|
144
|
+
break
|
145
|
+
end # end sequence
|
146
|
+
|
147
|
+
set_failed_rule :_comment unless _tmp
|
148
|
+
return _tmp
|
149
|
+
end
|
150
|
+
|
151
|
+
# - = (space | comment)*
|
152
|
+
def __hyphen_
|
153
|
+
while true
|
154
|
+
|
155
|
+
_save1 = self.pos
|
156
|
+
while true # choice
|
157
|
+
_tmp = apply(:_space)
|
158
|
+
break if _tmp
|
159
|
+
self.pos = _save1
|
160
|
+
_tmp = apply(:_comment)
|
161
|
+
break if _tmp
|
162
|
+
self.pos = _save1
|
163
|
+
break
|
164
|
+
end # end choice
|
165
|
+
|
166
|
+
break unless _tmp
|
167
|
+
end
|
168
|
+
_tmp = true
|
169
|
+
set_failed_rule :__hyphen_ unless _tmp
|
170
|
+
return _tmp
|
171
|
+
end
|
172
|
+
|
173
|
+
# empty_line = lh - nl
|
174
|
+
def _empty_line
|
175
|
+
|
176
|
+
_save = self.pos
|
177
|
+
while true # sequence
|
178
|
+
_tmp = apply(:_lh)
|
179
|
+
unless _tmp
|
180
|
+
self.pos = _save
|
181
|
+
break
|
182
|
+
end
|
183
|
+
_tmp = apply(:__hyphen_)
|
184
|
+
unless _tmp
|
185
|
+
self.pos = _save
|
186
|
+
break
|
187
|
+
end
|
188
|
+
_tmp = apply(:_nl)
|
189
|
+
unless _tmp
|
190
|
+
self.pos = _save
|
191
|
+
end
|
192
|
+
break
|
193
|
+
end # end sequence
|
194
|
+
|
195
|
+
set_failed_rule :_empty_line unless _tmp
|
196
|
+
return _tmp
|
197
|
+
end
|
198
|
+
|
199
|
+
# nl = /\r?\n/
|
200
|
+
def _nl
|
201
|
+
_tmp = scan(/\A(?-mix:\r?\n)/)
|
202
|
+
set_failed_rule :_nl unless _tmp
|
203
|
+
return _tmp
|
204
|
+
end
|
205
|
+
|
206
|
+
# lh = /^/
|
207
|
+
def _lh
|
208
|
+
_tmp = scan(/\A(?-mix:^)/)
|
209
|
+
set_failed_rule :_lh unless _tmp
|
210
|
+
return _tmp
|
211
|
+
end
|
212
|
+
|
213
|
+
# le = (nl | /$/)
|
214
|
+
def _le
|
215
|
+
|
216
|
+
_save = self.pos
|
217
|
+
while true # choice
|
218
|
+
_tmp = apply(:_nl)
|
219
|
+
break if _tmp
|
220
|
+
self.pos = _save
|
221
|
+
_tmp = scan(/\A(?-mix:$)/)
|
222
|
+
break if _tmp
|
223
|
+
self.pos = _save
|
224
|
+
break
|
225
|
+
end # end choice
|
226
|
+
|
227
|
+
set_failed_rule :_le unless _tmp
|
228
|
+
return _tmp
|
229
|
+
end
|
230
|
+
|
231
|
+
# word = < /[\w0-9]/ ("-" | /[\w0-9]/)* > { text }
|
232
|
+
def _word
|
233
|
+
|
234
|
+
_save = self.pos
|
235
|
+
while true # sequence
|
236
|
+
_text_start = self.pos
|
237
|
+
|
238
|
+
_save1 = self.pos
|
239
|
+
while true # sequence
|
240
|
+
_tmp = scan(/\A(?-mix:[\w0-9])/)
|
241
|
+
unless _tmp
|
242
|
+
self.pos = _save1
|
243
|
+
break
|
244
|
+
end
|
245
|
+
while true
|
246
|
+
|
247
|
+
_save3 = self.pos
|
248
|
+
while true # choice
|
249
|
+
_tmp = match_string("-")
|
250
|
+
break if _tmp
|
251
|
+
self.pos = _save3
|
252
|
+
_tmp = scan(/\A(?-mix:[\w0-9])/)
|
253
|
+
break if _tmp
|
254
|
+
self.pos = _save3
|
255
|
+
break
|
256
|
+
end # end choice
|
257
|
+
|
258
|
+
break unless _tmp
|
259
|
+
end
|
260
|
+
_tmp = true
|
261
|
+
unless _tmp
|
262
|
+
self.pos = _save1
|
263
|
+
end
|
264
|
+
break
|
265
|
+
end # end sequence
|
266
|
+
|
267
|
+
if _tmp
|
268
|
+
text = get_text(_text_start)
|
269
|
+
end
|
270
|
+
unless _tmp
|
271
|
+
self.pos = _save
|
272
|
+
break
|
273
|
+
end
|
274
|
+
@result = begin; text ; end
|
275
|
+
_tmp = true
|
276
|
+
unless _tmp
|
277
|
+
self.pos = _save
|
278
|
+
end
|
279
|
+
break
|
280
|
+
end # end sequence
|
281
|
+
|
282
|
+
set_failed_rule :_word unless _tmp
|
283
|
+
return _tmp
|
284
|
+
end
|
285
|
+
|
286
|
+
# num = < [0-9]+ > { text.to_i }
|
287
|
+
def _num
|
288
|
+
|
289
|
+
_save = self.pos
|
290
|
+
while true # sequence
|
291
|
+
_text_start = self.pos
|
292
|
+
_save1 = self.pos
|
293
|
+
_save2 = self.pos
|
294
|
+
_tmp = get_byte
|
295
|
+
if _tmp
|
296
|
+
unless _tmp >= 48 and _tmp <= 57
|
297
|
+
self.pos = _save2
|
298
|
+
_tmp = nil
|
299
|
+
end
|
300
|
+
end
|
301
|
+
if _tmp
|
302
|
+
while true
|
303
|
+
_save3 = self.pos
|
304
|
+
_tmp = get_byte
|
305
|
+
if _tmp
|
306
|
+
unless _tmp >= 48 and _tmp <= 57
|
307
|
+
self.pos = _save3
|
308
|
+
_tmp = nil
|
309
|
+
end
|
310
|
+
end
|
311
|
+
break unless _tmp
|
312
|
+
end
|
313
|
+
_tmp = true
|
314
|
+
else
|
315
|
+
self.pos = _save1
|
316
|
+
end
|
317
|
+
if _tmp
|
318
|
+
text = get_text(_text_start)
|
319
|
+
end
|
320
|
+
unless _tmp
|
321
|
+
self.pos = _save
|
322
|
+
break
|
323
|
+
end
|
324
|
+
@result = begin; text.to_i ; end
|
325
|
+
_tmp = true
|
326
|
+
unless _tmp
|
327
|
+
self.pos = _save
|
328
|
+
end
|
329
|
+
break
|
330
|
+
end # end sequence
|
331
|
+
|
332
|
+
set_failed_rule :_num unless _tmp
|
333
|
+
return _tmp
|
334
|
+
end
|
335
|
+
|
336
|
+
# classname = "." word:classname { classname }
|
337
|
+
def _classname
|
338
|
+
|
339
|
+
_save = self.pos
|
340
|
+
while true # sequence
|
341
|
+
_tmp = match_string(".")
|
342
|
+
unless _tmp
|
343
|
+
self.pos = _save
|
344
|
+
break
|
345
|
+
end
|
346
|
+
_tmp = apply(:_word)
|
347
|
+
classname = @result
|
348
|
+
unless _tmp
|
349
|
+
self.pos = _save
|
350
|
+
break
|
351
|
+
end
|
352
|
+
@result = begin; classname ; end
|
353
|
+
_tmp = true
|
354
|
+
unless _tmp
|
355
|
+
self.pos = _save
|
356
|
+
end
|
357
|
+
break
|
358
|
+
end # end sequence
|
359
|
+
|
360
|
+
set_failed_rule :_classname unless _tmp
|
361
|
+
return _tmp
|
362
|
+
end
|
363
|
+
|
364
|
+
# classnames = classname*:classnames { classnames }
|
365
|
+
def _classnames
|
366
|
+
|
367
|
+
_save = self.pos
|
368
|
+
while true # sequence
|
369
|
+
_ary = []
|
370
|
+
while true
|
371
|
+
_tmp = apply(:_classname)
|
372
|
+
_ary << @result if _tmp
|
373
|
+
break unless _tmp
|
374
|
+
end
|
375
|
+
_tmp = true
|
376
|
+
@result = _ary
|
377
|
+
classnames = @result
|
378
|
+
unless _tmp
|
379
|
+
self.pos = _save
|
380
|
+
break
|
381
|
+
end
|
382
|
+
@result = begin; classnames ; end
|
383
|
+
_tmp = true
|
384
|
+
unless _tmp
|
385
|
+
self.pos = _save
|
386
|
+
end
|
387
|
+
break
|
388
|
+
end # end sequence
|
389
|
+
|
390
|
+
set_failed_rule :_classnames unless _tmp
|
391
|
+
return _tmp
|
392
|
+
end
|
393
|
+
|
394
|
+
# idname = "#" word:idname { idname }
|
395
|
+
def _idname
|
396
|
+
|
397
|
+
_save = self.pos
|
398
|
+
while true # sequence
|
399
|
+
_tmp = match_string("#")
|
400
|
+
unless _tmp
|
401
|
+
self.pos = _save
|
402
|
+
break
|
403
|
+
end
|
404
|
+
_tmp = apply(:_word)
|
405
|
+
idname = @result
|
406
|
+
unless _tmp
|
407
|
+
self.pos = _save
|
408
|
+
break
|
409
|
+
end
|
410
|
+
@result = begin; idname ; end
|
411
|
+
_tmp = true
|
412
|
+
unless _tmp
|
413
|
+
self.pos = _save
|
414
|
+
end
|
415
|
+
break
|
416
|
+
end # end sequence
|
417
|
+
|
418
|
+
set_failed_rule :_idname unless _tmp
|
419
|
+
return _tmp
|
420
|
+
end
|
421
|
+
|
422
|
+
# idnames = idname*:idnames { idnames }
|
423
|
+
def _idnames
|
424
|
+
|
425
|
+
_save = self.pos
|
426
|
+
while true # sequence
|
427
|
+
_ary = []
|
428
|
+
while true
|
429
|
+
_tmp = apply(:_idname)
|
430
|
+
_ary << @result if _tmp
|
431
|
+
break unless _tmp
|
432
|
+
end
|
433
|
+
_tmp = true
|
434
|
+
@result = _ary
|
435
|
+
idnames = @result
|
436
|
+
unless _tmp
|
437
|
+
self.pos = _save
|
438
|
+
break
|
439
|
+
end
|
440
|
+
@result = begin; idnames ; end
|
441
|
+
_tmp = true
|
442
|
+
unless _tmp
|
443
|
+
self.pos = _save
|
444
|
+
end
|
445
|
+
break
|
446
|
+
end # end sequence
|
447
|
+
|
448
|
+
set_failed_rule :_idnames unless _tmp
|
449
|
+
return _tmp
|
450
|
+
end
|
451
|
+
|
452
|
+
# commandname = word:name idnames?:idnames classnames?:classes { {:name => name, :ids => idnames, :classes => classes} }
|
453
|
+
def _commandname
|
454
|
+
|
455
|
+
_save = self.pos
|
456
|
+
while true # sequence
|
457
|
+
_tmp = apply(:_word)
|
458
|
+
name = @result
|
459
|
+
unless _tmp
|
460
|
+
self.pos = _save
|
461
|
+
break
|
462
|
+
end
|
463
|
+
_save1 = self.pos
|
464
|
+
_tmp = apply(:_idnames)
|
465
|
+
@result = nil unless _tmp
|
466
|
+
unless _tmp
|
467
|
+
_tmp = true
|
468
|
+
self.pos = _save1
|
469
|
+
end
|
470
|
+
idnames = @result
|
471
|
+
unless _tmp
|
472
|
+
self.pos = _save
|
473
|
+
break
|
474
|
+
end
|
475
|
+
_save2 = self.pos
|
476
|
+
_tmp = apply(:_classnames)
|
477
|
+
@result = nil unless _tmp
|
478
|
+
unless _tmp
|
479
|
+
_tmp = true
|
480
|
+
self.pos = _save2
|
481
|
+
end
|
482
|
+
classes = @result
|
483
|
+
unless _tmp
|
484
|
+
self.pos = _save
|
485
|
+
break
|
486
|
+
end
|
487
|
+
@result = begin; {:name => name, :ids => idnames, :classes => classes} ; end
|
488
|
+
_tmp = true
|
489
|
+
unless _tmp
|
490
|
+
self.pos = _save
|
491
|
+
end
|
492
|
+
break
|
493
|
+
end # end sequence
|
494
|
+
|
495
|
+
set_failed_rule :_commandname unless _tmp
|
496
|
+
return _tmp
|
497
|
+
end
|
498
|
+
|
499
|
+
# parameter = < (/[^,)]/* | "\"" /[^"]/* "\"" | "'" /[^']/* "'") > { text }
|
500
|
+
def _parameter
|
501
|
+
|
502
|
+
_save = self.pos
|
503
|
+
while true # sequence
|
504
|
+
_text_start = self.pos
|
505
|
+
|
506
|
+
_save1 = self.pos
|
507
|
+
while true # choice
|
508
|
+
while true
|
509
|
+
_tmp = scan(/\A(?-mix:[^,)])/)
|
510
|
+
break unless _tmp
|
511
|
+
end
|
512
|
+
_tmp = true
|
513
|
+
break if _tmp
|
514
|
+
self.pos = _save1
|
515
|
+
|
516
|
+
_save3 = self.pos
|
517
|
+
while true # sequence
|
518
|
+
_tmp = match_string("\"")
|
519
|
+
unless _tmp
|
520
|
+
self.pos = _save3
|
521
|
+
break
|
522
|
+
end
|
523
|
+
while true
|
524
|
+
_tmp = scan(/\A(?-mix:[^"])/)
|
525
|
+
break unless _tmp
|
526
|
+
end
|
527
|
+
_tmp = true
|
528
|
+
unless _tmp
|
529
|
+
self.pos = _save3
|
530
|
+
break
|
531
|
+
end
|
532
|
+
_tmp = match_string("\"")
|
533
|
+
unless _tmp
|
534
|
+
self.pos = _save3
|
535
|
+
end
|
536
|
+
break
|
537
|
+
end # end sequence
|
538
|
+
|
539
|
+
break if _tmp
|
540
|
+
self.pos = _save1
|
541
|
+
|
542
|
+
_save5 = self.pos
|
543
|
+
while true # sequence
|
544
|
+
_tmp = match_string("'")
|
545
|
+
unless _tmp
|
546
|
+
self.pos = _save5
|
547
|
+
break
|
548
|
+
end
|
549
|
+
while true
|
550
|
+
_tmp = scan(/\A(?-mix:[^'])/)
|
551
|
+
break unless _tmp
|
552
|
+
end
|
553
|
+
_tmp = true
|
554
|
+
unless _tmp
|
555
|
+
self.pos = _save5
|
556
|
+
break
|
557
|
+
end
|
558
|
+
_tmp = match_string("'")
|
559
|
+
unless _tmp
|
560
|
+
self.pos = _save5
|
561
|
+
end
|
562
|
+
break
|
563
|
+
end # end sequence
|
564
|
+
|
565
|
+
break if _tmp
|
566
|
+
self.pos = _save1
|
567
|
+
break
|
568
|
+
end # end choice
|
569
|
+
|
570
|
+
if _tmp
|
571
|
+
text = get_text(_text_start)
|
572
|
+
end
|
573
|
+
unless _tmp
|
574
|
+
self.pos = _save
|
575
|
+
break
|
576
|
+
end
|
577
|
+
@result = begin; text ; end
|
578
|
+
_tmp = true
|
579
|
+
unless _tmp
|
580
|
+
self.pos = _save
|
581
|
+
end
|
582
|
+
break
|
583
|
+
end # end sequence
|
584
|
+
|
585
|
+
set_failed_rule :_parameter unless _tmp
|
586
|
+
return _tmp
|
587
|
+
end
|
588
|
+
|
589
|
+
# parameters = < parameter ("," parameter)* > { text }
|
590
|
+
def _parameters
|
591
|
+
|
592
|
+
_save = self.pos
|
593
|
+
while true # sequence
|
594
|
+
_text_start = self.pos
|
595
|
+
|
596
|
+
_save1 = self.pos
|
597
|
+
while true # sequence
|
598
|
+
_tmp = apply(:_parameter)
|
599
|
+
unless _tmp
|
600
|
+
self.pos = _save1
|
601
|
+
break
|
602
|
+
end
|
603
|
+
while true
|
604
|
+
|
605
|
+
_save3 = self.pos
|
606
|
+
while true # sequence
|
607
|
+
_tmp = match_string(",")
|
608
|
+
unless _tmp
|
609
|
+
self.pos = _save3
|
610
|
+
break
|
611
|
+
end
|
612
|
+
_tmp = apply(:_parameter)
|
613
|
+
unless _tmp
|
614
|
+
self.pos = _save3
|
615
|
+
end
|
616
|
+
break
|
617
|
+
end # end sequence
|
618
|
+
|
619
|
+
break unless _tmp
|
620
|
+
end
|
621
|
+
_tmp = true
|
622
|
+
unless _tmp
|
623
|
+
self.pos = _save1
|
624
|
+
end
|
625
|
+
break
|
626
|
+
end # end sequence
|
627
|
+
|
628
|
+
if _tmp
|
629
|
+
text = get_text(_text_start)
|
630
|
+
end
|
631
|
+
unless _tmp
|
632
|
+
self.pos = _save
|
633
|
+
break
|
634
|
+
end
|
635
|
+
@result = begin; text ; end
|
636
|
+
_tmp = true
|
637
|
+
unless _tmp
|
638
|
+
self.pos = _save
|
639
|
+
end
|
640
|
+
break
|
641
|
+
end # end sequence
|
642
|
+
|
643
|
+
set_failed_rule :_parameters unless _tmp
|
644
|
+
return _tmp
|
645
|
+
end
|
646
|
+
|
647
|
+
# command = commandname:commandname ("(" - parameters:arg - ")")? { arg ||= ''; commandname.merge({ :args => arg.split(',') }) }
|
648
|
+
def _command
|
649
|
+
|
650
|
+
_save = self.pos
|
651
|
+
while true # sequence
|
652
|
+
_tmp = apply(:_commandname)
|
653
|
+
commandname = @result
|
654
|
+
unless _tmp
|
655
|
+
self.pos = _save
|
656
|
+
break
|
657
|
+
end
|
658
|
+
_save1 = self.pos
|
659
|
+
|
660
|
+
_save2 = self.pos
|
661
|
+
while true # sequence
|
662
|
+
_tmp = match_string("(")
|
663
|
+
unless _tmp
|
664
|
+
self.pos = _save2
|
665
|
+
break
|
666
|
+
end
|
667
|
+
_tmp = apply(:__hyphen_)
|
668
|
+
unless _tmp
|
669
|
+
self.pos = _save2
|
670
|
+
break
|
671
|
+
end
|
672
|
+
_tmp = apply(:_parameters)
|
673
|
+
arg = @result
|
674
|
+
unless _tmp
|
675
|
+
self.pos = _save2
|
676
|
+
break
|
677
|
+
end
|
678
|
+
_tmp = apply(:__hyphen_)
|
679
|
+
unless _tmp
|
680
|
+
self.pos = _save2
|
681
|
+
break
|
682
|
+
end
|
683
|
+
_tmp = match_string(")")
|
684
|
+
unless _tmp
|
685
|
+
self.pos = _save2
|
686
|
+
end
|
687
|
+
break
|
688
|
+
end # end sequence
|
689
|
+
|
690
|
+
unless _tmp
|
691
|
+
_tmp = true
|
692
|
+
self.pos = _save1
|
693
|
+
end
|
694
|
+
unless _tmp
|
695
|
+
self.pos = _save
|
696
|
+
break
|
697
|
+
end
|
698
|
+
@result = begin; arg ||= ''; commandname.merge({ :args => arg.split(',') }) ; end
|
699
|
+
_tmp = true
|
700
|
+
unless _tmp
|
701
|
+
self.pos = _save
|
702
|
+
end
|
703
|
+
break
|
704
|
+
end # end sequence
|
705
|
+
|
706
|
+
set_failed_rule :_command unless _tmp
|
707
|
+
return _tmp
|
708
|
+
end
|
709
|
+
|
710
|
+
# implicit_paragraph = < (!paragraph_delimiter - documentline -):paragraph > { create_item(:paragraph, nil, paragraph, raw: text) }
|
711
|
+
def _implicit_paragraph
|
712
|
+
|
713
|
+
_save = self.pos
|
714
|
+
while true # sequence
|
715
|
+
_text_start = self.pos
|
716
|
+
|
717
|
+
_save1 = self.pos
|
718
|
+
while true # sequence
|
719
|
+
_save2 = self.pos
|
720
|
+
_tmp = apply(:_paragraph_delimiter)
|
721
|
+
_tmp = _tmp ? nil : true
|
722
|
+
self.pos = _save2
|
723
|
+
unless _tmp
|
724
|
+
self.pos = _save1
|
725
|
+
break
|
726
|
+
end
|
727
|
+
_tmp = apply(:__hyphen_)
|
728
|
+
unless _tmp
|
729
|
+
self.pos = _save1
|
730
|
+
break
|
731
|
+
end
|
732
|
+
_tmp = apply(:_documentline)
|
733
|
+
unless _tmp
|
734
|
+
self.pos = _save1
|
735
|
+
break
|
736
|
+
end
|
737
|
+
_tmp = apply(:__hyphen_)
|
738
|
+
unless _tmp
|
739
|
+
self.pos = _save1
|
740
|
+
end
|
741
|
+
break
|
742
|
+
end # end sequence
|
743
|
+
|
744
|
+
paragraph = @result
|
745
|
+
if _tmp
|
746
|
+
text = get_text(_text_start)
|
747
|
+
end
|
748
|
+
unless _tmp
|
749
|
+
self.pos = _save
|
750
|
+
break
|
751
|
+
end
|
752
|
+
@result = begin; create_item(:paragraph, nil, paragraph, raw: text) ; end
|
753
|
+
_tmp = true
|
754
|
+
unless _tmp
|
755
|
+
self.pos = _save
|
756
|
+
end
|
757
|
+
break
|
758
|
+
end # end sequence
|
759
|
+
|
760
|
+
set_failed_rule :_implicit_paragraph unless _tmp
|
761
|
+
return _tmp
|
762
|
+
end
|
763
|
+
|
764
|
+
# paragraph = (explicit_paragraph | implicit_paragraph)
|
765
|
+
def _paragraph
|
766
|
+
|
767
|
+
_save = self.pos
|
768
|
+
while true # choice
|
769
|
+
_tmp = apply(:_explicit_paragraph)
|
770
|
+
break if _tmp
|
771
|
+
self.pos = _save
|
772
|
+
_tmp = apply(:_implicit_paragraph)
|
773
|
+
break if _tmp
|
774
|
+
self.pos = _save
|
775
|
+
break
|
776
|
+
end # end choice
|
777
|
+
|
778
|
+
set_failed_rule :_paragraph unless _tmp
|
779
|
+
return _tmp
|
780
|
+
end
|
781
|
+
|
782
|
+
# paragraph_group = < (paragraph nl | paragraph)+:paragraphs empty_line* > { create_item(:paragraph_group, nil, paragraphs, raw: text) }
|
783
|
+
def _paragraph_group
|
784
|
+
|
785
|
+
_save = self.pos
|
786
|
+
while true # sequence
|
787
|
+
_text_start = self.pos
|
788
|
+
|
789
|
+
_save1 = self.pos
|
790
|
+
while true # sequence
|
791
|
+
_save2 = self.pos
|
792
|
+
_ary = []
|
793
|
+
|
794
|
+
_save3 = self.pos
|
795
|
+
while true # choice
|
796
|
+
|
797
|
+
_save4 = self.pos
|
798
|
+
while true # sequence
|
799
|
+
_tmp = apply(:_paragraph)
|
800
|
+
unless _tmp
|
801
|
+
self.pos = _save4
|
802
|
+
break
|
803
|
+
end
|
804
|
+
_tmp = apply(:_nl)
|
805
|
+
unless _tmp
|
806
|
+
self.pos = _save4
|
807
|
+
end
|
808
|
+
break
|
809
|
+
end # end sequence
|
810
|
+
|
811
|
+
break if _tmp
|
812
|
+
self.pos = _save3
|
813
|
+
_tmp = apply(:_paragraph)
|
814
|
+
break if _tmp
|
815
|
+
self.pos = _save3
|
816
|
+
break
|
817
|
+
end # end choice
|
818
|
+
|
819
|
+
if _tmp
|
820
|
+
_ary << @result
|
821
|
+
while true
|
822
|
+
|
823
|
+
_save5 = self.pos
|
824
|
+
while true # choice
|
825
|
+
|
826
|
+
_save6 = self.pos
|
827
|
+
while true # sequence
|
828
|
+
_tmp = apply(:_paragraph)
|
829
|
+
unless _tmp
|
830
|
+
self.pos = _save6
|
831
|
+
break
|
832
|
+
end
|
833
|
+
_tmp = apply(:_nl)
|
834
|
+
unless _tmp
|
835
|
+
self.pos = _save6
|
836
|
+
end
|
837
|
+
break
|
838
|
+
end # end sequence
|
839
|
+
|
840
|
+
break if _tmp
|
841
|
+
self.pos = _save5
|
842
|
+
_tmp = apply(:_paragraph)
|
843
|
+
break if _tmp
|
844
|
+
self.pos = _save5
|
845
|
+
break
|
846
|
+
end # end choice
|
847
|
+
|
848
|
+
_ary << @result if _tmp
|
849
|
+
break unless _tmp
|
850
|
+
end
|
851
|
+
_tmp = true
|
852
|
+
@result = _ary
|
853
|
+
else
|
854
|
+
self.pos = _save2
|
855
|
+
end
|
856
|
+
paragraphs = @result
|
857
|
+
unless _tmp
|
858
|
+
self.pos = _save1
|
859
|
+
break
|
860
|
+
end
|
861
|
+
while true
|
862
|
+
_tmp = apply(:_empty_line)
|
863
|
+
break unless _tmp
|
864
|
+
end
|
865
|
+
_tmp = true
|
866
|
+
unless _tmp
|
867
|
+
self.pos = _save1
|
868
|
+
end
|
869
|
+
break
|
870
|
+
end # end sequence
|
871
|
+
|
872
|
+
if _tmp
|
873
|
+
text = get_text(_text_start)
|
874
|
+
end
|
875
|
+
unless _tmp
|
876
|
+
self.pos = _save
|
877
|
+
break
|
878
|
+
end
|
879
|
+
@result = begin; create_item(:paragraph_group, nil, paragraphs, raw: text) ; end
|
880
|
+
_tmp = true
|
881
|
+
unless _tmp
|
882
|
+
self.pos = _save
|
883
|
+
end
|
884
|
+
break
|
885
|
+
end # end sequence
|
886
|
+
|
887
|
+
set_failed_rule :_paragraph_group unless _tmp
|
888
|
+
return _tmp
|
889
|
+
end
|
890
|
+
|
891
|
+
# blockhead = lh - command:command - "{" - le { command }
|
892
|
+
def _blockhead
|
893
|
+
|
894
|
+
_save = self.pos
|
895
|
+
while true # sequence
|
896
|
+
_tmp = apply(:_lh)
|
897
|
+
unless _tmp
|
898
|
+
self.pos = _save
|
899
|
+
break
|
900
|
+
end
|
901
|
+
_tmp = apply(:__hyphen_)
|
902
|
+
unless _tmp
|
903
|
+
self.pos = _save
|
904
|
+
break
|
905
|
+
end
|
906
|
+
_tmp = apply(:_command)
|
907
|
+
command = @result
|
908
|
+
unless _tmp
|
909
|
+
self.pos = _save
|
910
|
+
break
|
911
|
+
end
|
912
|
+
_tmp = apply(:__hyphen_)
|
913
|
+
unless _tmp
|
914
|
+
self.pos = _save
|
915
|
+
break
|
916
|
+
end
|
917
|
+
_tmp = match_string("{")
|
918
|
+
unless _tmp
|
919
|
+
self.pos = _save
|
920
|
+
break
|
921
|
+
end
|
922
|
+
_tmp = apply(:__hyphen_)
|
923
|
+
unless _tmp
|
924
|
+
self.pos = _save
|
925
|
+
break
|
926
|
+
end
|
927
|
+
_tmp = apply(:_le)
|
928
|
+
unless _tmp
|
929
|
+
self.pos = _save
|
930
|
+
break
|
931
|
+
end
|
932
|
+
@result = begin; command ; end
|
933
|
+
_tmp = true
|
934
|
+
unless _tmp
|
935
|
+
self.pos = _save
|
936
|
+
end
|
937
|
+
break
|
938
|
+
end # end sequence
|
939
|
+
|
940
|
+
set_failed_rule :_blockhead unless _tmp
|
941
|
+
return _tmp
|
942
|
+
end
|
943
|
+
|
944
|
+
# blockend = lh - "}" - le
|
945
|
+
def _blockend
|
946
|
+
|
947
|
+
_save = self.pos
|
948
|
+
while true # sequence
|
949
|
+
_tmp = apply(:_lh)
|
950
|
+
unless _tmp
|
951
|
+
self.pos = _save
|
952
|
+
break
|
953
|
+
end
|
954
|
+
_tmp = apply(:__hyphen_)
|
955
|
+
unless _tmp
|
956
|
+
self.pos = _save
|
957
|
+
break
|
958
|
+
end
|
959
|
+
_tmp = match_string("}")
|
960
|
+
unless _tmp
|
961
|
+
self.pos = _save
|
962
|
+
break
|
963
|
+
end
|
964
|
+
_tmp = apply(:__hyphen_)
|
965
|
+
unless _tmp
|
966
|
+
self.pos = _save
|
967
|
+
break
|
968
|
+
end
|
969
|
+
_tmp = apply(:_le)
|
970
|
+
unless _tmp
|
971
|
+
self.pos = _save
|
972
|
+
end
|
973
|
+
break
|
974
|
+
end # end sequence
|
975
|
+
|
976
|
+
set_failed_rule :_blockend unless _tmp
|
977
|
+
return _tmp
|
978
|
+
end
|
979
|
+
|
980
|
+
# blockbody = (!blockend block)+:body { body }
|
981
|
+
def _blockbody
|
982
|
+
|
983
|
+
_save = self.pos
|
984
|
+
while true # sequence
|
985
|
+
_save1 = self.pos
|
986
|
+
_ary = []
|
987
|
+
|
988
|
+
_save2 = self.pos
|
989
|
+
while true # sequence
|
990
|
+
_save3 = self.pos
|
991
|
+
_tmp = apply(:_blockend)
|
992
|
+
_tmp = _tmp ? nil : true
|
993
|
+
self.pos = _save3
|
994
|
+
unless _tmp
|
995
|
+
self.pos = _save2
|
996
|
+
break
|
997
|
+
end
|
998
|
+
_tmp = apply(:_block)
|
999
|
+
unless _tmp
|
1000
|
+
self.pos = _save2
|
1001
|
+
end
|
1002
|
+
break
|
1003
|
+
end # end sequence
|
1004
|
+
|
1005
|
+
if _tmp
|
1006
|
+
_ary << @result
|
1007
|
+
while true
|
1008
|
+
|
1009
|
+
_save4 = self.pos
|
1010
|
+
while true # sequence
|
1011
|
+
_save5 = self.pos
|
1012
|
+
_tmp = apply(:_blockend)
|
1013
|
+
_tmp = _tmp ? nil : true
|
1014
|
+
self.pos = _save5
|
1015
|
+
unless _tmp
|
1016
|
+
self.pos = _save4
|
1017
|
+
break
|
1018
|
+
end
|
1019
|
+
_tmp = apply(:_block)
|
1020
|
+
unless _tmp
|
1021
|
+
self.pos = _save4
|
1022
|
+
end
|
1023
|
+
break
|
1024
|
+
end # end sequence
|
1025
|
+
|
1026
|
+
_ary << @result if _tmp
|
1027
|
+
break unless _tmp
|
1028
|
+
end
|
1029
|
+
_tmp = true
|
1030
|
+
@result = _ary
|
1031
|
+
else
|
1032
|
+
self.pos = _save1
|
1033
|
+
end
|
1034
|
+
body = @result
|
1035
|
+
unless _tmp
|
1036
|
+
self.pos = _save
|
1037
|
+
break
|
1038
|
+
end
|
1039
|
+
@result = begin; body ; end
|
1040
|
+
_tmp = true
|
1041
|
+
unless _tmp
|
1042
|
+
self.pos = _save
|
1043
|
+
end
|
1044
|
+
break
|
1045
|
+
end # end sequence
|
1046
|
+
|
1047
|
+
set_failed_rule :_blockbody unless _tmp
|
1048
|
+
return _tmp
|
1049
|
+
end
|
1050
|
+
|
1051
|
+
# explicit_block = < blockhead:head blockbody:body blockend > { create_item(:block, head, body, raw: text) }
|
1052
|
+
def _explicit_block
|
1053
|
+
|
1054
|
+
_save = self.pos
|
1055
|
+
while true # sequence
|
1056
|
+
_text_start = self.pos
|
1057
|
+
|
1058
|
+
_save1 = self.pos
|
1059
|
+
while true # sequence
|
1060
|
+
_tmp = apply(:_blockhead)
|
1061
|
+
head = @result
|
1062
|
+
unless _tmp
|
1063
|
+
self.pos = _save1
|
1064
|
+
break
|
1065
|
+
end
|
1066
|
+
_tmp = apply(:_blockbody)
|
1067
|
+
body = @result
|
1068
|
+
unless _tmp
|
1069
|
+
self.pos = _save1
|
1070
|
+
break
|
1071
|
+
end
|
1072
|
+
_tmp = apply(:_blockend)
|
1073
|
+
unless _tmp
|
1074
|
+
self.pos = _save1
|
1075
|
+
end
|
1076
|
+
break
|
1077
|
+
end # end sequence
|
1078
|
+
|
1079
|
+
if _tmp
|
1080
|
+
text = get_text(_text_start)
|
1081
|
+
end
|
1082
|
+
unless _tmp
|
1083
|
+
self.pos = _save
|
1084
|
+
break
|
1085
|
+
end
|
1086
|
+
@result = begin; create_item(:block, head, body, raw: text) ; end
|
1087
|
+
_tmp = true
|
1088
|
+
unless _tmp
|
1089
|
+
self.pos = _save
|
1090
|
+
end
|
1091
|
+
break
|
1092
|
+
end # end sequence
|
1093
|
+
|
1094
|
+
set_failed_rule :_explicit_block unless _tmp
|
1095
|
+
return _tmp
|
1096
|
+
end
|
1097
|
+
|
1098
|
+
# inline = (img_inline | common_inline)
|
1099
|
+
def _inline
|
1100
|
+
|
1101
|
+
_save = self.pos
|
1102
|
+
while true # choice
|
1103
|
+
_tmp = apply(:_img_inline)
|
1104
|
+
break if _tmp
|
1105
|
+
self.pos = _save
|
1106
|
+
_tmp = apply(:_common_inline)
|
1107
|
+
break if _tmp
|
1108
|
+
self.pos = _save
|
1109
|
+
break
|
1110
|
+
end # end choice
|
1111
|
+
|
1112
|
+
set_failed_rule :_inline unless _tmp
|
1113
|
+
return _tmp
|
1114
|
+
end
|
1115
|
+
|
1116
|
+
# common_inline = < "[" command:command "{" documentcontent_except('}'):content "}" "]" > { create_item(:inline, command, content, raw: text) }
|
1117
|
+
def _common_inline
|
1118
|
+
|
1119
|
+
_save = self.pos
|
1120
|
+
while true # sequence
|
1121
|
+
_text_start = self.pos
|
1122
|
+
|
1123
|
+
_save1 = self.pos
|
1124
|
+
while true # sequence
|
1125
|
+
_tmp = match_string("[")
|
1126
|
+
unless _tmp
|
1127
|
+
self.pos = _save1
|
1128
|
+
break
|
1129
|
+
end
|
1130
|
+
_tmp = apply(:_command)
|
1131
|
+
command = @result
|
1132
|
+
unless _tmp
|
1133
|
+
self.pos = _save1
|
1134
|
+
break
|
1135
|
+
end
|
1136
|
+
_tmp = match_string("{")
|
1137
|
+
unless _tmp
|
1138
|
+
self.pos = _save1
|
1139
|
+
break
|
1140
|
+
end
|
1141
|
+
_tmp = apply_with_args(:_documentcontent_except, '}')
|
1142
|
+
content = @result
|
1143
|
+
unless _tmp
|
1144
|
+
self.pos = _save1
|
1145
|
+
break
|
1146
|
+
end
|
1147
|
+
_tmp = match_string("}")
|
1148
|
+
unless _tmp
|
1149
|
+
self.pos = _save1
|
1150
|
+
break
|
1151
|
+
end
|
1152
|
+
_tmp = match_string("]")
|
1153
|
+
unless _tmp
|
1154
|
+
self.pos = _save1
|
1155
|
+
end
|
1156
|
+
break
|
1157
|
+
end # end sequence
|
1158
|
+
|
1159
|
+
if _tmp
|
1160
|
+
text = get_text(_text_start)
|
1161
|
+
end
|
1162
|
+
unless _tmp
|
1163
|
+
self.pos = _save
|
1164
|
+
break
|
1165
|
+
end
|
1166
|
+
@result = begin; create_item(:inline, command, content, raw: text) ; end
|
1167
|
+
_tmp = true
|
1168
|
+
unless _tmp
|
1169
|
+
self.pos = _save
|
1170
|
+
end
|
1171
|
+
break
|
1172
|
+
end # end sequence
|
1173
|
+
|
1174
|
+
set_failed_rule :_common_inline unless _tmp
|
1175
|
+
return _tmp
|
1176
|
+
end
|
1177
|
+
|
1178
|
+
# img_command = command:command &{ command[:name] == 'img' && command[:args].size == 2}
|
1179
|
+
def _img_command
|
1180
|
+
|
1181
|
+
_save = self.pos
|
1182
|
+
while true # sequence
|
1183
|
+
_tmp = apply(:_command)
|
1184
|
+
command = @result
|
1185
|
+
unless _tmp
|
1186
|
+
self.pos = _save
|
1187
|
+
break
|
1188
|
+
end
|
1189
|
+
_save1 = self.pos
|
1190
|
+
_tmp = begin; command[:name] == 'img' && command[:args].size == 2; end
|
1191
|
+
self.pos = _save1
|
1192
|
+
unless _tmp
|
1193
|
+
self.pos = _save
|
1194
|
+
end
|
1195
|
+
break
|
1196
|
+
end # end sequence
|
1197
|
+
|
1198
|
+
set_failed_rule :_img_command unless _tmp
|
1199
|
+
return _tmp
|
1200
|
+
end
|
1201
|
+
|
1202
|
+
# img_inline = < "[" img_command:command "]" > { create_item(:inline, command, nil, raw: text) }
|
1203
|
+
def _img_inline
|
1204
|
+
|
1205
|
+
_save = self.pos
|
1206
|
+
while true # sequence
|
1207
|
+
_text_start = self.pos
|
1208
|
+
|
1209
|
+
_save1 = self.pos
|
1210
|
+
while true # sequence
|
1211
|
+
_tmp = match_string("[")
|
1212
|
+
unless _tmp
|
1213
|
+
self.pos = _save1
|
1214
|
+
break
|
1215
|
+
end
|
1216
|
+
_tmp = apply(:_img_command)
|
1217
|
+
command = @result
|
1218
|
+
unless _tmp
|
1219
|
+
self.pos = _save1
|
1220
|
+
break
|
1221
|
+
end
|
1222
|
+
_tmp = match_string("]")
|
1223
|
+
unless _tmp
|
1224
|
+
self.pos = _save1
|
1225
|
+
end
|
1226
|
+
break
|
1227
|
+
end # end sequence
|
1228
|
+
|
1229
|
+
if _tmp
|
1230
|
+
text = get_text(_text_start)
|
1231
|
+
end
|
1232
|
+
unless _tmp
|
1233
|
+
self.pos = _save
|
1234
|
+
break
|
1235
|
+
end
|
1236
|
+
@result = begin; create_item(:inline, command, nil, raw: text) ; end
|
1237
|
+
_tmp = true
|
1238
|
+
unless _tmp
|
1239
|
+
self.pos = _save
|
1240
|
+
end
|
1241
|
+
break
|
1242
|
+
end # end sequence
|
1243
|
+
|
1244
|
+
set_failed_rule :_img_inline unless _tmp
|
1245
|
+
return _tmp
|
1246
|
+
end
|
1247
|
+
|
1248
|
+
# newpage = line_command:item &{ item[:name] == 'newpage' }
|
1249
|
+
def _newpage
|
1250
|
+
|
1251
|
+
_save = self.pos
|
1252
|
+
while true # sequence
|
1253
|
+
_tmp = apply(:_line_command)
|
1254
|
+
item = @result
|
1255
|
+
unless _tmp
|
1256
|
+
self.pos = _save
|
1257
|
+
break
|
1258
|
+
end
|
1259
|
+
_save1 = self.pos
|
1260
|
+
_tmp = begin; item[:name] == 'newpage' ; end
|
1261
|
+
self.pos = _save1
|
1262
|
+
unless _tmp
|
1263
|
+
self.pos = _save
|
1264
|
+
end
|
1265
|
+
break
|
1266
|
+
end # end sequence
|
1267
|
+
|
1268
|
+
set_failed_rule :_newpage unless _tmp
|
1269
|
+
return _tmp
|
1270
|
+
end
|
1271
|
+
|
1272
|
+
# explicit_paragraph_command = command:command &{ command[:name] == 'p' }
|
1273
|
+
def _explicit_paragraph_command
|
1274
|
+
|
1275
|
+
_save = self.pos
|
1276
|
+
while true # sequence
|
1277
|
+
_tmp = apply(:_command)
|
1278
|
+
command = @result
|
1279
|
+
unless _tmp
|
1280
|
+
self.pos = _save
|
1281
|
+
break
|
1282
|
+
end
|
1283
|
+
_save1 = self.pos
|
1284
|
+
_tmp = begin; command[:name] == 'p' ; end
|
1285
|
+
self.pos = _save1
|
1286
|
+
unless _tmp
|
1287
|
+
self.pos = _save
|
1288
|
+
end
|
1289
|
+
break
|
1290
|
+
end # end sequence
|
1291
|
+
|
1292
|
+
set_failed_rule :_explicit_paragraph_command unless _tmp
|
1293
|
+
return _tmp
|
1294
|
+
end
|
1295
|
+
|
1296
|
+
# explicit_paragraph = < lh - explicit_paragraph_command:command ":" documentcontent?:content le > { create_item(:paragraph, command, content, raw:text) }
|
1297
|
+
def _explicit_paragraph
|
1298
|
+
|
1299
|
+
_save = self.pos
|
1300
|
+
while true # sequence
|
1301
|
+
_text_start = self.pos
|
1302
|
+
|
1303
|
+
_save1 = self.pos
|
1304
|
+
while true # sequence
|
1305
|
+
_tmp = apply(:_lh)
|
1306
|
+
unless _tmp
|
1307
|
+
self.pos = _save1
|
1308
|
+
break
|
1309
|
+
end
|
1310
|
+
_tmp = apply(:__hyphen_)
|
1311
|
+
unless _tmp
|
1312
|
+
self.pos = _save1
|
1313
|
+
break
|
1314
|
+
end
|
1315
|
+
_tmp = apply(:_explicit_paragraph_command)
|
1316
|
+
command = @result
|
1317
|
+
unless _tmp
|
1318
|
+
self.pos = _save1
|
1319
|
+
break
|
1320
|
+
end
|
1321
|
+
_tmp = match_string(":")
|
1322
|
+
unless _tmp
|
1323
|
+
self.pos = _save1
|
1324
|
+
break
|
1325
|
+
end
|
1326
|
+
_save2 = self.pos
|
1327
|
+
_tmp = apply(:_documentcontent)
|
1328
|
+
@result = nil unless _tmp
|
1329
|
+
unless _tmp
|
1330
|
+
_tmp = true
|
1331
|
+
self.pos = _save2
|
1332
|
+
end
|
1333
|
+
content = @result
|
1334
|
+
unless _tmp
|
1335
|
+
self.pos = _save1
|
1336
|
+
break
|
1337
|
+
end
|
1338
|
+
_tmp = apply(:_le)
|
1339
|
+
unless _tmp
|
1340
|
+
self.pos = _save1
|
1341
|
+
end
|
1342
|
+
break
|
1343
|
+
end # end sequence
|
1344
|
+
|
1345
|
+
if _tmp
|
1346
|
+
text = get_text(_text_start)
|
1347
|
+
end
|
1348
|
+
unless _tmp
|
1349
|
+
self.pos = _save
|
1350
|
+
break
|
1351
|
+
end
|
1352
|
+
@result = begin; create_item(:paragraph, command, content, raw:text) ; end
|
1353
|
+
_tmp = true
|
1354
|
+
unless _tmp
|
1355
|
+
self.pos = _save
|
1356
|
+
end
|
1357
|
+
break
|
1358
|
+
end # end sequence
|
1359
|
+
|
1360
|
+
set_failed_rule :_explicit_paragraph unless _tmp
|
1361
|
+
return _tmp
|
1362
|
+
end
|
1363
|
+
|
1364
|
+
# unordered_list = < unordered_item+:items > { create_item(:ul, nil, items, raw: text) }
|
1365
|
+
def _unordered_list
|
1366
|
+
|
1367
|
+
_save = self.pos
|
1368
|
+
while true # sequence
|
1369
|
+
_text_start = self.pos
|
1370
|
+
_save1 = self.pos
|
1371
|
+
_ary = []
|
1372
|
+
_tmp = apply(:_unordered_item)
|
1373
|
+
if _tmp
|
1374
|
+
_ary << @result
|
1375
|
+
while true
|
1376
|
+
_tmp = apply(:_unordered_item)
|
1377
|
+
_ary << @result if _tmp
|
1378
|
+
break unless _tmp
|
1379
|
+
end
|
1380
|
+
_tmp = true
|
1381
|
+
@result = _ary
|
1382
|
+
else
|
1383
|
+
self.pos = _save1
|
1384
|
+
end
|
1385
|
+
items = @result
|
1386
|
+
if _tmp
|
1387
|
+
text = get_text(_text_start)
|
1388
|
+
end
|
1389
|
+
unless _tmp
|
1390
|
+
self.pos = _save
|
1391
|
+
break
|
1392
|
+
end
|
1393
|
+
@result = begin; create_item(:ul, nil, items, raw: text) ; end
|
1394
|
+
_tmp = true
|
1395
|
+
unless _tmp
|
1396
|
+
self.pos = _save
|
1397
|
+
end
|
1398
|
+
break
|
1399
|
+
end # end sequence
|
1400
|
+
|
1401
|
+
set_failed_rule :_unordered_list unless _tmp
|
1402
|
+
return _tmp
|
1403
|
+
end
|
1404
|
+
|
1405
|
+
# unordered_item = < lh "*:" documentcontent:content le > { create_item(:li, nil, content, raw: text) }
|
1406
|
+
def _unordered_item
|
1407
|
+
|
1408
|
+
_save = self.pos
|
1409
|
+
while true # sequence
|
1410
|
+
_text_start = self.pos
|
1411
|
+
|
1412
|
+
_save1 = self.pos
|
1413
|
+
while true # sequence
|
1414
|
+
_tmp = apply(:_lh)
|
1415
|
+
unless _tmp
|
1416
|
+
self.pos = _save1
|
1417
|
+
break
|
1418
|
+
end
|
1419
|
+
_tmp = match_string("*:")
|
1420
|
+
unless _tmp
|
1421
|
+
self.pos = _save1
|
1422
|
+
break
|
1423
|
+
end
|
1424
|
+
_tmp = apply(:_documentcontent)
|
1425
|
+
content = @result
|
1426
|
+
unless _tmp
|
1427
|
+
self.pos = _save1
|
1428
|
+
break
|
1429
|
+
end
|
1430
|
+
_tmp = apply(:_le)
|
1431
|
+
unless _tmp
|
1432
|
+
self.pos = _save1
|
1433
|
+
end
|
1434
|
+
break
|
1435
|
+
end # end sequence
|
1436
|
+
|
1437
|
+
if _tmp
|
1438
|
+
text = get_text(_text_start)
|
1439
|
+
end
|
1440
|
+
unless _tmp
|
1441
|
+
self.pos = _save
|
1442
|
+
break
|
1443
|
+
end
|
1444
|
+
@result = begin; create_item(:li, nil, content, raw: text) ; end
|
1445
|
+
_tmp = true
|
1446
|
+
unless _tmp
|
1447
|
+
self.pos = _save
|
1448
|
+
end
|
1449
|
+
break
|
1450
|
+
end # end sequence
|
1451
|
+
|
1452
|
+
set_failed_rule :_unordered_item unless _tmp
|
1453
|
+
return _tmp
|
1454
|
+
end
|
1455
|
+
|
1456
|
+
# ordered_list = < ordered_item+:items > { create_item(:ol, nil, items, raw: text) }
|
1457
|
+
def _ordered_list
|
1458
|
+
|
1459
|
+
_save = self.pos
|
1460
|
+
while true # sequence
|
1461
|
+
_text_start = self.pos
|
1462
|
+
_save1 = self.pos
|
1463
|
+
_ary = []
|
1464
|
+
_tmp = apply(:_ordered_item)
|
1465
|
+
if _tmp
|
1466
|
+
_ary << @result
|
1467
|
+
while true
|
1468
|
+
_tmp = apply(:_ordered_item)
|
1469
|
+
_ary << @result if _tmp
|
1470
|
+
break unless _tmp
|
1471
|
+
end
|
1472
|
+
_tmp = true
|
1473
|
+
@result = _ary
|
1474
|
+
else
|
1475
|
+
self.pos = _save1
|
1476
|
+
end
|
1477
|
+
items = @result
|
1478
|
+
if _tmp
|
1479
|
+
text = get_text(_text_start)
|
1480
|
+
end
|
1481
|
+
unless _tmp
|
1482
|
+
self.pos = _save
|
1483
|
+
break
|
1484
|
+
end
|
1485
|
+
@result = begin; create_item(:ol, nil, items, raw: text) ; end
|
1486
|
+
_tmp = true
|
1487
|
+
unless _tmp
|
1488
|
+
self.pos = _save
|
1489
|
+
end
|
1490
|
+
break
|
1491
|
+
end # end sequence
|
1492
|
+
|
1493
|
+
set_failed_rule :_ordered_list unless _tmp
|
1494
|
+
return _tmp
|
1495
|
+
end
|
1496
|
+
|
1497
|
+
# ordered_item = < lh num ":" documentcontent:content le > { create_item(:li, nil, content, raw: text) }
|
1498
|
+
def _ordered_item
|
1499
|
+
|
1500
|
+
_save = self.pos
|
1501
|
+
while true # sequence
|
1502
|
+
_text_start = self.pos
|
1503
|
+
|
1504
|
+
_save1 = self.pos
|
1505
|
+
while true # sequence
|
1506
|
+
_tmp = apply(:_lh)
|
1507
|
+
unless _tmp
|
1508
|
+
self.pos = _save1
|
1509
|
+
break
|
1510
|
+
end
|
1511
|
+
_tmp = apply(:_num)
|
1512
|
+
unless _tmp
|
1513
|
+
self.pos = _save1
|
1514
|
+
break
|
1515
|
+
end
|
1516
|
+
_tmp = match_string(":")
|
1517
|
+
unless _tmp
|
1518
|
+
self.pos = _save1
|
1519
|
+
break
|
1520
|
+
end
|
1521
|
+
_tmp = apply(:_documentcontent)
|
1522
|
+
content = @result
|
1523
|
+
unless _tmp
|
1524
|
+
self.pos = _save1
|
1525
|
+
break
|
1526
|
+
end
|
1527
|
+
_tmp = apply(:_le)
|
1528
|
+
unless _tmp
|
1529
|
+
self.pos = _save1
|
1530
|
+
end
|
1531
|
+
break
|
1532
|
+
end # end sequence
|
1533
|
+
|
1534
|
+
if _tmp
|
1535
|
+
text = get_text(_text_start)
|
1536
|
+
end
|
1537
|
+
unless _tmp
|
1538
|
+
self.pos = _save
|
1539
|
+
break
|
1540
|
+
end
|
1541
|
+
@result = begin; create_item(:li, nil, content, raw: text) ; end
|
1542
|
+
_tmp = true
|
1543
|
+
unless _tmp
|
1544
|
+
self.pos = _save
|
1545
|
+
end
|
1546
|
+
break
|
1547
|
+
end # end sequence
|
1548
|
+
|
1549
|
+
set_failed_rule :_ordered_item unless _tmp
|
1550
|
+
return _tmp
|
1551
|
+
end
|
1552
|
+
|
1553
|
+
# definition_list = < definition_item+:items > { create_item(:dl, nil, items, raw: text) }
|
1554
|
+
def _definition_list
|
1555
|
+
|
1556
|
+
_save = self.pos
|
1557
|
+
while true # sequence
|
1558
|
+
_text_start = self.pos
|
1559
|
+
_save1 = self.pos
|
1560
|
+
_ary = []
|
1561
|
+
_tmp = apply(:_definition_item)
|
1562
|
+
if _tmp
|
1563
|
+
_ary << @result
|
1564
|
+
while true
|
1565
|
+
_tmp = apply(:_definition_item)
|
1566
|
+
_ary << @result if _tmp
|
1567
|
+
break unless _tmp
|
1568
|
+
end
|
1569
|
+
_tmp = true
|
1570
|
+
@result = _ary
|
1571
|
+
else
|
1572
|
+
self.pos = _save1
|
1573
|
+
end
|
1574
|
+
items = @result
|
1575
|
+
if _tmp
|
1576
|
+
text = get_text(_text_start)
|
1577
|
+
end
|
1578
|
+
unless _tmp
|
1579
|
+
self.pos = _save
|
1580
|
+
break
|
1581
|
+
end
|
1582
|
+
@result = begin; create_item(:dl, nil, items, raw: text) ; end
|
1583
|
+
_tmp = true
|
1584
|
+
unless _tmp
|
1585
|
+
self.pos = _save
|
1586
|
+
end
|
1587
|
+
break
|
1588
|
+
end # end sequence
|
1589
|
+
|
1590
|
+
set_failed_rule :_definition_list unless _tmp
|
1591
|
+
return _tmp
|
1592
|
+
end
|
1593
|
+
|
1594
|
+
# definition_item = < lh ";:" - documentcontent_except(':'):term ":" - documentcontent:definition le > { create_item(:dtdd, {:args => [term, definition]}, nil, raw: text) }
|
1595
|
+
def _definition_item
|
1596
|
+
|
1597
|
+
_save = self.pos
|
1598
|
+
while true # sequence
|
1599
|
+
_text_start = self.pos
|
1600
|
+
|
1601
|
+
_save1 = self.pos
|
1602
|
+
while true # sequence
|
1603
|
+
_tmp = apply(:_lh)
|
1604
|
+
unless _tmp
|
1605
|
+
self.pos = _save1
|
1606
|
+
break
|
1607
|
+
end
|
1608
|
+
_tmp = match_string(";:")
|
1609
|
+
unless _tmp
|
1610
|
+
self.pos = _save1
|
1611
|
+
break
|
1612
|
+
end
|
1613
|
+
_tmp = apply(:__hyphen_)
|
1614
|
+
unless _tmp
|
1615
|
+
self.pos = _save1
|
1616
|
+
break
|
1617
|
+
end
|
1618
|
+
_tmp = apply_with_args(:_documentcontent_except, ':')
|
1619
|
+
term = @result
|
1620
|
+
unless _tmp
|
1621
|
+
self.pos = _save1
|
1622
|
+
break
|
1623
|
+
end
|
1624
|
+
_tmp = match_string(":")
|
1625
|
+
unless _tmp
|
1626
|
+
self.pos = _save1
|
1627
|
+
break
|
1628
|
+
end
|
1629
|
+
_tmp = apply(:__hyphen_)
|
1630
|
+
unless _tmp
|
1631
|
+
self.pos = _save1
|
1632
|
+
break
|
1633
|
+
end
|
1634
|
+
_tmp = apply(:_documentcontent)
|
1635
|
+
definition = @result
|
1636
|
+
unless _tmp
|
1637
|
+
self.pos = _save1
|
1638
|
+
break
|
1639
|
+
end
|
1640
|
+
_tmp = apply(:_le)
|
1641
|
+
unless _tmp
|
1642
|
+
self.pos = _save1
|
1643
|
+
end
|
1644
|
+
break
|
1645
|
+
end # end sequence
|
1646
|
+
|
1647
|
+
if _tmp
|
1648
|
+
text = get_text(_text_start)
|
1649
|
+
end
|
1650
|
+
unless _tmp
|
1651
|
+
self.pos = _save
|
1652
|
+
break
|
1653
|
+
end
|
1654
|
+
@result = begin; create_item(:dtdd, {:args => [term, definition]}, nil, raw: text) ; end
|
1655
|
+
_tmp = true
|
1656
|
+
unless _tmp
|
1657
|
+
self.pos = _save
|
1658
|
+
end
|
1659
|
+
break
|
1660
|
+
end # end sequence
|
1661
|
+
|
1662
|
+
set_failed_rule :_definition_item unless _tmp
|
1663
|
+
return _tmp
|
1664
|
+
end
|
1665
|
+
|
1666
|
+
# items_list = (unordered_list | ordered_list | definition_list)
|
1667
|
+
def _items_list
|
1668
|
+
|
1669
|
+
_save = self.pos
|
1670
|
+
while true # choice
|
1671
|
+
_tmp = apply(:_unordered_list)
|
1672
|
+
break if _tmp
|
1673
|
+
self.pos = _save
|
1674
|
+
_tmp = apply(:_ordered_list)
|
1675
|
+
break if _tmp
|
1676
|
+
self.pos = _save
|
1677
|
+
_tmp = apply(:_definition_list)
|
1678
|
+
break if _tmp
|
1679
|
+
self.pos = _save
|
1680
|
+
break
|
1681
|
+
end # end choice
|
1682
|
+
|
1683
|
+
set_failed_rule :_items_list unless _tmp
|
1684
|
+
return _tmp
|
1685
|
+
end
|
1686
|
+
|
1687
|
+
# line_command = < lh - (!explicit_paragraph_command command):command ":" documentcontent?:content le > { create_item(:line_command, command, content, raw: text) }
|
1688
|
+
def _line_command
|
1689
|
+
|
1690
|
+
_save = self.pos
|
1691
|
+
while true # sequence
|
1692
|
+
_text_start = self.pos
|
1693
|
+
|
1694
|
+
_save1 = self.pos
|
1695
|
+
while true # sequence
|
1696
|
+
_tmp = apply(:_lh)
|
1697
|
+
unless _tmp
|
1698
|
+
self.pos = _save1
|
1699
|
+
break
|
1700
|
+
end
|
1701
|
+
_tmp = apply(:__hyphen_)
|
1702
|
+
unless _tmp
|
1703
|
+
self.pos = _save1
|
1704
|
+
break
|
1705
|
+
end
|
1706
|
+
|
1707
|
+
_save2 = self.pos
|
1708
|
+
while true # sequence
|
1709
|
+
_save3 = self.pos
|
1710
|
+
_tmp = apply(:_explicit_paragraph_command)
|
1711
|
+
_tmp = _tmp ? nil : true
|
1712
|
+
self.pos = _save3
|
1713
|
+
unless _tmp
|
1714
|
+
self.pos = _save2
|
1715
|
+
break
|
1716
|
+
end
|
1717
|
+
_tmp = apply(:_command)
|
1718
|
+
unless _tmp
|
1719
|
+
self.pos = _save2
|
1720
|
+
end
|
1721
|
+
break
|
1722
|
+
end # end sequence
|
1723
|
+
|
1724
|
+
command = @result
|
1725
|
+
unless _tmp
|
1726
|
+
self.pos = _save1
|
1727
|
+
break
|
1728
|
+
end
|
1729
|
+
_tmp = match_string(":")
|
1730
|
+
unless _tmp
|
1731
|
+
self.pos = _save1
|
1732
|
+
break
|
1733
|
+
end
|
1734
|
+
_save4 = self.pos
|
1735
|
+
_tmp = apply(:_documentcontent)
|
1736
|
+
@result = nil unless _tmp
|
1737
|
+
unless _tmp
|
1738
|
+
_tmp = true
|
1739
|
+
self.pos = _save4
|
1740
|
+
end
|
1741
|
+
content = @result
|
1742
|
+
unless _tmp
|
1743
|
+
self.pos = _save1
|
1744
|
+
break
|
1745
|
+
end
|
1746
|
+
_tmp = apply(:_le)
|
1747
|
+
unless _tmp
|
1748
|
+
self.pos = _save1
|
1749
|
+
end
|
1750
|
+
break
|
1751
|
+
end # end sequence
|
1752
|
+
|
1753
|
+
if _tmp
|
1754
|
+
text = get_text(_text_start)
|
1755
|
+
end
|
1756
|
+
unless _tmp
|
1757
|
+
self.pos = _save
|
1758
|
+
break
|
1759
|
+
end
|
1760
|
+
@result = begin; create_item(:line_command, command, content, raw: text) ; end
|
1761
|
+
_tmp = true
|
1762
|
+
unless _tmp
|
1763
|
+
self.pos = _save
|
1764
|
+
end
|
1765
|
+
break
|
1766
|
+
end # end sequence
|
1767
|
+
|
1768
|
+
set_failed_rule :_line_command unless _tmp
|
1769
|
+
return _tmp
|
1770
|
+
end
|
1771
|
+
|
1772
|
+
# block = (items_list | line_command | explicit_block | paragraph_group | empty_line+)
|
1773
|
+
def _block
|
1774
|
+
|
1775
|
+
_save = self.pos
|
1776
|
+
while true # choice
|
1777
|
+
_tmp = apply(:_items_list)
|
1778
|
+
break if _tmp
|
1779
|
+
self.pos = _save
|
1780
|
+
_tmp = apply(:_line_command)
|
1781
|
+
break if _tmp
|
1782
|
+
self.pos = _save
|
1783
|
+
_tmp = apply(:_explicit_block)
|
1784
|
+
break if _tmp
|
1785
|
+
self.pos = _save
|
1786
|
+
_tmp = apply(:_paragraph_group)
|
1787
|
+
break if _tmp
|
1788
|
+
self.pos = _save
|
1789
|
+
_save1 = self.pos
|
1790
|
+
_tmp = apply(:_empty_line)
|
1791
|
+
if _tmp
|
1792
|
+
while true
|
1793
|
+
_tmp = apply(:_empty_line)
|
1794
|
+
break unless _tmp
|
1795
|
+
end
|
1796
|
+
_tmp = true
|
1797
|
+
else
|
1798
|
+
self.pos = _save1
|
1799
|
+
end
|
1800
|
+
break if _tmp
|
1801
|
+
self.pos = _save
|
1802
|
+
break
|
1803
|
+
end # end choice
|
1804
|
+
|
1805
|
+
set_failed_rule :_block unless _tmp
|
1806
|
+
return _tmp
|
1807
|
+
end
|
1808
|
+
|
1809
|
+
# block_delimiter = (blockhead | blockend | newpage)
|
1810
|
+
def _block_delimiter
|
1811
|
+
|
1812
|
+
_save = self.pos
|
1813
|
+
while true # choice
|
1814
|
+
_tmp = apply(:_blockhead)
|
1815
|
+
break if _tmp
|
1816
|
+
self.pos = _save
|
1817
|
+
_tmp = apply(:_blockend)
|
1818
|
+
break if _tmp
|
1819
|
+
self.pos = _save
|
1820
|
+
_tmp = apply(:_newpage)
|
1821
|
+
break if _tmp
|
1822
|
+
self.pos = _save
|
1823
|
+
break
|
1824
|
+
end # end choice
|
1825
|
+
|
1826
|
+
set_failed_rule :_block_delimiter unless _tmp
|
1827
|
+
return _tmp
|
1828
|
+
end
|
1829
|
+
|
1830
|
+
# paragraph_delimiter = (block | block_delimiter)
|
1831
|
+
def _paragraph_delimiter
|
1832
|
+
|
1833
|
+
_save = self.pos
|
1834
|
+
while true # choice
|
1835
|
+
_tmp = apply(:_block)
|
1836
|
+
break if _tmp
|
1837
|
+
self.pos = _save
|
1838
|
+
_tmp = apply(:_block_delimiter)
|
1839
|
+
break if _tmp
|
1840
|
+
self.pos = _save
|
1841
|
+
break
|
1842
|
+
end # end choice
|
1843
|
+
|
1844
|
+
set_failed_rule :_paragraph_delimiter unless _tmp
|
1845
|
+
return _tmp
|
1846
|
+
end
|
1847
|
+
|
1848
|
+
# char = < /[[:print:]]/ > { text }
|
1849
|
+
def _char
|
1850
|
+
|
1851
|
+
_save = self.pos
|
1852
|
+
while true # sequence
|
1853
|
+
_text_start = self.pos
|
1854
|
+
_tmp = scan(/\A(?-mix:[[:print:]])/)
|
1855
|
+
if _tmp
|
1856
|
+
text = get_text(_text_start)
|
1857
|
+
end
|
1858
|
+
unless _tmp
|
1859
|
+
self.pos = _save
|
1860
|
+
break
|
1861
|
+
end
|
1862
|
+
@result = begin; text ; end
|
1863
|
+
_tmp = true
|
1864
|
+
unless _tmp
|
1865
|
+
self.pos = _save
|
1866
|
+
end
|
1867
|
+
break
|
1868
|
+
end # end sequence
|
1869
|
+
|
1870
|
+
set_failed_rule :_char unless _tmp
|
1871
|
+
return _tmp
|
1872
|
+
end
|
1873
|
+
|
1874
|
+
# charstring = < char* > { text }
|
1875
|
+
def _charstring
|
1876
|
+
|
1877
|
+
_save = self.pos
|
1878
|
+
while true # sequence
|
1879
|
+
_text_start = self.pos
|
1880
|
+
while true
|
1881
|
+
_tmp = apply(:_char)
|
1882
|
+
break unless _tmp
|
1883
|
+
end
|
1884
|
+
_tmp = true
|
1885
|
+
if _tmp
|
1886
|
+
text = get_text(_text_start)
|
1887
|
+
end
|
1888
|
+
unless _tmp
|
1889
|
+
self.pos = _save
|
1890
|
+
break
|
1891
|
+
end
|
1892
|
+
@result = begin; text ; end
|
1893
|
+
_tmp = true
|
1894
|
+
unless _tmp
|
1895
|
+
self.pos = _save
|
1896
|
+
end
|
1897
|
+
break
|
1898
|
+
end # end sequence
|
1899
|
+
|
1900
|
+
set_failed_rule :_charstring unless _tmp
|
1901
|
+
return _tmp
|
1902
|
+
end
|
1903
|
+
|
1904
|
+
# char_except = char:c &{ c != e }
|
1905
|
+
def _char_except(e)
|
1906
|
+
|
1907
|
+
_save = self.pos
|
1908
|
+
while true # sequence
|
1909
|
+
_tmp = apply(:_char)
|
1910
|
+
c = @result
|
1911
|
+
unless _tmp
|
1912
|
+
self.pos = _save
|
1913
|
+
break
|
1914
|
+
end
|
1915
|
+
_save1 = self.pos
|
1916
|
+
_tmp = begin; c != e ; end
|
1917
|
+
self.pos = _save1
|
1918
|
+
unless _tmp
|
1919
|
+
self.pos = _save
|
1920
|
+
end
|
1921
|
+
break
|
1922
|
+
end # end sequence
|
1923
|
+
|
1924
|
+
set_failed_rule :_char_except unless _tmp
|
1925
|
+
return _tmp
|
1926
|
+
end
|
1927
|
+
|
1928
|
+
# charstring_except = < char_except(e)* > { text }
|
1929
|
+
def _charstring_except(e)
|
1930
|
+
|
1931
|
+
_save = self.pos
|
1932
|
+
while true # sequence
|
1933
|
+
_text_start = self.pos
|
1934
|
+
while true
|
1935
|
+
_tmp = apply_with_args(:_char_except, e)
|
1936
|
+
break unless _tmp
|
1937
|
+
end
|
1938
|
+
_tmp = true
|
1939
|
+
if _tmp
|
1940
|
+
text = get_text(_text_start)
|
1941
|
+
end
|
1942
|
+
unless _tmp
|
1943
|
+
self.pos = _save
|
1944
|
+
break
|
1945
|
+
end
|
1946
|
+
@result = begin; text ; end
|
1947
|
+
_tmp = true
|
1948
|
+
unless _tmp
|
1949
|
+
self.pos = _save
|
1950
|
+
end
|
1951
|
+
break
|
1952
|
+
end # end sequence
|
1953
|
+
|
1954
|
+
set_failed_rule :_charstring_except unless _tmp
|
1955
|
+
return _tmp
|
1956
|
+
end
|
1957
|
+
|
1958
|
+
# documentcontent_except = (inline | !inline char_except(e))+:content {parse_text(content)}
|
1959
|
+
def _documentcontent_except(e)
|
1960
|
+
|
1961
|
+
_save = self.pos
|
1962
|
+
while true # sequence
|
1963
|
+
_save1 = self.pos
|
1964
|
+
_ary = []
|
1965
|
+
|
1966
|
+
_save2 = self.pos
|
1967
|
+
while true # choice
|
1968
|
+
_tmp = apply(:_inline)
|
1969
|
+
break if _tmp
|
1970
|
+
self.pos = _save2
|
1971
|
+
|
1972
|
+
_save3 = self.pos
|
1973
|
+
while true # sequence
|
1974
|
+
_save4 = self.pos
|
1975
|
+
_tmp = apply(:_inline)
|
1976
|
+
_tmp = _tmp ? nil : true
|
1977
|
+
self.pos = _save4
|
1978
|
+
unless _tmp
|
1979
|
+
self.pos = _save3
|
1980
|
+
break
|
1981
|
+
end
|
1982
|
+
_tmp = apply_with_args(:_char_except, e)
|
1983
|
+
unless _tmp
|
1984
|
+
self.pos = _save3
|
1985
|
+
end
|
1986
|
+
break
|
1987
|
+
end # end sequence
|
1988
|
+
|
1989
|
+
break if _tmp
|
1990
|
+
self.pos = _save2
|
1991
|
+
break
|
1992
|
+
end # end choice
|
1993
|
+
|
1994
|
+
if _tmp
|
1995
|
+
_ary << @result
|
1996
|
+
while true
|
1997
|
+
|
1998
|
+
_save5 = self.pos
|
1999
|
+
while true # choice
|
2000
|
+
_tmp = apply(:_inline)
|
2001
|
+
break if _tmp
|
2002
|
+
self.pos = _save5
|
2003
|
+
|
2004
|
+
_save6 = self.pos
|
2005
|
+
while true # sequence
|
2006
|
+
_save7 = self.pos
|
2007
|
+
_tmp = apply(:_inline)
|
2008
|
+
_tmp = _tmp ? nil : true
|
2009
|
+
self.pos = _save7
|
2010
|
+
unless _tmp
|
2011
|
+
self.pos = _save6
|
2012
|
+
break
|
2013
|
+
end
|
2014
|
+
_tmp = apply_with_args(:_char_except, e)
|
2015
|
+
unless _tmp
|
2016
|
+
self.pos = _save6
|
2017
|
+
end
|
2018
|
+
break
|
2019
|
+
end # end sequence
|
2020
|
+
|
2021
|
+
break if _tmp
|
2022
|
+
self.pos = _save5
|
2023
|
+
break
|
2024
|
+
end # end choice
|
2025
|
+
|
2026
|
+
_ary << @result if _tmp
|
2027
|
+
break unless _tmp
|
2028
|
+
end
|
2029
|
+
_tmp = true
|
2030
|
+
@result = _ary
|
2031
|
+
else
|
2032
|
+
self.pos = _save1
|
2033
|
+
end
|
2034
|
+
content = @result
|
2035
|
+
unless _tmp
|
2036
|
+
self.pos = _save
|
2037
|
+
break
|
2038
|
+
end
|
2039
|
+
@result = begin; parse_text(content); end
|
2040
|
+
_tmp = true
|
2041
|
+
unless _tmp
|
2042
|
+
self.pos = _save
|
2043
|
+
end
|
2044
|
+
break
|
2045
|
+
end # end sequence
|
2046
|
+
|
2047
|
+
set_failed_rule :_documentcontent_except unless _tmp
|
2048
|
+
return _tmp
|
2049
|
+
end
|
2050
|
+
|
2051
|
+
# documentcontent = (inline | !inline char)+:content {parse_text(content)}
|
2052
|
+
def _documentcontent
|
2053
|
+
|
2054
|
+
_save = self.pos
|
2055
|
+
while true # sequence
|
2056
|
+
_save1 = self.pos
|
2057
|
+
_ary = []
|
2058
|
+
|
2059
|
+
_save2 = self.pos
|
2060
|
+
while true # choice
|
2061
|
+
_tmp = apply(:_inline)
|
2062
|
+
break if _tmp
|
2063
|
+
self.pos = _save2
|
2064
|
+
|
2065
|
+
_save3 = self.pos
|
2066
|
+
while true # sequence
|
2067
|
+
_save4 = self.pos
|
2068
|
+
_tmp = apply(:_inline)
|
2069
|
+
_tmp = _tmp ? nil : true
|
2070
|
+
self.pos = _save4
|
2071
|
+
unless _tmp
|
2072
|
+
self.pos = _save3
|
2073
|
+
break
|
2074
|
+
end
|
2075
|
+
_tmp = apply(:_char)
|
2076
|
+
unless _tmp
|
2077
|
+
self.pos = _save3
|
2078
|
+
end
|
2079
|
+
break
|
2080
|
+
end # end sequence
|
2081
|
+
|
2082
|
+
break if _tmp
|
2083
|
+
self.pos = _save2
|
2084
|
+
break
|
2085
|
+
end # end choice
|
2086
|
+
|
2087
|
+
if _tmp
|
2088
|
+
_ary << @result
|
2089
|
+
while true
|
2090
|
+
|
2091
|
+
_save5 = self.pos
|
2092
|
+
while true # choice
|
2093
|
+
_tmp = apply(:_inline)
|
2094
|
+
break if _tmp
|
2095
|
+
self.pos = _save5
|
2096
|
+
|
2097
|
+
_save6 = self.pos
|
2098
|
+
while true # sequence
|
2099
|
+
_save7 = self.pos
|
2100
|
+
_tmp = apply(:_inline)
|
2101
|
+
_tmp = _tmp ? nil : true
|
2102
|
+
self.pos = _save7
|
2103
|
+
unless _tmp
|
2104
|
+
self.pos = _save6
|
2105
|
+
break
|
2106
|
+
end
|
2107
|
+
_tmp = apply(:_char)
|
2108
|
+
unless _tmp
|
2109
|
+
self.pos = _save6
|
2110
|
+
end
|
2111
|
+
break
|
2112
|
+
end # end sequence
|
2113
|
+
|
2114
|
+
break if _tmp
|
2115
|
+
self.pos = _save5
|
2116
|
+
break
|
2117
|
+
end # end choice
|
2118
|
+
|
2119
|
+
_ary << @result if _tmp
|
2120
|
+
break unless _tmp
|
2121
|
+
end
|
2122
|
+
_tmp = true
|
2123
|
+
@result = _ary
|
2124
|
+
else
|
2125
|
+
self.pos = _save1
|
2126
|
+
end
|
2127
|
+
content = @result
|
2128
|
+
unless _tmp
|
2129
|
+
self.pos = _save
|
2130
|
+
break
|
2131
|
+
end
|
2132
|
+
@result = begin; parse_text(content); end
|
2133
|
+
_tmp = true
|
2134
|
+
unless _tmp
|
2135
|
+
self.pos = _save
|
2136
|
+
end
|
2137
|
+
break
|
2138
|
+
end # end sequence
|
2139
|
+
|
2140
|
+
set_failed_rule :_documentcontent unless _tmp
|
2141
|
+
return _tmp
|
2142
|
+
end
|
2143
|
+
|
2144
|
+
# documentline = lh documentcontent:content /$/ { content }
|
2145
|
+
def _documentline
|
2146
|
+
|
2147
|
+
_save = self.pos
|
2148
|
+
while true # sequence
|
2149
|
+
_tmp = apply(:_lh)
|
2150
|
+
unless _tmp
|
2151
|
+
self.pos = _save
|
2152
|
+
break
|
2153
|
+
end
|
2154
|
+
_tmp = apply(:_documentcontent)
|
2155
|
+
content = @result
|
2156
|
+
unless _tmp
|
2157
|
+
self.pos = _save
|
2158
|
+
break
|
2159
|
+
end
|
2160
|
+
_tmp = scan(/\A(?-mix:$)/)
|
2161
|
+
unless _tmp
|
2162
|
+
self.pos = _save
|
2163
|
+
break
|
2164
|
+
end
|
2165
|
+
@result = begin; content ; end
|
2166
|
+
_tmp = true
|
2167
|
+
unless _tmp
|
2168
|
+
self.pos = _save
|
2169
|
+
end
|
2170
|
+
break
|
2171
|
+
end # end sequence
|
2172
|
+
|
2173
|
+
set_failed_rule :_documentline unless _tmp
|
2174
|
+
return _tmp
|
2175
|
+
end
|
2176
|
+
|
2177
|
+
# stylesheets = < lh - "stylesheets:" (!le charstring):stylesheets le > { create_item(:stylesheets, {:stylesheets => stylesheets.split(',').map(&:strip)}, nil, raw:text) }
|
2178
|
+
def _stylesheets
|
2179
|
+
|
2180
|
+
_save = self.pos
|
2181
|
+
while true # sequence
|
2182
|
+
_text_start = self.pos
|
2183
|
+
|
2184
|
+
_save1 = self.pos
|
2185
|
+
while true # sequence
|
2186
|
+
_tmp = apply(:_lh)
|
2187
|
+
unless _tmp
|
2188
|
+
self.pos = _save1
|
2189
|
+
break
|
2190
|
+
end
|
2191
|
+
_tmp = apply(:__hyphen_)
|
2192
|
+
unless _tmp
|
2193
|
+
self.pos = _save1
|
2194
|
+
break
|
2195
|
+
end
|
2196
|
+
_tmp = match_string("stylesheets:")
|
2197
|
+
unless _tmp
|
2198
|
+
self.pos = _save1
|
2199
|
+
break
|
2200
|
+
end
|
2201
|
+
|
2202
|
+
_save2 = self.pos
|
2203
|
+
while true # sequence
|
2204
|
+
_save3 = self.pos
|
2205
|
+
_tmp = apply(:_le)
|
2206
|
+
_tmp = _tmp ? nil : true
|
2207
|
+
self.pos = _save3
|
2208
|
+
unless _tmp
|
2209
|
+
self.pos = _save2
|
2210
|
+
break
|
2211
|
+
end
|
2212
|
+
_tmp = apply(:_charstring)
|
2213
|
+
unless _tmp
|
2214
|
+
self.pos = _save2
|
2215
|
+
end
|
2216
|
+
break
|
2217
|
+
end # end sequence
|
2218
|
+
|
2219
|
+
stylesheets = @result
|
2220
|
+
unless _tmp
|
2221
|
+
self.pos = _save1
|
2222
|
+
break
|
2223
|
+
end
|
2224
|
+
_tmp = apply(:_le)
|
2225
|
+
unless _tmp
|
2226
|
+
self.pos = _save1
|
2227
|
+
end
|
2228
|
+
break
|
2229
|
+
end # end sequence
|
2230
|
+
|
2231
|
+
if _tmp
|
2232
|
+
text = get_text(_text_start)
|
2233
|
+
end
|
2234
|
+
unless _tmp
|
2235
|
+
self.pos = _save
|
2236
|
+
break
|
2237
|
+
end
|
2238
|
+
@result = begin; create_item(:stylesheets, {:stylesheets => stylesheets.split(',').map(&:strip)}, nil, raw:text) ; end
|
2239
|
+
_tmp = true
|
2240
|
+
unless _tmp
|
2241
|
+
self.pos = _save
|
2242
|
+
end
|
2243
|
+
break
|
2244
|
+
end # end sequence
|
2245
|
+
|
2246
|
+
set_failed_rule :_stylesheets unless _tmp
|
2247
|
+
return _tmp
|
2248
|
+
end
|
2249
|
+
|
2250
|
+
# title = < lh - "title:" (!le charstring):title le > { create_item(:title, {:title => title }, nil, raw:text) }
|
2251
|
+
def _title
|
2252
|
+
|
2253
|
+
_save = self.pos
|
2254
|
+
while true # sequence
|
2255
|
+
_text_start = self.pos
|
2256
|
+
|
2257
|
+
_save1 = self.pos
|
2258
|
+
while true # sequence
|
2259
|
+
_tmp = apply(:_lh)
|
2260
|
+
unless _tmp
|
2261
|
+
self.pos = _save1
|
2262
|
+
break
|
2263
|
+
end
|
2264
|
+
_tmp = apply(:__hyphen_)
|
2265
|
+
unless _tmp
|
2266
|
+
self.pos = _save1
|
2267
|
+
break
|
2268
|
+
end
|
2269
|
+
_tmp = match_string("title:")
|
2270
|
+
unless _tmp
|
2271
|
+
self.pos = _save1
|
2272
|
+
break
|
2273
|
+
end
|
2274
|
+
|
2275
|
+
_save2 = self.pos
|
2276
|
+
while true # sequence
|
2277
|
+
_save3 = self.pos
|
2278
|
+
_tmp = apply(:_le)
|
2279
|
+
_tmp = _tmp ? nil : true
|
2280
|
+
self.pos = _save3
|
2281
|
+
unless _tmp
|
2282
|
+
self.pos = _save2
|
2283
|
+
break
|
2284
|
+
end
|
2285
|
+
_tmp = apply(:_charstring)
|
2286
|
+
unless _tmp
|
2287
|
+
self.pos = _save2
|
2288
|
+
end
|
2289
|
+
break
|
2290
|
+
end # end sequence
|
2291
|
+
|
2292
|
+
title = @result
|
2293
|
+
unless _tmp
|
2294
|
+
self.pos = _save1
|
2295
|
+
break
|
2296
|
+
end
|
2297
|
+
_tmp = apply(:_le)
|
2298
|
+
unless _tmp
|
2299
|
+
self.pos = _save1
|
2300
|
+
end
|
2301
|
+
break
|
2302
|
+
end # end sequence
|
2303
|
+
|
2304
|
+
if _tmp
|
2305
|
+
text = get_text(_text_start)
|
2306
|
+
end
|
2307
|
+
unless _tmp
|
2308
|
+
self.pos = _save
|
2309
|
+
break
|
2310
|
+
end
|
2311
|
+
@result = begin; create_item(:title, {:title => title }, nil, raw:text) ; end
|
2312
|
+
_tmp = true
|
2313
|
+
unless _tmp
|
2314
|
+
self.pos = _save
|
2315
|
+
end
|
2316
|
+
break
|
2317
|
+
end # end sequence
|
2318
|
+
|
2319
|
+
set_failed_rule :_title unless _tmp
|
2320
|
+
return _tmp
|
2321
|
+
end
|
2322
|
+
|
2323
|
+
# lang = < lh - "lang:" (!le charstring):lang le > { create_item(:lang, {:lang => lang }, nil, raw:text) }
|
2324
|
+
def _lang
|
2325
|
+
|
2326
|
+
_save = self.pos
|
2327
|
+
while true # sequence
|
2328
|
+
_text_start = self.pos
|
2329
|
+
|
2330
|
+
_save1 = self.pos
|
2331
|
+
while true # sequence
|
2332
|
+
_tmp = apply(:_lh)
|
2333
|
+
unless _tmp
|
2334
|
+
self.pos = _save1
|
2335
|
+
break
|
2336
|
+
end
|
2337
|
+
_tmp = apply(:__hyphen_)
|
2338
|
+
unless _tmp
|
2339
|
+
self.pos = _save1
|
2340
|
+
break
|
2341
|
+
end
|
2342
|
+
_tmp = match_string("lang:")
|
2343
|
+
unless _tmp
|
2344
|
+
self.pos = _save1
|
2345
|
+
break
|
2346
|
+
end
|
2347
|
+
|
2348
|
+
_save2 = self.pos
|
2349
|
+
while true # sequence
|
2350
|
+
_save3 = self.pos
|
2351
|
+
_tmp = apply(:_le)
|
2352
|
+
_tmp = _tmp ? nil : true
|
2353
|
+
self.pos = _save3
|
2354
|
+
unless _tmp
|
2355
|
+
self.pos = _save2
|
2356
|
+
break
|
2357
|
+
end
|
2358
|
+
_tmp = apply(:_charstring)
|
2359
|
+
unless _tmp
|
2360
|
+
self.pos = _save2
|
2361
|
+
end
|
2362
|
+
break
|
2363
|
+
end # end sequence
|
2364
|
+
|
2365
|
+
lang = @result
|
2366
|
+
unless _tmp
|
2367
|
+
self.pos = _save1
|
2368
|
+
break
|
2369
|
+
end
|
2370
|
+
_tmp = apply(:_le)
|
2371
|
+
unless _tmp
|
2372
|
+
self.pos = _save1
|
2373
|
+
end
|
2374
|
+
break
|
2375
|
+
end # end sequence
|
2376
|
+
|
2377
|
+
if _tmp
|
2378
|
+
text = get_text(_text_start)
|
2379
|
+
end
|
2380
|
+
unless _tmp
|
2381
|
+
self.pos = _save
|
2382
|
+
break
|
2383
|
+
end
|
2384
|
+
@result = begin; create_item(:lang, {:lang => lang }, nil, raw:text) ; end
|
2385
|
+
_tmp = true
|
2386
|
+
unless _tmp
|
2387
|
+
self.pos = _save
|
2388
|
+
end
|
2389
|
+
break
|
2390
|
+
end # end sequence
|
2391
|
+
|
2392
|
+
set_failed_rule :_lang unless _tmp
|
2393
|
+
return _tmp
|
2394
|
+
end
|
2395
|
+
|
2396
|
+
# header = (stylesheets | title | lang)
|
2397
|
+
def _header
|
2398
|
+
|
2399
|
+
_save = self.pos
|
2400
|
+
while true # choice
|
2401
|
+
_tmp = apply(:_stylesheets)
|
2402
|
+
break if _tmp
|
2403
|
+
self.pos = _save
|
2404
|
+
_tmp = apply(:_title)
|
2405
|
+
break if _tmp
|
2406
|
+
self.pos = _save
|
2407
|
+
_tmp = apply(:_lang)
|
2408
|
+
break if _tmp
|
2409
|
+
self.pos = _save
|
2410
|
+
break
|
2411
|
+
end # end choice
|
2412
|
+
|
2413
|
+
set_failed_rule :_header unless _tmp
|
2414
|
+
return _tmp
|
2415
|
+
end
|
2416
|
+
|
2417
|
+
# root = header*:headers block*:blocks eof_comment? eof { headers + blocks }
|
2418
|
+
def _root
|
2419
|
+
|
2420
|
+
_save = self.pos
|
2421
|
+
while true # sequence
|
2422
|
+
_ary = []
|
2423
|
+
while true
|
2424
|
+
_tmp = apply(:_header)
|
2425
|
+
_ary << @result if _tmp
|
2426
|
+
break unless _tmp
|
2427
|
+
end
|
2428
|
+
_tmp = true
|
2429
|
+
@result = _ary
|
2430
|
+
headers = @result
|
2431
|
+
unless _tmp
|
2432
|
+
self.pos = _save
|
2433
|
+
break
|
2434
|
+
end
|
2435
|
+
_ary = []
|
2436
|
+
while true
|
2437
|
+
_tmp = apply(:_block)
|
2438
|
+
_ary << @result if _tmp
|
2439
|
+
break unless _tmp
|
2440
|
+
end
|
2441
|
+
_tmp = true
|
2442
|
+
@result = _ary
|
2443
|
+
blocks = @result
|
2444
|
+
unless _tmp
|
2445
|
+
self.pos = _save
|
2446
|
+
break
|
2447
|
+
end
|
2448
|
+
_save3 = self.pos
|
2449
|
+
_tmp = apply(:_eof_comment)
|
2450
|
+
unless _tmp
|
2451
|
+
_tmp = true
|
2452
|
+
self.pos = _save3
|
2453
|
+
end
|
2454
|
+
unless _tmp
|
2455
|
+
self.pos = _save
|
2456
|
+
break
|
2457
|
+
end
|
2458
|
+
_tmp = apply(:_eof)
|
2459
|
+
unless _tmp
|
2460
|
+
self.pos = _save
|
2461
|
+
break
|
2462
|
+
end
|
2463
|
+
@result = begin; headers + blocks ; end
|
2464
|
+
_tmp = true
|
2465
|
+
unless _tmp
|
2466
|
+
self.pos = _save
|
2467
|
+
end
|
2468
|
+
break
|
2469
|
+
end # end sequence
|
2470
|
+
|
2471
|
+
set_failed_rule :_root unless _tmp
|
2472
|
+
return _tmp
|
2473
|
+
end
|
2474
|
+
|
2475
|
+
Rules = {}
|
2476
|
+
Rules[:_eof] = rule_info("eof", "!.")
|
2477
|
+
Rules[:_space] = rule_info("space", "(\" \" | \"\\\\t\")")
|
2478
|
+
Rules[:_eof_comment] = rule_info("eof_comment", "lh space* \"\#\" (!eof .)*")
|
2479
|
+
Rules[:_comment] = rule_info("comment", "lh space* \"\#\" (!nl .)* nl")
|
2480
|
+
Rules[:__hyphen_] = rule_info("-", "(space | comment)*")
|
2481
|
+
Rules[:_empty_line] = rule_info("empty_line", "lh - nl")
|
2482
|
+
Rules[:_nl] = rule_info("nl", "/\\r?\\n/")
|
2483
|
+
Rules[:_lh] = rule_info("lh", "/^/")
|
2484
|
+
Rules[:_le] = rule_info("le", "(nl | /$/)")
|
2485
|
+
Rules[:_word] = rule_info("word", "< /[\\w0-9]/ (\"-\" | /[\\w0-9]/)* > { text }")
|
2486
|
+
Rules[:_num] = rule_info("num", "< [0-9]+ > { text.to_i }")
|
2487
|
+
Rules[:_classname] = rule_info("classname", "\".\" word:classname { classname }")
|
2488
|
+
Rules[:_classnames] = rule_info("classnames", "classname*:classnames { classnames }")
|
2489
|
+
Rules[:_idname] = rule_info("idname", "\"\#\" word:idname { idname }")
|
2490
|
+
Rules[:_idnames] = rule_info("idnames", "idname*:idnames { idnames }")
|
2491
|
+
Rules[:_commandname] = rule_info("commandname", "word:name idnames?:idnames classnames?:classes { {:name => name, :ids => idnames, :classes => classes} }")
|
2492
|
+
Rules[:_parameter] = rule_info("parameter", "< (/[^,)]/* | \"\\\"\" /[^\"]/* \"\\\"\" | \"'\" /[^']/* \"'\") > { text }")
|
2493
|
+
Rules[:_parameters] = rule_info("parameters", "< parameter (\",\" parameter)* > { text }")
|
2494
|
+
Rules[:_command] = rule_info("command", "commandname:commandname (\"(\" - parameters:arg - \")\")? { arg ||= ''; commandname.merge({ :args => arg.split(',') }) }")
|
2495
|
+
Rules[:_implicit_paragraph] = rule_info("implicit_paragraph", "< (!paragraph_delimiter - documentline -):paragraph > { create_item(:paragraph, nil, paragraph, raw: text) }")
|
2496
|
+
Rules[:_paragraph] = rule_info("paragraph", "(explicit_paragraph | implicit_paragraph)")
|
2497
|
+
Rules[:_paragraph_group] = rule_info("paragraph_group", "< (paragraph nl | paragraph)+:paragraphs empty_line* > { create_item(:paragraph_group, nil, paragraphs, raw: text) }")
|
2498
|
+
Rules[:_blockhead] = rule_info("blockhead", "lh - command:command - \"{\" - le { command }")
|
2499
|
+
Rules[:_blockend] = rule_info("blockend", "lh - \"}\" - le")
|
2500
|
+
Rules[:_blockbody] = rule_info("blockbody", "(!blockend block)+:body { body }")
|
2501
|
+
Rules[:_explicit_block] = rule_info("explicit_block", "< blockhead:head blockbody:body blockend > { create_item(:block, head, body, raw: text) }")
|
2502
|
+
Rules[:_inline] = rule_info("inline", "(img_inline | common_inline)")
|
2503
|
+
Rules[:_common_inline] = rule_info("common_inline", "< \"[\" command:command \"{\" documentcontent_except('}'):content \"}\" \"]\" > { create_item(:inline, command, content, raw: text) }")
|
2504
|
+
Rules[:_img_command] = rule_info("img_command", "command:command &{ command[:name] == 'img' && command[:args].size == 2}")
|
2505
|
+
Rules[:_img_inline] = rule_info("img_inline", "< \"[\" img_command:command \"]\" > { create_item(:inline, command, nil, raw: text) }")
|
2506
|
+
Rules[:_newpage] = rule_info("newpage", "line_command:item &{ item[:name] == 'newpage' }")
|
2507
|
+
Rules[:_explicit_paragraph_command] = rule_info("explicit_paragraph_command", "command:command &{ command[:name] == 'p' }")
|
2508
|
+
Rules[:_explicit_paragraph] = rule_info("explicit_paragraph", "< lh - explicit_paragraph_command:command \":\" documentcontent?:content le > { create_item(:paragraph, command, content, raw:text) }")
|
2509
|
+
Rules[:_unordered_list] = rule_info("unordered_list", "< unordered_item+:items > { create_item(:ul, nil, items, raw: text) }")
|
2510
|
+
Rules[:_unordered_item] = rule_info("unordered_item", "< lh \"*:\" documentcontent:content le > { create_item(:li, nil, content, raw: text) }")
|
2511
|
+
Rules[:_ordered_list] = rule_info("ordered_list", "< ordered_item+:items > { create_item(:ol, nil, items, raw: text) }")
|
2512
|
+
Rules[:_ordered_item] = rule_info("ordered_item", "< lh num \":\" documentcontent:content le > { create_item(:li, nil, content, raw: text) }")
|
2513
|
+
Rules[:_definition_list] = rule_info("definition_list", "< definition_item+:items > { create_item(:dl, nil, items, raw: text) }")
|
2514
|
+
Rules[:_definition_item] = rule_info("definition_item", "< lh \";:\" - documentcontent_except(':'):term \":\" - documentcontent:definition le > { create_item(:dtdd, {:args => [term, definition]}, nil, raw: text) }")
|
2515
|
+
Rules[:_items_list] = rule_info("items_list", "(unordered_list | ordered_list | definition_list)")
|
2516
|
+
Rules[:_line_command] = rule_info("line_command", "< lh - (!explicit_paragraph_command command):command \":\" documentcontent?:content le > { create_item(:line_command, command, content, raw: text) }")
|
2517
|
+
Rules[:_block] = rule_info("block", "(items_list | line_command | explicit_block | paragraph_group | empty_line+)")
|
2518
|
+
Rules[:_block_delimiter] = rule_info("block_delimiter", "(blockhead | blockend | newpage)")
|
2519
|
+
Rules[:_paragraph_delimiter] = rule_info("paragraph_delimiter", "(block | block_delimiter)")
|
2520
|
+
Rules[:_char] = rule_info("char", "< /[[:print:]]/ > { text }")
|
2521
|
+
Rules[:_charstring] = rule_info("charstring", "< char* > { text }")
|
2522
|
+
Rules[:_char_except] = rule_info("char_except", "char:c &{ c != e }")
|
2523
|
+
Rules[:_charstring_except] = rule_info("charstring_except", "< char_except(e)* > { text }")
|
2524
|
+
Rules[:_documentcontent_except] = rule_info("documentcontent_except", "(inline | !inline char_except(e))+:content {parse_text(content)}")
|
2525
|
+
Rules[:_documentcontent] = rule_info("documentcontent", "(inline | !inline char)+:content {parse_text(content)}")
|
2526
|
+
Rules[:_documentline] = rule_info("documentline", "lh documentcontent:content /$/ { content }")
|
2527
|
+
Rules[:_stylesheets] = rule_info("stylesheets", "< lh - \"stylesheets:\" (!le charstring):stylesheets le > { create_item(:stylesheets, {:stylesheets => stylesheets.split(',').map(&:strip)}, nil, raw:text) }")
|
2528
|
+
Rules[:_title] = rule_info("title", "< lh - \"title:\" (!le charstring):title le > { create_item(:title, {:title => title }, nil, raw:text) }")
|
2529
|
+
Rules[:_lang] = rule_info("lang", "< lh - \"lang:\" (!le charstring):lang le > { create_item(:lang, {:lang => lang }, nil, raw:text) }")
|
2530
|
+
Rules[:_header] = rule_info("header", "(stylesheets | title | lang)")
|
2531
|
+
Rules[:_root] = rule_info("root", "header*:headers block*:blocks eof_comment? eof { headers + blocks }")
|
2532
|
+
# :startdoc:
|
2533
|
+
end
|