slaw 0.6.7 → 0.6.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/slaw/parse/blocklists.rb +17 -5
- data/lib/slaw/version.rb +1 -1
- data/lib/slaw/za/act.treetop +0 -2
- data/lib/slaw/za/act_nodes.rb +0 -5
- data/spec/parse/builder_spec.rb +92 -0
- data/spec/za/act_spec.rb +0 -30
- 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: 8eeb58782b2816f1d5a79ff2ca9c58a01b31ae98
|
4
|
+
data.tar.gz: 263785f7925b2f7634b32823e421748e75bc7c71
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6faaf2748a1b641f8e7f375d08ef070a36d1e3a1d1c25e3ecda4af0e18e5d7f488f831bf3859857f95c95725605c4d9127bfb7ff19c5e394dfde002dc309bd7a
|
7
|
+
data.tar.gz: fd534bb5d9b6d8fee1d004c30c0657df1ca2ab6625a938c0a1ad6aad03c22bd399c9b2e3dbb53cddbd06be9a834990b18f050bc71a2393d16117d88cb44928d2
|
@@ -141,10 +141,16 @@ module Slaw
|
|
141
141
|
prev_format
|
142
142
|
when /^\([ivx]+/
|
143
143
|
NumberingFormat.i
|
144
|
-
when /^\([
|
144
|
+
when /^\([IVX]+/
|
145
|
+
NumberingFormat.I
|
146
|
+
when /^\([a-z]{2}/
|
145
147
|
NumberingFormat.aa
|
146
|
-
when /^\([
|
148
|
+
when /^\([A-Z]{2}/
|
149
|
+
NumberingFormat.AA
|
150
|
+
when /^\([a-z]+/
|
147
151
|
NumberingFormat.a
|
152
|
+
when /^\([A-Z]+/
|
153
|
+
NumberingFormat.A
|
148
154
|
when /^\d+(\.\d+)+$/
|
149
155
|
NumberingFormat.new(:'i.i', item.num.count('.'))
|
150
156
|
else
|
@@ -175,13 +181,19 @@ module Slaw
|
|
175
181
|
end
|
176
182
|
|
177
183
|
@@a = NumberingFormat.new(:a, 0)
|
178
|
-
@@
|
179
|
-
@@
|
180
|
-
@@
|
184
|
+
@@A = NumberingFormat.new(:a, 1)
|
185
|
+
@@i = NumberingFormat.new(:i, 2)
|
186
|
+
@@I = NumberingFormat.new(:I, 3)
|
187
|
+
@@aa = NumberingFormat.new(:aa, 4)
|
188
|
+
@@AA = NumberingFormat.new(:AA, 5)
|
189
|
+
@@unknown = NumberingFormat.new(:unknown, 9)
|
181
190
|
|
182
191
|
def self.a; @@a; end
|
192
|
+
def self.A; @@A; end
|
183
193
|
def self.i; @@i; end
|
194
|
+
def self.I; @@I; end
|
184
195
|
def self.aa; @@aa; end
|
196
|
+
def self.AA; @@AA; end
|
185
197
|
def self.unknown; @@unknown; end
|
186
198
|
end
|
187
199
|
end
|
data/lib/slaw/version.rb
CHANGED
data/lib/slaw/za/act.treetop
CHANGED
@@ -88,8 +88,6 @@ module Slaw
|
|
88
88
|
|
89
89
|
rule section_title_content
|
90
90
|
space !numbered_statement_prefix content eol
|
91
|
-
# if a section title ends in a non-character or it's really long, it's probably section content
|
92
|
-
!{ |s| s[2].text_value[-1] =~ /[^a-zA-z]/ or s[2].text_value.length > 100 }
|
93
91
|
end
|
94
92
|
|
95
93
|
rule schedule_heading
|
data/lib/slaw/za/act_nodes.rb
CHANGED
@@ -22,11 +22,6 @@ module Slaw
|
|
22
22
|
b.meta { |b|
|
23
23
|
write_identification(b)
|
24
24
|
|
25
|
-
b.publication(date: '1980-01-01',
|
26
|
-
name: 'Publication Name',
|
27
|
-
number: 'XXXX',
|
28
|
-
showAs: 'Publication Name')
|
29
|
-
|
30
25
|
b.references(source: "#this") {
|
31
26
|
b.TLCOrganization(id: 'slaw', href: 'https://github.com/longhotsummer/slaw', showAs: "Slaw")
|
32
27
|
b.TLCOrganization(id: 'council', href: '/ontology/organization/za/council', showAs: "Council")
|
data/spec/parse/builder_spec.rb
CHANGED
@@ -300,6 +300,98 @@ XML
|
|
300
300
|
)
|
301
301
|
end
|
302
302
|
|
303
|
+
# -------------------------------------------------------------------------
|
304
|
+
it 'should handle (I) correctly' do
|
305
|
+
doc = xml2doc(subsection(<<XML
|
306
|
+
<blockList id="section-28.3.list2">
|
307
|
+
<item id="section-28.3.list2.g">
|
308
|
+
<num>(g)</num>
|
309
|
+
<p>all memorial work up to 150 mm in thickness must be securely attached to the base;</p>
|
310
|
+
</item>
|
311
|
+
<item id="section-28.3.list2.h">
|
312
|
+
<num>(h)</num>
|
313
|
+
<p>all the components of memorial work must be completed before being brought into a cemetery;</p>
|
314
|
+
</item>
|
315
|
+
<item id="section-28.3.list2.i">
|
316
|
+
<num>(i)</num>
|
317
|
+
<p>item i</p>
|
318
|
+
</item>
|
319
|
+
<item id="section-28.3.list2.I">
|
320
|
+
<num>(I)</num>
|
321
|
+
<p>a subitem</p>
|
322
|
+
</item>
|
323
|
+
<item id="section-28.3.list2.II">
|
324
|
+
<num>(II)</num>
|
325
|
+
<p>another subitem</p>
|
326
|
+
</item>
|
327
|
+
<item id="section-28.3.list2.j">
|
328
|
+
<num>(j)</num>
|
329
|
+
<p>in all cases where memorial work rests on a base -</p>
|
330
|
+
</item>
|
331
|
+
<item id="section-28.3.list2.i">
|
332
|
+
<num>(i)</num>
|
333
|
+
<p>such memorial work must have a foundation;</p>
|
334
|
+
</item>
|
335
|
+
<item id="section-28.3.list2.ii">
|
336
|
+
<num>(ii)</num>
|
337
|
+
<p>such memorial work must be set with cement mortar;</p>
|
338
|
+
</item>
|
339
|
+
<item id="section-28.3.list2.iii">
|
340
|
+
<num>(iii)</num>
|
341
|
+
<p>the bottom base of a single memorial work must not be less than 900mm long 220 mm wide x 250 mm thick and that of a double memorial work not less than 2 286 mm long x 200 mm wide x 250 mm thick; and</p>
|
342
|
+
</item>
|
343
|
+
</blockList>
|
344
|
+
XML
|
345
|
+
))
|
346
|
+
|
347
|
+
subject.nest_blocklists(doc)
|
348
|
+
doc.to_s.should == subsection(<<XML
|
349
|
+
<blockList id="section-28.3.list2">
|
350
|
+
<item id="section-28.3.list2.g">
|
351
|
+
<num>(g)</num>
|
352
|
+
<p>all memorial work up to 150 mm in thickness must be securely attached to the base;</p>
|
353
|
+
</item>
|
354
|
+
<item id="section-28.3.list2.h">
|
355
|
+
<num>(h)</num>
|
356
|
+
<p>all the components of memorial work must be completed before being brought into a cemetery;</p>
|
357
|
+
</item>
|
358
|
+
<item id="section-28.3.list2.i">
|
359
|
+
<num>(i)</num>
|
360
|
+
<blockList id="section-28.3.list2.i.list0">
|
361
|
+
<listIntroduction>item i</listIntroduction>
|
362
|
+
<item id="section-28.3.list2.i.list0.I">
|
363
|
+
<num>(I)</num>
|
364
|
+
<p>a subitem</p>
|
365
|
+
</item>
|
366
|
+
<item id="section-28.3.list2.i.list0.II">
|
367
|
+
<num>(II)</num>
|
368
|
+
<p>another subitem</p>
|
369
|
+
</item>
|
370
|
+
</blockList>
|
371
|
+
</item>
|
372
|
+
<item id="section-28.3.list2.j">
|
373
|
+
<num>(j)</num>
|
374
|
+
<blockList id="section-28.3.list2.j.list1">
|
375
|
+
<listIntroduction>in all cases where memorial work rests on a base -</listIntroduction>
|
376
|
+
<item id="section-28.3.list2.j.list1.i">
|
377
|
+
<num>(i)</num>
|
378
|
+
<p>such memorial work must have a foundation;</p>
|
379
|
+
</item>
|
380
|
+
<item id="section-28.3.list2.j.list1.ii">
|
381
|
+
<num>(ii)</num>
|
382
|
+
<p>such memorial work must be set with cement mortar;</p>
|
383
|
+
</item>
|
384
|
+
<item id="section-28.3.list2.j.list1.iii">
|
385
|
+
<num>(iii)</num>
|
386
|
+
<p>the bottom base of a single memorial work must not be less than 900mm long 220 mm wide x 250 mm thick and that of a double memorial work not less than 2 286 mm long x 200 mm wide x 250 mm thick; and</p>
|
387
|
+
</item>
|
388
|
+
</blockList>
|
389
|
+
</item>
|
390
|
+
</blockList>
|
391
|
+
XML
|
392
|
+
)
|
393
|
+
end
|
394
|
+
|
303
395
|
# -------------------------------------------------------------------------
|
304
396
|
|
305
397
|
it 'should handle deeply nested lists' do
|
data/spec/za/act_spec.rb
CHANGED
@@ -505,23 +505,6 @@ EOS
|
|
505
505
|
section.section_title.num.should == "2"
|
506
506
|
end
|
507
507
|
|
508
|
-
it 'should handle sections without titles' do
|
509
|
-
subject.parser.options = {section_number_after_title: false}
|
510
|
-
node = parse :act, <<EOS
|
511
|
-
1. No owner or occupier of any shop or business premises or vacant land, blah blah
|
512
|
-
2. Notwithstanding the provision of any other By-law or legislation no person shall—
|
513
|
-
EOS
|
514
|
-
|
515
|
-
section = node.elements[1].elements[0].elements[1].elements[0].elements[1].elements[0]
|
516
|
-
section.section_title.title.should == "No owner or occupier of any shop or business premises or vacant land, blah blah"
|
517
|
-
section.section_title.num.should == "1"
|
518
|
-
|
519
|
-
section = node.elements[1].elements[0].elements[1].elements[0].elements[1].elements[1]
|
520
|
-
section.section_title.title.should == ""
|
521
|
-
section.section_title.num.should == "2"
|
522
|
-
section.subsections.elements[0].statement.clauses.text_value.should == "Notwithstanding the provision of any other By-law or legislation no person shall—"
|
523
|
-
end
|
524
|
-
|
525
508
|
it 'should handle sections without titles and with subsections' do
|
526
509
|
subject.parser.options = {section_number_after_title: false}
|
527
510
|
node = parse :act, <<EOS
|
@@ -535,19 +518,6 @@ EOS
|
|
535
518
|
section.subsections.elements[0].statement.num.should == "(1)"
|
536
519
|
section.subsections.elements[0].statement.content.text_value.should == "Transporters must remove medical waste."
|
537
520
|
end
|
538
|
-
|
539
|
-
it 'should realise complex section titles are actually section content' do
|
540
|
-
subject.parser.options = {section_number_after_title: false}
|
541
|
-
node = parse :act, <<EOS
|
542
|
-
10. The owner of any premises which is let or sublet to more than one tenant, shall maintain at all times in a clean and sanitary condition every part of such premises as may be used in common by more than one tenant.
|
543
|
-
11. No person shall keep, cause or suffer to be kept any factory or trade premises so as to cause or give rise to smells or effluvia that constitute a health nuisance.
|
544
|
-
EOS
|
545
|
-
|
546
|
-
section = node.elements[1].elements[0].elements[1].elements[0].elements[1].elements[0]
|
547
|
-
section.section_title.title.should == ""
|
548
|
-
section.section_title.num.should == "10"
|
549
|
-
section.subsections.elements[0].statement.clauses.text_value.should == "The owner of any premises which is let or sublet to more than one tenant, shall maintain at all times in a clean and sanitary condition every part of such premises as may be used in common by more than one tenant."
|
550
|
-
end
|
551
521
|
end
|
552
522
|
|
553
523
|
#-------------------------------------------------------------------------------
|
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: 0.6.
|
4
|
+
version: 0.6.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Greg Kempe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|