slaw 0.6.4 → 0.6.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c18d054d1825b20bfc2dcf608a445e2d4b3a0c6a
4
- data.tar.gz: 73cc58395c8f2d8dda8117d592f7c9faf48e57b2
3
+ metadata.gz: 0ba2a75b8de3436b8af7bd0267176fb82a1476a9
4
+ data.tar.gz: e292f43cb16ce86cd9c599f0f25410216ae1e33c
5
5
  SHA512:
6
- metadata.gz: b91f7c896b92dcd42cf81bb23118921db55653695c9f65093a917f9e3d0fc3b849f11f9ce1e6b494cd85df5ac8ba84d871bd6c472c001fffa3f4c41c1fecdcbd
7
- data.tar.gz: 317aba38148c36f8753009ff417e8bca9550e101a0ef4e5f18e923170ddf4a7f121b312eadf98b9b8b33d626f703c7b65696e0bae5cad4f3adbc6efa03b1ce2e
6
+ metadata.gz: a0f6476e7912dd560d78b59495dc25bdec405c19f91d73dfa33a2a2270f25aa48da7d6545292acf4c9f23e17d66fc0c3e4806f2412b223b5c0415442b76e65c6
7
+ data.tar.gz: e4ac81e36adb6fe221b3eedcb4f2e761fc01dd0dbd92b7d293c060df50fbbb21984f5af747efbb12f715cd4d2dd25f5ce03e330366b0a39af8a63812446f049b
data/lib/slaw/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Slaw
2
- VERSION = "0.6.4"
2
+ VERSION = "0.6.5"
3
3
  end
@@ -38,7 +38,7 @@ module Slaw
38
38
  end
39
39
 
40
40
  rule subsection
41
- statement:(numbered_statement / table / naked_statement)
41
+ statement:(numbered_statement / table / remark / naked_statement)
42
42
  blocklist:blocklist? <Subsection>
43
43
  end
44
44
 
@@ -139,6 +139,12 @@ module Slaw
139
139
  space? '|}'
140
140
  end
141
141
 
142
+ rule remark
143
+ # TODO: support (Section 3.5 amended by ... )
144
+ space? '[' content:[^\n\]]+ ']' eol
145
+ <Remark>
146
+ end
147
+
142
148
  ##########
143
149
  # prefixes
144
150
 
@@ -289,6 +289,12 @@ module Slaw
289
289
  end
290
290
  end
291
291
 
292
+ class Remark < Treetop::Runtime::SyntaxNode
293
+ def to_xml(b, idprefix)
294
+ b.p { |b| b.remark('[' + content.text_value + ']', status: 'editorial') }
295
+ end
296
+ end
297
+
292
298
  class Blocklist < Treetop::Runtime::SyntaxNode
293
299
  # Render a block list to xml. If a block is given,
294
300
  # yield to it a builder to insert a listIntroduction node
data/spec/za/act_spec.rb CHANGED
@@ -21,9 +21,9 @@ describe Slaw::ActGenerator do
21
21
  end
22
22
  end
23
23
 
24
- def to_xml(node, *args)
24
+ def to_xml(node, indent=nil, *args)
25
25
  s = ""
26
- b = Builder::XmlMarkup.new(target: s)
26
+ b = Builder::XmlMarkup.new(target: s, indent: indent)
27
27
  node.to_xml(b, *args)
28
28
  s
29
29
  end
@@ -195,6 +195,50 @@ EOS
195
195
  end
196
196
  end
197
197
 
198
+ #-------------------------------------------------------------------------------
199
+ # Remarks
200
+
201
+ describe 'remark' do
202
+ it 'should handle basic remarks' do
203
+ should_parse :remark, <<EOS
204
+ [Section 2 amended by Act 23 of 2004]
205
+ EOS
206
+ end
207
+
208
+ it 'should handle a remark' do
209
+ node = parse :remark, <<EOS
210
+ [Section 2 amended by Act 23 of 2004]
211
+ EOS
212
+ node.content.text_value.should == "Section 2 amended by Act 23 of 2004"
213
+ end
214
+
215
+ it 'should handle a remark in a section' do
216
+ node = parse :section, <<EOS
217
+ 1. Section title
218
+ Some text is a long line.
219
+
220
+ [Section 1 amended by Act 23 of 2004]
221
+ EOS
222
+ to_xml(node, 2).should == '<section id="section-1">
223
+ <num>1.</num>
224
+ <heading>Section title</heading>
225
+ <subsection id="section-1.subsection-0">
226
+ <content>
227
+ <p>Some text is a long line.</p>
228
+ </content>
229
+ </subsection>
230
+ <subsection id="section-1.subsection-1">
231
+ <content>
232
+ <p>
233
+ <remark status="editorial">[Section 1 amended by Act 23 of 2004]</remark>
234
+ </p>
235
+ </content>
236
+ </subsection>
237
+ </section>
238
+ '
239
+ end
240
+ end
241
+
198
242
  #-------------------------------------------------------------------------------
