slaw 0.6.2 → 0.6.3
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/bin/slaw +15 -2
- data/lib/slaw/version.rb +1 -1
- data/lib/slaw/za/act.treetop +3 -3
- data/lib/slaw/za/act_nodes.rb +45 -45
- data/spec/za/act_spec.rb +36 -14
- 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: aa99a0d10c55f90c3cc64dc38caf91b986b94ab1
|
4
|
+
data.tar.gz: afd8583f42680e2caa287d5ebc993b616e4eeac8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 617cfdd201458cf85da6ea524e8e97ee955473825e1064fc86684adfcd9418faca2c9a4626c8c0654e3ecdcd2705199ab154c7cd1bd8a018380e8654ccaae842
|
7
|
+
data.tar.gz: 6c987cb5f14663c1e5ad5fa73af06554afc2b1cd4a6ea2732592ab5b7180aa3834799e449f68c315ed1e0d1396f5b4b7b5371bd31e682011924e56b29308adc7
|
data/bin/slaw
CHANGED
@@ -37,8 +37,16 @@ class SlawCLI < Thor
|
|
37
37
|
|
38
38
|
if options[:fragment]
|
39
39
|
generator.document_class = Slaw::Fragment
|
40
|
+
|
40
41
|
fragment = options[:fragment]
|
41
|
-
fragment =
|
42
|
+
fragment = case fragment.downcase
|
43
|
+
when 'akomantoso'
|
44
|
+
'act'
|
45
|
+
when 'doc'
|
46
|
+
'schedule'
|
47
|
+
else
|
48
|
+
fragment
|
49
|
+
end
|
42
50
|
generator.builder.parse_options[:root] = fragment
|
43
51
|
|
44
52
|
if options[:id_prefix]
|
@@ -48,7 +56,12 @@ class SlawCLI < Thor
|
|
48
56
|
end
|
49
57
|
end
|
50
58
|
|
51
|
-
|
59
|
+
begin
|
60
|
+
act = generator.generate_from_text(text)
|
61
|
+
rescue Slaw::Parse::ParseError => e
|
62
|
+
error e.message
|
63
|
+
exit 1
|
64
|
+
end
|
52
65
|
|
53
66
|
# definitions?
|
54
67
|
generator.builder.link_definitions(act.doc) if options[:definitions]
|
data/lib/slaw/version.rb
CHANGED
data/lib/slaw/za/act.treetop
CHANGED
@@ -110,7 +110,7 @@ module Slaw
|
|
110
110
|
# statements
|
111
111
|
|
112
112
|
rule numbered_statement
|
113
|
-
space? numbered_statement_prefix whitespace
|
113
|
+
space? numbered_statement_prefix whitespace (!blocklist_item_prefix content eol)? <NumberedStatement>
|
114
114
|
end
|
115
115
|
|
116
116
|
rule naked_statement
|
@@ -126,7 +126,7 @@ module Slaw
|
|
126
126
|
# prefixes
|
127
127
|
|
128
128
|
rule part_heading_prefix
|
129
|
-
'part'i space alphanums
|
129
|
+
'part'i space alphanums whitespace [:-]?
|
130
130
|
end
|
131
131
|
|
132
132
|
rule chapter_heading_prefix
|
@@ -173,7 +173,7 @@ module Slaw
|
|
173
173
|
end
|
174
174
|
|
175
175
|
rule blocklist_item
|
176
|
-
space? blocklist_item_prefix whitespace
|
176
|
+
space? blocklist_item_prefix whitespace item_content:(!blocklist_item_prefix content eol)?
|
177
177
|
<BlocklistItem>
|
178
178
|
end
|
179
179
|
|
data/lib/slaw/za/act_nodes.rb
CHANGED
@@ -318,43 +318,10 @@ module Slaw
|
|
318
318
|
return if schedules.elements.empty?
|
319
319
|
|
320
320
|
b.components { |b|
|
321
|
-
schedules.elements.each_with_index { |e, i|
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
def write_schedule(element, i, b)
|
326
|
-
# component name
|
327
|
-
comp = "schedule#{i}"
|
328
|
-
|
329
|
-
b.component(id: "component-#{i}") { |b|
|
330
|
-
b.doc(name: "schedule#{i}") { |b|
|
331
|
-
b.meta { |b|
|
332
|
-
b.identification(source: "#slaw") { |b|
|
333
|
-
b.FRBRWork { |b|
|
334
|
-
b.FRBRthis(value: "#{Act::WORK_URI}/#{comp}")
|
335
|
-
b.FRBRuri(value: Act::WORK_URI)
|
336
|
-
b.FRBRalias(value: element.alias)
|
337
|
-
b.FRBRdate(date: '1980-01-01', name: 'Generation')
|
338
|
-
b.FRBRauthor(href: '#council', as: '#author')
|
339
|
-
b.FRBRcountry(value: 'za')
|
340
|
-
}
|
341
|
-
b.FRBRExpression { |b|
|
342
|
-
b.FRBRthis(value: "#{Act::EXPRESSION_URI}/#{comp}")
|
343
|
-
b.FRBRuri(value: Act::EXPRESSION_URI)
|
344
|
-
b.FRBRdate(date: '1980-01-01', name: 'Generation')
|
345
|
-
b.FRBRauthor(href: '#council', as: '#author')
|
346
|
-
b.FRBRlanguage(language: 'eng')
|
347
|
-
}
|
348
|
-
b.FRBRManifestation { |b|
|
349
|
-
b.FRBRthis(value: "#{Act::MANIFESTATION_URI}/#{comp}")
|
350
|
-
b.FRBRuri(value: Act::MANIFESTATION_URI)
|
351
|
-
b.FRBRdate(date: Time.now.strftime('%Y-%m-%d'), name: 'Generation')
|
352
|
-
b.FRBRauthor(href: '#slaw', as: '#author')
|
353
|
-
}
|
354
|
-
}
|
321
|
+
schedules.elements.each_with_index { |e, i|
|
322
|
+
b.component(id: "component-#{i+1}") { |b|
|
323
|
+
e.to_xml(b, "", i+1)
|
355
324
|
}
|
356
|
-
|
357
|
-
b.mainBody { |b| element.to_xml(b, i) }
|
358
325
|
}
|
359
326
|
}
|
360
327
|
end
|
@@ -382,16 +349,49 @@ module Slaw
|
|
382
349
|
end
|
383
350
|
end
|
384
351
|
|
385
|
-
def to_xml(b, idprefix, i=
|
352
|
+
def to_xml(b, idprefix, i=1)
|
386
353
|
n = num.nil? ? i : num
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
b.
|
394
|
-
|
354
|
+
|
355
|
+
# component name
|
356
|
+
comp = "schedule#{n}"
|
357
|
+
id = "#{idprefix}schedule-#{n}"
|
358
|
+
|
359
|
+
b.doc(name: "schedule#{n}") { |b|
|
360
|
+
b.meta { |b|
|
361
|
+
b.identification(source: "#slaw") { |b|
|
362
|
+
b.FRBRWork { |b|
|
363
|
+
b.FRBRthis(value: "#{Act::WORK_URI}/#{comp}")
|
364
|
+
b.FRBRuri(value: Act::WORK_URI)
|
365
|
+
b.FRBRalias(value: self.alias)
|
366
|
+
b.FRBRdate(date: '1980-01-01', name: 'Generation')
|
367
|
+
b.FRBRauthor(href: '#council', as: '#author')
|
368
|
+
b.FRBRcountry(value: 'za')
|
369
|
+
}
|
370
|
+
b.FRBRExpression { |b|
|
371
|
+
b.FRBRthis(value: "#{Act::EXPRESSION_URI}/#{comp}")
|
372
|
+
b.FRBRuri(value: Act::EXPRESSION_URI)
|
373
|
+
b.FRBRdate(date: '1980-01-01', name: 'Generation')
|
374
|
+
b.FRBRauthor(href: '#council', as: '#author')
|
375
|
+
b.FRBRlanguage(language: 'eng')
|
376
|
+
}
|
377
|
+
b.FRBRManifestation { |b|
|
378
|
+
b.FRBRthis(value: "#{Act::MANIFESTATION_URI}/#{comp}")
|
379
|
+
b.FRBRuri(value: Act::MANIFESTATION_URI)
|
380
|
+
b.FRBRdate(date: Time.now.strftime('%Y-%m-%d'), name: 'Generation')
|
381
|
+
b.FRBRauthor(href: '#slaw', as: '#author')
|
382
|
+
}
|
383
|
+
}
|
384
|
+
}
|
385
|
+
|
386
|
+
b.mainBody { |b|
|
387
|
+
# there is no good AKN hierarchy container for schedules, so we
|
388
|
+
# just use article because we don't use it anywhere else.
|
389
|
+
b.article(id: id) { |b|
|
390
|
+
b.heading(heading) if heading
|
391
|
+
b.content { |b|
|
392
|
+
statements.elements.each { |e| b.p(e.content.text_value) }
|
393
|
+
}
|
394
|
+
}
|
395
395
|
}
|
396
396
|
}
|
397
397
|
end
|
data/spec/za/act_spec.rb
CHANGED
@@ -61,6 +61,28 @@ EOS
|
|
61
61
|
to_xml(node).should == "<part id=\"part-2\"><num>2</num><heading>The Part Heading</heading><section id=\"section-1\"><num>1.</num><heading>Section</heading><subsection id=\"section-1.subsection-0\"><content><p>Hello there</p></content></subsection></section></part>"
|
62
62
|
end
|
63
63
|
|
64
|
+
it 'should handle part headers with dashes' do
|
65
|
+
node = parse :part, <<EOS
|
66
|
+
Part 2 - The Part Heading
|
67
|
+
1. Section
|
68
|
+
Hello there
|
69
|
+
EOS
|
70
|
+
node.num.should == "2"
|
71
|
+
node.heading.title.should == 'The Part Heading'
|
72
|
+
to_xml(node).should == "<part id=\"part-2\"><num>2</num><heading>The Part Heading</heading><section id=\"section-1\"><num>1.</num><heading>Section</heading><subsection id=\"section-1.subsection-0\"><content><p>Hello there</p></content></subsection></section></part>"
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'should handle part headers with colons' do
|
76
|
+
node = parse :part, <<EOS
|
77
|
+
Part 2: The Part Heading
|
78
|
+
1. Section
|
79
|
+
Hello there
|
80
|
+
EOS
|
81
|
+
node.num.should == "2"
|
82
|
+
node.heading.title.should == 'The Part Heading'
|
83
|
+
to_xml(node).should == "<part id=\"part-2\"><num>2</num><heading>The Part Heading</heading><section id=\"section-1\"><num>1.</num><heading>Section</heading><subsection id=\"section-1.subsection-0\"><content><p>Hello there</p></content></subsection></section></part>"
|
84
|
+
end
|
85
|
+
|
64
86
|
it 'should handle parts and odd section numbers' do
|
65
87
|
subject.parser.options = {section_number_after_title: false}
|
66
88
|
node = parse :act, <<EOS
|
@@ -367,11 +389,11 @@ EOS
|
|
367
389
|
|
368
390
|
it 'should serialise many schedules correctly' do
|
369
391
|
node = parse :schedules, <<EOS
|
370
|
-
Schedule "
|
392
|
+
Schedule "2"
|
371
393
|
A Title
|
372
394
|
1. Foo
|
373
395
|
2. Bar
|
374
|
-
Schedule
|
396
|
+
Schedule 3
|
375
397
|
Another Title
|
376
398
|
Baz
|
377
399
|
Boom
|
@@ -387,26 +409,26 @@ EOS
|
|
387
409
|
s.should == <<EOS
|
388
410
|
<components>
|
389
411
|
<component id="component-1">
|
390
|
-
<doc name="
|
412
|
+
<doc name="schedule2">
|
391
413
|
<meta>
|
392
414
|
<identification source="#slaw">
|
393
415
|
<FRBRWork>
|
394
|
-
<FRBRthis value="/za/act/1980/01/
|
416
|
+
<FRBRthis value="/za/act/1980/01/schedule2"/>
|
395
417
|
<FRBRuri value="/za/act/1980/01"/>
|
396
|
-
<FRBRalias value="Schedule
|
418
|
+
<FRBRalias value="Schedule 2"/>
|
397
419
|
<FRBRdate date="1980-01-01" name="Generation"/>
|
398
420
|
<FRBRauthor href="#council" as="#author"/>
|
399
421
|
<FRBRcountry value="za"/>
|
400
422
|
</FRBRWork>
|
401
423
|
<FRBRExpression>
|
402
|
-
<FRBRthis value="/za/act/1980/01/eng@/
|
424
|
+
<FRBRthis value="/za/act/1980/01/eng@/schedule2"/>
|
403
425
|
<FRBRuri value="/za/act/1980/01/eng@"/>
|
404
426
|
<FRBRdate date="1980-01-01" name="Generation"/>
|
405
427
|
<FRBRauthor href="#council" as="#author"/>
|
406
428
|
<FRBRlanguage language="eng"/>
|
407
429
|
</FRBRExpression>
|
408
430
|
<FRBRManifestation>
|
409
|
-
<FRBRthis value="/za/act/1980/01/eng@/
|
431
|
+
<FRBRthis value="/za/act/1980/01/eng@/schedule2"/>
|
410
432
|
<FRBRuri value="/za/act/1980/01/eng@"/>
|
411
433
|
<FRBRdate date="#{today}" name="Generation"/>
|
412
434
|
<FRBRauthor href="#slaw" as="#author"/>
|
@@ -414,7 +436,7 @@ EOS
|
|
414
436
|
</identification>
|
415
437
|
</meta>
|
416
438
|
<mainBody>
|
417
|
-
<article id="schedule-
|
439
|
+
<article id="schedule-2">
|
418
440
|
<heading>A Title</heading>
|
419
441
|
<content>
|
420
442
|
<p>1. Foo</p>
|
@@ -425,26 +447,26 @@ EOS
|
|
425
447
|
</doc>
|
426
448
|
</component>
|
427
449
|
<component id="component-2">
|
428
|
-
<doc name="
|
450
|
+
<doc name="schedule3">
|
429
451
|
<meta>
|
430
452
|
<identification source="#slaw">
|
431
453
|
<FRBRWork>
|
432
|
-
<FRBRthis value="/za/act/1980/01/
|
454
|
+
<FRBRthis value="/za/act/1980/01/schedule3"/>
|
433
455
|
<FRBRuri value="/za/act/1980/01"/>
|
434
|
-
<FRBRalias value="Schedule
|
456
|
+
<FRBRalias value="Schedule 3"/>
|
435
457
|
<FRBRdate date="1980-01-01" name="Generation"/>
|
436
458
|
<FRBRauthor href="#council" as="#author"/>
|
437
459
|
<FRBRcountry value="za"/>
|
438
460
|
</FRBRWork>
|
439
461
|
<FRBRExpression>
|
440
|
-
<FRBRthis value="/za/act/1980/01/eng@/
|
462
|
+
<FRBRthis value="/za/act/1980/01/eng@/schedule3"/>
|
441
463
|
<FRBRuri value="/za/act/1980/01/eng@"/>
|
442
464
|
<FRBRdate date="1980-01-01" name="Generation"/>
|
443
465
|
<FRBRauthor href="#council" as="#author"/>
|
444
466
|
<FRBRlanguage language="eng"/>
|
445
467
|
</FRBRExpression>
|
446
468
|
<FRBRManifestation>
|
447
|
-
<FRBRthis value="/za/act/1980/01/eng@/
|
469
|
+
<FRBRthis value="/za/act/1980/01/eng@/schedule3"/>
|
448
470
|
<FRBRuri value="/za/act/1980/01/eng@"/>
|
449
471
|
<FRBRdate date="#{today}" name="Generation"/>
|
450
472
|
<FRBRauthor href="#slaw" as="#author"/>
|
@@ -452,7 +474,7 @@ EOS
|
|
452
474
|
</identification>
|
453
475
|
</meta>
|
454
476
|
<mainBody>
|
455
|
-
<article id="schedule-
|
477
|
+
<article id="schedule-3">
|
456
478
|
<heading>Another Title</heading>
|
457
479
|
<content>
|
458
480
|
<p>Baz</p>
|
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.3
|
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-
|
11
|
+
date: 2015-05-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|