slaw 0.6.9 → 0.6.10
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/lib/slaw/version.rb +1 -1
- data/lib/slaw/za/act.treetop +10 -2
- data/lib/slaw/za/act_nodes.rb +20 -3
- data/spec/za/act_spec.rb +135 -13
- 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: 509885e0ab8866ac5793804d77249885c141b2dc
|
4
|
+
data.tar.gz: 20f4d702127bbe215f4710e25587c10f2e07b73e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cca31525dc5bed1c19ff6be61b5a167b6debfe42b59f196c55624d9b4e333f86480b6a8ff0100a43e7ac8086489d4352a7d27ef0bc1745cdc9b9c18b17343216
|
7
|
+
data.tar.gz: 4a8af41380e9a45d3785844347e17fae18de1669ce41ada5989dff2d807dcaefbaeda7f89a0d1b15b8d6aeaf9d98ff2cea2e61799dd45867094a5ed3fceeb31b
|
data/lib/slaw/version.rb
CHANGED
data/lib/slaw/za/act.treetop
CHANGED
@@ -12,13 +12,21 @@ module Slaw
|
|
12
12
|
# major containers
|
13
13
|
|
14
14
|
rule act
|
15
|
-
|
15
|
+
empty_line*
|
16
|
+
preface:preface?
|
17
|
+
preamble:preamble?
|
16
18
|
chapters:chapter*
|
17
19
|
schedules:schedules <Act>
|
18
20
|
end
|
19
21
|
|
22
|
+
rule preface
|
23
|
+
!'PREAMBLE'
|
24
|
+
('PREFACE'i space? eol)?
|
25
|
+
statements:(!'PREAMBLE' naked_statement)* <Preface>
|
26
|
+
end
|
27
|
+
|
20
28
|
rule preamble
|
21
|
-
|
29
|
+
'PREAMBLE'i space? eol
|
22
30
|
statements:naked_statement* <Preamble>
|
23
31
|
end
|
24
32
|
|
data/lib/slaw/za/act_nodes.rb
CHANGED
@@ -12,6 +12,7 @@ module Slaw
|
|
12
12
|
def to_xml(b, idprefix)
|
13
13
|
b.act(contains: "originalVersion") { |b|
|
14
14
|
write_meta(b)
|
15
|
+
write_preface(b)
|
15
16
|
write_preamble(b)
|
16
17
|
write_body(b)
|
17
18
|
}
|
@@ -57,6 +58,10 @@ module Slaw
|
|
57
58
|
}
|
58
59
|
end
|
59
60
|
|
61
|
+
def write_preface(b)
|
62
|
+
preface.to_xml(b)
|
63
|
+
end
|
64
|
+
|
60
65
|
def write_preamble(b)
|
61
66
|
preamble.to_xml(b)
|
62
67
|
end
|
@@ -72,14 +77,26 @@ module Slaw
|
|
72
77
|
end
|
73
78
|
end
|
74
79
|
|
80
|
+
class Preface < Treetop::Runtime::SyntaxNode
|
81
|
+
def to_xml(b)
|
82
|
+
if text_value != ""
|
83
|
+
b.preface { |b|
|
84
|
+
statements.elements.each { |element|
|
85
|
+
for e in element.elements
|
86
|
+
e.to_xml(b, "") if e.is_a? NakedStatement
|
87
|
+
end
|
88
|
+
}
|
89
|
+
}
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
75
94
|
class Preamble < Treetop::Runtime::SyntaxNode
|
76
95
|
def to_xml(b)
|
77
96
|
if text_value != ""
|
78
97
|
b.preamble { |b|
|
79
98
|
statements.elements.each { |e|
|
80
|
-
|
81
|
-
b.p(e.clauses.text_value)
|
82
|
-
end
|
99
|
+
e.to_xml(b, "")
|
83
100
|
}
|
84
101
|
}
|
85
102
|
end
|
data/spec/za/act_spec.rb
CHANGED
@@ -139,7 +139,7 @@ PREVENTION AND SUPPRESSION OF HEALTH NUISANCES
|
|
139
139
|
No owner or occupier of any shop or business premises or vacant land adjoining a shop or business premises shall cause a health nuisance.
|
140
140
|
EOS
|
141
141
|
|
142
|
-
part = node.
|
142
|
+
part = node.chapters.elements[0].parts.elements[0]
|
143
143
|
part.heading.num.should == "1"
|
144
144
|
part.heading.title.should == "PREVENTION AND SUPPRESSION OF HEALTH NUISANCES"
|
145
145
|
|
@@ -412,6 +412,8 @@ EOS
|
|
412
412
|
|
413
413
|
Some content
|
414
414
|
EOS
|
415
|
+
|
416
|
+
today = Time.now.strftime('%Y-%m-%d')
|
415
417
|
to_xml(node, "").should == '<doc name="schedule1">
|
416
418
|
<meta>
|
417
419
|
<identification source="#slaw">
|
@@ -433,7 +435,7 @@ EOS
|
|
433
435
|
<FRBRManifestation>
|
434
436
|
<FRBRthis value="/za/act/1980/01/eng@/schedule1"/>
|
435
437
|
<FRBRuri value="/za/act/1980/01/eng@"/>
|
436
|
-
<FRBRdate date="
|
438
|
+
<FRBRdate date="' + today + '" name="Generation"/>
|
437
439
|
<FRBRauthor href="#slaw" as="#author"/>
|
438
440
|
</FRBRManifestation>
|
439
441
|
</identification>
|
@@ -464,10 +466,10 @@ EOS
|
|
464
466
|
end
|
465
467
|
|
466
468
|
#-------------------------------------------------------------------------------
|
467
|
-
#
|
469
|
+
# Preface
|
468
470
|
|
469
|
-
context '
|
470
|
-
it 'should consider any text at the start to be
|
471
|
+
context 'preface' do
|
472
|
+
it 'should consider any text at the start to be preface' do
|
471
473
|
node = parse :act, <<EOS
|
472
474
|
foo
|
473
475
|
bar
|
@@ -478,7 +480,7 @@ baz
|
|
478
480
|
(1) hello
|
479
481
|
EOS
|
480
482
|
|
481
|
-
node.
|
483
|
+
node.preface.text_value.should == "foo
|
482
484
|
bar
|
483
485
|
(1) stuff
|
484
486
|
(2) more stuff
|
@@ -486,6 +488,99 @@ baz
|
|
486
488
|
"
|
487
489
|
end
|
488
490
|
|
491
|
+
it 'should support an optional preface' do
|
492
|
+
node = parse :act, <<EOS
|
493
|
+
PREFACE
|
494
|
+
foo
|
495
|
+
1. Section
|
496
|
+
(1) hello
|
497
|
+
EOS
|
498
|
+
|
499
|
+
node.preface.text_value.should == "PREFACE\nfoo\n"
|
500
|
+
to_xml(node.preface).should == '<preface>
|
501
|
+
<p>foo</p>
|
502
|
+
</preface>'
|
503
|
+
end
|
504
|
+
|
505
|
+
it 'should support remarks in the preface' do
|
506
|
+
node = parse :act, <<EOS
|
507
|
+
PREFACE
|
508
|
+
|
509
|
+
[[remark]]
|
510
|
+
|
511
|
+
foo
|
512
|
+
|
513
|
+
[[ another remark]]
|
514
|
+
|
515
|
+
1. Section
|
516
|
+
(1) hello
|
517
|
+
EOS
|
518
|
+
|
519
|
+
to_xml(node.preface).should == '<preface>
|
520
|
+
<p>
|
521
|
+
<remark status="editorial">[remark]</remark>
|
522
|
+
</p>
|
523
|
+
<p>foo</p>
|
524
|
+
<p>
|
525
|
+
<remark status="editorial">[ another remark]</remark>
|
526
|
+
</p>
|
527
|
+
</preface>'
|
528
|
+
end
|
529
|
+
|
530
|
+
it 'should support no preface' do
|
531
|
+
node = parse :act, <<EOS
|
532
|
+
1. Section
|
533
|
+
bar
|
534
|
+
EOS
|
535
|
+
|
536
|
+
node.preface.text_value.should == ""
|
537
|
+
end
|
538
|
+
|
539
|
+
it 'should support prefaces and preambles' do
|
540
|
+
node = parse :act, <<EOS
|
541
|
+
this is in the preface
|
542
|
+
|
543
|
+
PREAMBLE
|
544
|
+
|
545
|
+
this is in the preamble
|
546
|
+
|
547
|
+
1. Section
|
548
|
+
(1) hello
|
549
|
+
EOS
|
550
|
+
|
551
|
+
to_xml(node.preface).should == '<preface>
|
552
|
+
<p>this is in the preface</p>
|
553
|
+
</preface>'
|
554
|
+
to_xml(node.preamble).should == '<preamble>
|
555
|
+
<p>this is in the preamble</p>
|
556
|
+
</preamble>'
|
557
|
+
end
|
558
|
+
|
559
|
+
it 'should support prefaces and preambles' do
|
560
|
+
node = parse :act, <<EOS
|
561
|
+
PREFACE
|
562
|
+
this is in the preface
|
563
|
+
|
564
|
+
PREAMBLE
|
565
|
+
this is in the preamble
|
566
|
+
|
567
|
+
1. Section
|
568
|
+
(1) hello
|
569
|
+
EOS
|
570
|
+
|
571
|
+
to_xml(node.preface).should == '<preface>
|
572
|
+
<p>this is in the preface</p>
|
573
|
+
</preface>'
|
574
|
+
to_xml(node.preamble).should == '<preamble>
|
575
|
+
<p>this is in the preamble</p>
|
576
|
+
</preamble>'
|
577
|
+
end
|
578
|
+
end
|
579
|
+
|
580
|
+
#-------------------------------------------------------------------------------
|
581
|
+
# Preamble
|
582
|
+
|
583
|
+
context 'preamble' do
|
489
584
|
it 'should support an optional preamble' do
|
490
585
|
node = parse :act, <<EOS
|
491
586
|
PREAMBLE
|
@@ -494,7 +589,35 @@ foo
|
|
494
589
|
(1) hello
|
495
590
|
EOS
|
496
591
|
|
497
|
-
node.
|
592
|
+
node.preamble.text_value.should == "PREAMBLE\nfoo\n"
|
593
|
+
to_xml(node.preamble).should == '<preamble>
|
594
|
+
<p>foo</p>
|
595
|
+
</preamble>'
|
596
|
+
end
|
597
|
+
|
598
|
+
it 'should support remarks in the preamble' do
|
599
|
+
node = parse :act, <<EOS
|
600
|
+
PREAMBLE
|
601
|
+
|
602
|
+
[[remark]]
|
603
|
+
|
604
|
+
foo
|
605
|
+
|
606
|
+
[[ another remark]]
|
607
|
+
|
608
|
+
1. Section
|
609
|
+
(1) hello
|
610
|
+
EOS
|
611
|
+
|
612
|
+
to_xml(node.preamble).should == '<preamble>
|
613
|
+
<p>
|
614
|
+
<remark status="editorial">[remark]</remark>
|
615
|
+
</p>
|
616
|
+
<p>foo</p>
|
617
|
+
<p>
|
618
|
+
<remark status="editorial">[ another remark]</remark>
|
619
|
+
</p>
|
620
|
+
</preamble>'
|
498
621
|
end
|
499
622
|
|
500
623
|
it 'should support no preamble' do
|
@@ -507,7 +630,6 @@ EOS
|
|
507
630
|
end
|
508
631
|
end
|
509
632
|
|
510
|
-
|
511
633
|
#-------------------------------------------------------------------------------
|
512
634
|
# Sections
|
513
635
|
|
@@ -519,7 +641,7 @@ Section
|
|
519
641
|
1. (1) hello
|
520
642
|
EOS
|
521
643
|
|
522
|
-
section = node.
|
644
|
+
section = node.chapters.elements.first.parts.elements.first.sections.elements.first
|
523
645
|
section.section_title.content.text_value.should == "Section"
|
524
646
|
section.section_title.section_title_prefix.number_letter.text_value.should == "1"
|
525
647
|
end
|
@@ -531,7 +653,7 @@ EOS
|
|
531
653
|
(1) hello
|
532
654
|
EOS
|
533
655
|
|
534
|
-
section = node.
|
656
|
+
section = node.chapters.elements.first.parts.elements.first.sections.elements.first
|
535
657
|
section.section_title.title.should == "Section"
|
536
658
|
section.section_title.num.should == "1"
|
537
659
|
end
|
@@ -545,11 +667,11 @@ EOS
|
|
545
667
|
(2) Another line
|
546
668
|
EOS
|
547
669
|
|
548
|
-
section = node.
|
670
|
+
section = node.chapters.elements.first.parts.elements.first.sections.elements.first
|
549
671
|
section.section_title.title.should == "A section"
|
550
672
|
section.section_title.num.should == "1"
|
551
673
|
|
552
|
-
section = node.
|
674
|
+
section = node.chapters.elements[0].parts.elements.first.sections.elements[1]
|
553
675
|
section.section_title.title.should == "Another section"
|
554
676
|
section.section_title.num.should == "2"
|
555
677
|
end
|
@@ -561,7 +683,7 @@ EOS
|
|
561
683
|
(2) Without limiting generality, stuff.
|
562
684
|
EOS
|
563
685
|
|
564
|
-
section = node.
|
686
|
+
section = node.chapters.elements.first.parts.elements.first.sections.elements.first
|
565
687
|
section.section_title.title.should == ""
|
566
688
|
section.section_title.num.should == "10"
|
567
689
|
section.subsections.elements[0].statement.num.should == "(1)"
|
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.10
|
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-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|