199
243
  # Numbered statements
200
244
 
@@ -399,13 +443,8 @@ Baz
399
443
  Boom
400
444
  EOS
401
445
 
402
- s = ""
403
- builder = ::Builder::XmlMarkup.new(indent: 2, target: s)
404
-
405
- node.to_xml(builder)
406
-
446
+ s = to_xml(node, 2)
407
447
  today = Time.now.strftime('%Y-%m-%d')
408
-
409
448
  s.should == <<EOS
410
449
  <components>
411
450
  <component id="component-1">
@@ -497,13 +536,8 @@ Other than as is set out hereinbelow, no signs other than locality bound signs,
497
536
  2. Bar
498
537
  EOS
499
538
 
500
- s = ""
501
- builder = ::Builder::XmlMarkup.new(indent: 2, target: s)
502
-
503
- node.to_xml(builder)
504
-
539
+ s = to_xml(node, 2)
505
540
  today = Time.now.strftime('%Y-%m-%d')
506
-
507
541
  s.should == <<EOS
508
542
  <components>
509
543
  <component id="component-1">
@@ -562,7 +596,7 @@ EOS
562
596
  EOS
563
597
 
564
598
  node.text_value.should == "{|\n| r1c1\n| r1c2\n|-\n| r2c1\n| r2c2\n|}\n"
565
- to_xml(node, "prefix.").should == '<table id="prefix.table0"><tr><td><p>r1c1</p></td>
599
+ to_xml(node, nil, "prefix.").should == '<table id="prefix.table0"><tr><td><p>r1c1</p></td>
566
600
  <td><p>r1c2</p></td></tr>
567
601
  <tr><td><p>r2c1</p></td>
568
602
  <td><p>r2c2</p></td></tr></table>'
@@ -605,8 +639,9 @@ Heres a table:
605
639
  |}
606
640
  EOS
607
641
 
608
- xml = to_xml(node, "")
609
- xml.should == '<doc name="schedule1"><meta><identification source="#slaw"><FRBRWork><FRBRthis value="/za/act/1980/01/schedule1"/><FRBRuri value="/za/act/1980/01"/><FRBRalias value="Schedule 1"/><FRBRdate date="1980-01-01" name="Generation"/><FRBRauthor href="#council" as="#author"/><FRBRcountry value="za"/></FRBRWork><FRBRExpression><FRBRthis value="/za/act/1980/01/eng@/schedule1"/><FRBRuri value="/za/act/1980/01/eng@"/><FRBRdate date="1980-01-01" name="Generation"/><FRBRauthor href="#council" as="#author"/><FRBRlanguage language="eng"/></FRBRExpression><FRBRManifestation><FRBRthis value="/za/act/1980/01/eng@/schedule1"/><FRBRuri value="/za/act/1980/01/eng@"/><FRBRdate date="2015-05-13" name="Generation"/><FRBRauthor href="#slaw" as="#author"/></FRBRManifestation></identification></meta><mainBody><article id="schedule-1"><content><p>Heres a table:</p><table id="schedule-1.table0"><tr><td><p>r1c1</p></td>
642
+ xml = to_xml(node, nil, "")
643
+ today = Time.now.strftime('%Y-%m-%d')
644
+ xml.should == '<doc name="schedule1"><meta><identification source="#slaw"><FRBRWork><FRBRthis value="/za/act/1980/01/schedule1"/><FRBRuri value="/za/act/1980/01"/><FRBRalias value="Schedule 1"/><FRBRdate date="1980-01-01" name="Generation"/><FRBRauthor href="#council" as="#author"/><FRBRcountry value="za"/></FRBRWork><FRBRExpression><FRBRthis value="/za/act/1980/01/eng@/schedule1"/><FRBRuri value="/za/act/1980/01/eng@"/><FRBRdate date="1980-01-01" name="Generation"/><FRBRauthor href="#council" as="#author"/><FRBRlanguage language="eng"/></FRBRExpression><FRBRManifestation><FRBRthis value="/za/act/1980/01/eng@/schedule1"/><FRBRuri value="/za/act/1980/01/eng@"/><FRBRdate date="' + today + '" name="Generation"/><FRBRauthor href="#slaw" as="#author"/></FRBRManifestation></identification></meta><mainBody><article id="schedule-1"><content><p>Heres a table:</p><table id="schedule-1.table0"><tr><td><p>r1c1</p></td>
610
645
  <td><p>r1c2</p></td></tr>
611
646
  <tr><td><p>r2c1</p></td>
612
647
  <td><p>r2c2</p></td></tr></table></content></article></mainBody></doc>'
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
4
+ version: 0.6.5
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-13 00:00:00.000000000 Z
11
+ date: 2015-05-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler