slaw 1.0.0.alpha.1 → 1.0.0.alpha.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/slaw/grammars/pl/act.treetop +32 -34
- data/lib/slaw/grammars/pl/act_nodes.rb +17 -18
- data/lib/slaw/parse/cleanser.rb +2 -1
- data/lib/slaw/version.rb +1 -1
- data/spec/pl/act_block_spec.rb +115 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 16495306529339f9897fda3092e402d15a8df8ef
|
4
|
+
data.tar.gz: e3536947fd47ad3844fab512041e2b08bf615433
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 933bfcd5b5f762769d233fe5cb9786eb5f2d5b4e7570cd563ee9d64e787b0a22ad4db60b099d6c334559b61b24d48627b9368757cfb6e3ba169d429bb1884b7a
|
7
|
+
data.tar.gz: ae80c3eb1c3d2b7d9b46ec3eea15c294f24c1f58569546548133cc609977f59c0314ef4e0cc7ec8538ebc7d67d1a7b8c2cc2f9cbe8ca4ae919594a5b03a84dd1
|
@@ -37,62 +37,72 @@ module Slaw
|
|
37
37
|
end
|
38
38
|
|
39
39
|
rule body
|
40
|
-
children:(division / subdivision / chapter / article / section / paragraph / point / litera / block_paragraphs)+ <Body>
|
40
|
+
children:(division / subdivision / chapter / article / section / paragraph / point / litera / indents / block_paragraphs)+ <Body>
|
41
41
|
end
|
42
42
|
|
43
43
|
rule division
|
44
44
|
heading:division_heading
|
45
|
-
children:(subdivision / chapter / article / section / paragraph / point / litera / block_paragraphs)*
|
45
|
+
children:(subdivision / chapter / article / section / paragraph / point / litera / indents / block_paragraphs)*
|
46
46
|
<Division>
|
47
47
|
end
|
48
48
|
|
49
49
|
rule subdivision
|
50
50
|
heading:subdivision_heading
|
51
|
-
children:(chapter / article / section / paragraph / point / litera / block_paragraphs)*
|
51
|
+
children:(chapter / article / section / paragraph / point / litera / indents / block_paragraphs)*
|
52
52
|
<Subdivision>
|
53
53
|
end
|
54
54
|
|
55
55
|
rule chapter
|
56
56
|
heading:chapter_heading
|
57
|
-
children:(article / section / paragraph / point / litera / block_paragraphs)*
|
57
|
+
children:(article / section / paragraph / point / litera / indents / block_paragraphs)*
|
58
58
|
<Chapter>
|
59
59
|
end
|
60
60
|
|
61
61
|
rule article
|
62
62
|
# Art. 55. 1. something
|
63
63
|
article_prefix whitespace
|
64
|
-
intro:block_element?
|
65
|
-
children:(section / paragraph / point / litera / block_paragraphs)* <Article>
|
64
|
+
intro:block_element?
|
65
|
+
children:(section / paragraph / point / litera / indents / block_paragraphs)* <Article>
|
66
66
|
end
|
67
67
|
|
68
68
|
rule section
|
69
69
|
# § 55. foo
|
70
70
|
section_prefix whitespace
|
71
|
-
intro:block_element?
|
72
|
-
children:(paragraph / point / litera / block_paragraphs)* <Section>
|
71
|
+
intro:block_element?
|
72
|
+
children:(paragraph / point / litera / indents / block_paragraphs)* <Section>
|
73
73
|
end
|
74
74
|
|
75
75
|
rule paragraph
|
76
76
|
# ustęp:
|
77
77
|
# 34. ...
|
78
|
-
paragraph_prefix
|
79
|
-
intro:block_element?
|
80
|
-
children:(point / litera / block_paragraphs)* <Paragraph>
|
78
|
+
paragraph_prefix whitespace
|
79
|
+
intro:block_element?
|
80
|
+
children:(point / litera / indents / block_paragraphs)* <Paragraph>
|
81
81
|
end
|
82
82
|
|
83
83
|
rule point
|
84
84
|
# 12) aoeuaoeu
|
85
85
|
# 12a) aoeuaoeu
|
86
86
|
point_prefix whitespace
|
87
|
-
intro:block_element?
|
88
|
-
children:(litera / block_paragraphs)* <Point>
|
87
|
+
intro:block_element?
|
88
|
+
children:(litera / indents / block_paragraphs)* <Point>
|
89
89
|
end
|
90
90
|
|
91
91
|
rule litera
|
92
92
|
# a) aoeuaoeu
|
93
93
|
litera_prefix whitespace
|
94
|
-
intro:block_element?
|
95
|
-
children:block_paragraphs* <Litera>
|
94
|
+
intro:block_element?
|
95
|
+
children:(indents / block_paragraphs)* <Litera>
|
96
|
+
end
|
97
|
+
|
98
|
+
rule indents
|
99
|
+
# - foo
|
100
|
+
# - bar
|
101
|
+
children:indent_item+ <Indents>
|
102
|
+
end
|
103
|
+
|
104
|
+
rule indent_item
|
105
|
+
indent_prefix item_content:inline_block_element? eol? <IndentItem>
|
96
106
|
end
|
97
107
|
|
98
108
|
##########
|
@@ -155,29 +165,13 @@ module Slaw
|
|
155
165
|
end
|
156
166
|
|
157
167
|
rule block_element
|
158
|
-
|
159
|
-
(table / naked_statement)
|
168
|
+
table / naked_statement
|
160
169
|
end
|
161
170
|
|
162
171
|
# Block elements that don't have to appear at the start of a line.
|
163
172
|
# ie. we don't need to guard against the start of a chapter, section, etc.
|
164
173
|
rule inline_block_element
|
165
|
-
|
166
|
-
(table / inline_statement)
|
167
|
-
end
|
168
|
-
|
169
|
-
rule blocklist
|
170
|
-
blocklist_item+ <Blocklist>
|
171
|
-
end
|
172
|
-
|
173
|
-
rule blocklist_item
|
174
|
-
# TODO: this whitespace should probably be space, to allow empty blocklist items followed by plain text
|
175
|
-
space? blocklist_item_prefix whitespace item_content:(!blocklist_item_prefix clauses:clauses? eol)? eol?
|
176
|
-
<BlocklistItem>
|
177
|
-
end
|
178
|
-
|
179
|
-
rule blocklist_item_prefix
|
180
|
-
('(' letter_ordinal ')') / dotted_number_3
|
174
|
+
table / inline_statement
|
181
175
|
end
|
182
176
|
|
183
177
|
##########
|
@@ -187,7 +181,7 @@ module Slaw
|
|
187
181
|
# and is ignored. This allows escaping of section headings, etc.
|
188
182
|
|
189
183
|
rule naked_statement
|
190
|
-
space? !(division_heading / subdivision_heading / chapter_heading / article_prefix / section_prefix / schedule_title / paragraph_prefix / point_prefix / litera_prefix) '\\'? clauses eol
|
184
|
+
space? !(division_heading / subdivision_heading / chapter_heading / article_prefix / section_prefix / schedule_title / paragraph_prefix / point_prefix / litera_prefix / indent_prefix) '\\'? clauses eol
|
191
185
|
<NakedStatement>
|
192
186
|
end
|
193
187
|
|
@@ -235,6 +229,10 @@ module Slaw
|
|
235
229
|
letters:letter+ ')'
|
236
230
|
end
|
237
231
|
|
232
|
+
rule indent_prefix
|
233
|
+
'-' space
|
234
|
+
end
|
235
|
+
|
238
236
|
include Slaw::Grammars::Inlines
|
239
237
|
include Slaw::Grammars::Tables
|
240
238
|
include Slaw::Grammars::Schedules
|
@@ -339,31 +339,30 @@ module Slaw
|
|
339
339
|
end
|
340
340
|
end
|
341
341
|
|
342
|
-
class
|
343
|
-
# Render a
|
344
|
-
|
345
|
-
|
346
|
-
id = idprefix + "list#{i}"
|
342
|
+
class Indents < Treetop::Runtime::SyntaxNode
|
343
|
+
# Render a list of indent items.
|
344
|
+
def to_xml(b, idprefix, i=0)
|
345
|
+
id = idprefix + "list-#{i}"
|
347
346
|
idprefix = id + '.'
|
348
347
|
|
349
|
-
b.
|
350
|
-
|
351
|
-
|
352
|
-
elements.each { |e| e.to_xml(b, idprefix) }
|
348
|
+
b.list(id: id) { |b|
|
349
|
+
children.elements.each_with_index { |e, i| e.to_xml(b, idprefix, i) }
|
353
350
|
}
|
354
351
|
end
|
355
352
|
end
|
356
353
|
|
357
|
-
class
|
358
|
-
def
|
359
|
-
|
360
|
-
|
354
|
+
class IndentItem < Treetop::Runtime::SyntaxNode
|
355
|
+
def to_xml(b, idprefix, i)
|
356
|
+
id = idprefix + "indent-#{i}"
|
357
|
+
idprefix = id + '.'
|
361
358
|
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
359
|
+
b.indent(id: id) { |b|
|
360
|
+
b.content { |b|
|
361
|
+
if not item_content.empty?
|
362
|
+
item_content.to_xml(b, idprefix)
|
363
|
+
else
|
364
|
+
b.p
|
365
|
+
end
|
367
366
|
}
|
368
367
|
}
|
369
368
|
end
|
data/lib/slaw/parse/cleanser.rb
CHANGED
data/lib/slaw/version.rb
CHANGED
data/spec/pl/act_block_spec.rb
CHANGED
@@ -446,4 +446,119 @@ EOS
|
|
446
446
|
end
|
447
447
|
end
|
448
448
|
|
449
|
+
#-------------------------------------------------------------------------------
|
450
|
+
# Litera
|
451
|
+
|
452
|
+
describe 'litera' do
|
453
|
+
|
454
|
+
it 'should handle litera with indents' do
|
455
|
+
node = parse :litera, <<EOS
|
456
|
+
b) liczby:
|
457
|
+
- tworzonych lokali wchodzących w skład mieszkaniowego zasobu gminy,
|
458
|
+
- mieszkań chronionych,
|
459
|
+
- lokali mieszkalnych powstających z udziałem gminy albo związku międzygminnego w wyniku realizacji przedsięwzięć, o których mowa w art. 5 ust. 1 i art. 5a ust. 1 ustawy,
|
460
|
+
- tymczasowych pomieszczeń,
|
461
|
+
- miejsc w noclegowniach, schroniskach dla bezdomnych i ogrzewalniach,
|
462
|
+
EOS
|
463
|
+
to_xml(node, 'prefix.', 0).should == '<list id="prefix.list-b">
|
464
|
+
<num>b)</num>
|
465
|
+
<intro>
|
466
|
+
<p>liczby:</p>
|
467
|
+
</intro>
|
468
|
+
<list id="prefix.list-b.list-0">
|
469
|
+
<indent id="prefix.list-b.list-0.indent-0">
|
470
|
+
<content>
|
471
|
+
<p>tworzonych lokali wchodzących w skład mieszkaniowego zasobu gminy,</p>
|
472
|
+
</content>
|
473
|
+
</indent>
|
474
|
+
<indent id="prefix.list-b.list-0.indent-1">
|
475
|
+
<content>
|
476
|
+
<p>mieszkań chronionych,</p>
|
477
|
+
</content>
|
478
|
+
</indent>
|
479
|
+
<indent id="prefix.list-b.list-0.indent-2">
|
480
|
+
<content>
|
481
|
+
<p>lokali mieszkalnych powstających z udziałem gminy albo związku międzygminnego w wyniku realizacji przedsięwzięć, o których mowa w art. 5 ust. 1 i art. 5a ust. 1 ustawy,</p>
|
482
|
+
</content>
|
483
|
+
</indent>
|
484
|
+
<indent id="prefix.list-b.list-0.indent-3">
|
485
|
+
<content>
|
486
|
+
<p>tymczasowych pomieszczeń,</p>
|
487
|
+
</content>
|
488
|
+
</indent>
|
489
|
+
<indent id="prefix.list-b.list-0.indent-4">
|
490
|
+
<content>
|
491
|
+
<p>miejsc w noclegowniach, schroniskach dla bezdomnych i ogrzewalniach,</p>
|
492
|
+
</content>
|
493
|
+
</indent>
|
494
|
+
</list>
|
495
|
+
</list>'
|
496
|
+
end
|
497
|
+
end
|
498
|
+
|
499
|
+
#-------------------------------------------------------------------------------
|
500
|
+
# Indent
|
501
|
+
|
502
|
+
describe 'indent' do
|
503
|
+
it 'should handle basic indent' do
|
504
|
+
node = parse :indents, <<EOS
|
505
|
+
- tworzonych lokali wchodzących w skład mieszkaniowego zasobu gminy,
|
506
|
+
EOS
|
507
|
+
|
508
|
+
to_xml(node, 'prefix.', 0).should == '<list id="prefix.list-0">
|
509
|
+
<indent id="prefix.list-0.indent-0">
|
510
|
+
<content>
|
511
|
+
<p>tworzonych lokali wchodzących w skład mieszkaniowego zasobu gminy,</p>
|
512
|
+
</content>
|
513
|
+
</indent>
|
514
|
+
</list>'
|
515
|
+
end
|
516
|
+
|
517
|
+
it 'should handle empty indents' do
|
518
|
+
node = parse :indents, <<EOS
|
519
|
+
-
|
520
|
+
-
|
521
|
+
EOS
|
522
|
+
|
523
|
+
to_xml(node, 'prefix.', 0).should == '<list id="prefix.list-0">
|
524
|
+
<indent id="prefix.list-0.indent-0">
|
525
|
+
<content>
|
526
|
+
<p/>
|
527
|
+
</content>
|
528
|
+
</indent>
|
529
|
+
<indent id="prefix.list-0.indent-1">
|
530
|
+
<content>
|
531
|
+
<p/>
|
532
|
+
</content>
|
533
|
+
</indent>
|
534
|
+
</list>'
|
535
|
+
end
|
536
|
+
|
537
|
+
it 'should handle multiple indent items' do
|
538
|
+
node = parse :indents, <<EOS
|
539
|
+
- tworzonych lokali wchodzących w skład mieszkaniowego zasobu gminy,
|
540
|
+
- mieszkań chronionych,
|
541
|
+
- lokali mieszkalnych powstających z udziałem gminy albo związku międzygminnego w wyniku realizacji przedsięwzięć, o których mowa w art. 5 ust. 1 i art. 5a ust. 1 ustawy,
|
542
|
+
EOS
|
543
|
+
|
544
|
+
to_xml(node, 'prefix.', 0).should == '<list id="prefix.list-0">
|
545
|
+
<indent id="prefix.list-0.indent-0">
|
546
|
+
<content>
|
547
|
+
<p>tworzonych lokali wchodzących w skład mieszkaniowego zasobu gminy,</p>
|
548
|
+
</content>
|
549
|
+
</indent>
|
550
|
+
<indent id="prefix.list-0.indent-1">
|
551
|
+
<content>
|
552
|
+
<p>mieszkań chronionych,</p>
|
553
|
+
</content>
|
554
|
+
</indent>
|
555
|
+
<indent id="prefix.list-0.indent-2">
|
556
|
+
<content>
|
557
|
+
<p>lokali mieszkalnych powstających z udziałem gminy albo związku międzygminnego w wyniku realizacji przedsięwzięć, o których mowa w art. 5 ust. 1 i art. 5a ust. 1 ustawy,</p>
|
558
|
+
</content>
|
559
|
+
</indent>
|
560
|
+
</list>'
|
561
|
+
end
|
562
|
+
end
|
563
|
+
|
449
564
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slaw
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.alpha.
|
4
|
+
version: 1.0.0.alpha.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Greg Kempe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-05-
|
11
|
+
date: 2018-05-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|