asciidoctor-iso 0.9.7 → 0.9.9
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/Gemfile +3 -2
- data/README.adoc +63 -0
- data/asciidoctor-iso.gemspec +1 -1
- data/lib/asciidoctor/iso/base.rb +1 -1
- data/lib/asciidoctor/iso/cleanup_block.rb +28 -2
- data/lib/asciidoctor/iso/ref.rb +18 -9
- data/lib/asciidoctor/iso/section.rb +2 -4
- data/lib/asciidoctor/iso/validate.rb +1 -1
- data/lib/asciidoctor/iso/validate_section.rb +7 -0
- data/lib/asciidoctor/iso/version.rb +1 -1
- data/spec/asciidoctor-iso/cleanup_spec.rb +63 -0
- data/spec/asciidoctor-iso/isobib_cache_spec.rb +56 -56
- data/spec/asciidoctor-iso/refs_spec.rb +43 -0
- data/spec/asciidoctor-iso/validate_spec.rb +58 -0
- metadata +4 -5
- data/Gemfile.lock +0 -190
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1cb66e36c45b81ea74df0f2f99014369c36ee1910425fbfe258034da6498b6de
|
4
|
+
data.tar.gz: 5967537b4c5ecf61bc2cdf3a6ce85219df2f92b03caa447b6c0594b07300fc82
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26da20f2117a447051df311f61145aa0f5841d78adad3ebfcef08b3c97208c353e19add9151f5eda043d27621822b4b09440bfe51aca92dad754452e7ad8ad2e
|
7
|
+
data.tar.gz: 2cd75fbdd50c9858a0b1ed81d4f1a77e59cbdac4eccb315be14b06ff50a4a621d5f3bf7363c4940cfe9fcd9e1dfda224f4349e35202b1d82c1bdd7a66f5695aa
|
data/Gemfile
CHANGED
data/README.adoc
CHANGED
@@ -452,6 +452,69 @@ from the image.
|
|
452
452
|
image::logo.jpg
|
453
453
|
--
|
454
454
|
|
455
|
+
=== Sections embedded more than 5 levels
|
456
|
+
|
457
|
+
Asciidoctor permits only 5 levels of section embedding (not counting the document title).
|
458
|
+
Standards do contain more levels of embedding; ISO/IEC DIR 2 only considers it a problem
|
459
|
+
if there are more than 7 levels of embedding. To realise higher levels of embedding,
|
460
|
+
prefix a 5-level section title with the attribute `level=`:
|
461
|
+
|
462
|
+
[source,asciidoctor]
|
463
|
+
--
|
464
|
+
====== Clause 5
|
465
|
+
|
466
|
+
[level=6]
|
467
|
+
===== Clause 6
|
468
|
+
|
469
|
+
[level=7]
|
470
|
+
====== Clause 7A
|
471
|
+
|
472
|
+
[level=7]
|
473
|
+
====== Clause 7B
|
474
|
+
|
475
|
+
[level=6]
|
476
|
+
====== Clause 6B
|
477
|
+
|
478
|
+
====== Clause 5B
|
479
|
+
--
|
480
|
+
|
481
|
+
This generates the following ISO XML:
|
482
|
+
|
483
|
+
[source,xml]
|
484
|
+
--
|
485
|
+
<clause id="_" inline-header="false" obligation="normative">
|
486
|
+
<title>
|
487
|
+
Clause 5
|
488
|
+
</title>
|
489
|
+
<clause id="_" inline-header="false" obligation="normative">
|
490
|
+
<title>
|
491
|
+
Clause 6
|
492
|
+
</title>
|
493
|
+
<clause id="_" inline-header="false" obligation="normative">
|
494
|
+
<title>
|
495
|
+
Clause 7A
|
496
|
+
</title>
|
497
|
+
</clause>
|
498
|
+
<clause id="_" inline-header="false" obligation="normative">
|
499
|
+
<title>
|
500
|
+
Clause 7B
|
501
|
+
</title>
|
502
|
+
</clause>
|
503
|
+
</clause>
|
504
|
+
<clause id="_" inline-header="false" obligation="normative">
|
505
|
+
<title>
|
506
|
+
Clause 6B
|
507
|
+
</title>
|
508
|
+
</clause>
|
509
|
+
</clause>
|
510
|
+
<clause id="_" inline-header="false" obligation="normative">
|
511
|
+
<title>
|
512
|
+
Clause 5B
|
513
|
+
</title>
|
514
|
+
</clause>
|
515
|
+
--
|
516
|
+
|
517
|
+
|
455
518
|
=== Features not visible in HTML preview
|
456
519
|
|
457
520
|
The gem uses built-in Asciidoc formatting as much as possible, so that users
|
data/asciidoctor-iso.gemspec
CHANGED
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.add_dependency "ruby-jing"
|
32
32
|
spec.add_dependency "isodoc", ">= 0.8"
|
33
33
|
spec.add_dependency "iev", "~> 0.1.0"
|
34
|
-
spec.add_dependency "relaton", "~> 0.1.
|
34
|
+
spec.add_dependency "relaton", "~> 0.1.3"
|
35
35
|
|
36
36
|
spec.add_development_dependency "bundler", "~> 1.15"
|
37
37
|
spec.add_development_dependency "byebug", "~> 9.1"
|
data/lib/asciidoctor/iso/base.rb
CHANGED
@@ -104,7 +104,7 @@ module Asciidoctor
|
|
104
104
|
init(node)
|
105
105
|
ret = makexml(node).to_xml(indent: 2)
|
106
106
|
unless node.attr("nodoc") || !node.attr("docfile")
|
107
|
-
File.open(@filename + ".xml", "w") { |f| f.write(ret) }
|
107
|
+
File.open(@filename + ".xml", "w:UTF-8") { |f| f.write(ret) }
|
108
108
|
html_converter_alt(node).convert(@filename + ".xml")
|
109
109
|
system "mv #{@filename}.html #{@filename}_alt.html"
|
110
110
|
html_converter(node).convert(@filename + ".xml")
|
@@ -123,17 +123,43 @@ module Asciidoctor
|
|
123
123
|
def make_bibliography(x, s)
|
124
124
|
if x.at("//sections/references")
|
125
125
|
biblio = s.add_next_sibling("<bibliography/>").first
|
126
|
-
x.xpath("//sections/references").each
|
126
|
+
x.xpath("//sections/references").each do |r|
|
127
|
+
biblio.add_child r.remove
|
128
|
+
end
|
127
129
|
end
|
128
130
|
end
|
129
131
|
|
130
|
-
def
|
132
|
+
def sections_order_cleanup(x)
|
131
133
|
s = x.at("//sections")
|
132
134
|
make_preface(x, s)
|
133
135
|
make_bibliography(x, s)
|
134
136
|
x.xpath("//sections/annex").reverse_each { |r| s.next = r.remove }
|
135
137
|
end
|
136
138
|
|
139
|
+
def maxlevel(x)
|
140
|
+
max = 5
|
141
|
+
x.xpath("//clause[@level]").each do |c|
|
142
|
+
max = c["level"].to_i if max < c["level"].to_i
|
143
|
+
end
|
144
|
+
max
|
145
|
+
end
|
146
|
+
|
147
|
+
def sections_level_cleanup(x)
|
148
|
+
m = maxlevel(x)
|
149
|
+
return if m < 6
|
150
|
+
m.downto(6).each do |l|
|
151
|
+
x.xpath("//clause[@level = '#{l}']").each do |c|
|
152
|
+
c.delete("level")
|
153
|
+
c.previous_element << c.remove
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
def sections_cleanup(x)
|
159
|
+
sections_order_cleanup(x)
|
160
|
+
sections_level_cleanup(x)
|
161
|
+
end
|
162
|
+
|
137
163
|
def obligations_cleanup(x)
|
138
164
|
obligations_cleanup_info(x)
|
139
165
|
obligations_cleanup_norm(x)
|
data/lib/asciidoctor/iso/ref.rb
CHANGED
@@ -88,12 +88,7 @@ module Asciidoctor
|
|
88
88
|
nil # Render reference without an Internet connection.
|
89
89
|
end
|
90
90
|
|
91
|
-
|
92
|
-
def refitem(xml, item, node)
|
93
|
-
unless m = NON_ISO_REF.match(item)
|
94
|
-
Utils::warning(node, "no anchor on reference", item)
|
95
|
-
return
|
96
|
-
end
|
91
|
+
def refitem_render(xml, m)
|
97
92
|
xml.bibitem **attr_code(id: m[:anchor]) do |t|
|
98
93
|
t.formattedref **{ format: "application/x-isodoc+xml" } do |i|
|
99
94
|
i << ref_normalise_no_format(m[:text])
|
@@ -102,6 +97,20 @@ module Asciidoctor
|
|
102
97
|
end
|
103
98
|
end
|
104
99
|
|
100
|
+
# TODO: alternative where only title is available
|
101
|
+
def refitem(xml, item, node)
|
102
|
+
unless m = NON_ISO_REF.match(item)
|
103
|
+
Utils::warning(node, "no anchor on reference", item)
|
104
|
+
return
|
105
|
+
end
|
106
|
+
unless m[:code] && /^\d+$/.match?(m[:code])
|
107
|
+
ref = fetch_ref xml, m[:code],
|
108
|
+
m.named_captures.has_key?("year") ? m[:year] : nil, {}
|
109
|
+
return use_my_anchor(ref, m[:anchor]) if ref
|
110
|
+
end
|
111
|
+
refitem_render(xml, m)
|
112
|
+
end
|
113
|
+
|
105
114
|
def ref_normalise(ref)
|
106
115
|
ref.
|
107
116
|
# gsub(/ — /, " -- ").
|
@@ -130,7 +139,7 @@ module Asciidoctor
|
|
130
139
|
(?<text>.*)$}xm
|
131
140
|
|
132
141
|
NON_ISO_REF = %r{^<ref\sid="(?<anchor>[^"]+)">
|
133
|
-
\[(?<code>[^\]]
|
142
|
+
\[(?<code>[^\]]+?)([:-](?<year>(19|20)[0-9][0-9]))?\]</ref>,?\s
|
134
143
|
(?<text>.*)$}xm
|
135
144
|
|
136
145
|
# @param item [String]
|
@@ -165,8 +174,8 @@ module Asciidoctor
|
|
165
174
|
end
|
166
175
|
|
167
176
|
def bibliocache_name(global)
|
168
|
-
global ? "#{Dir.home}/.relaton-bib.
|
169
|
-
"#{@filename}.relaton.
|
177
|
+
global ? "#{Dir.home}/.relaton-bib.pstore" :
|
178
|
+
"#{@filename}.relaton.pstore"
|
170
179
|
end
|
171
180
|
end
|
172
181
|
end
|
@@ -74,13 +74,11 @@ module Asciidoctor
|
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
77
|
-
# Not testing max depth of sections: Asciidoctor already limits
|
78
|
-
# it to 5 levels of nesting
|
79
77
|
def clause_parse(attrs, xml, node)
|
80
78
|
attrs["inline-header".to_sym] = node.option? "inline-header"
|
79
|
+
attrs[:level] = node.attr("level")
|
81
80
|
set_obligation(attrs, node)
|
82
|
-
|
83
|
-
xml.send sect, **attr_code(attrs) do |xml_section|
|
81
|
+
xml.send "clause", **attr_code(attrs) do |xml_section|
|
84
82
|
xml_section.title { |n| n << node.title } unless node.title.nil?
|
85
83
|
xml_section << node.content
|
86
84
|
end
|
@@ -194,7 +194,7 @@ module Asciidoctor
|
|
194
194
|
end
|
195
195
|
|
196
196
|
def schema_validate(doc, filename)
|
197
|
-
File.open(".tmp.xml", "w") { |f| f.write(doc.to_xml) }
|
197
|
+
File.open(".tmp.xml", "w:UTF-8") { |f| f.write(doc.to_xml) }
|
198
198
|
begin
|
199
199
|
errors = Jing.new(filename).validate(".tmp.xml")
|
200
200
|
rescue Jing::Error => e
|
@@ -9,6 +9,7 @@ module Asciidoctor
|
|
9
9
|
symbols_validate(doc.root)
|
10
10
|
sections_sequence_validate(doc.root)
|
11
11
|
section_style(doc.root)
|
12
|
+
subclause_validate(doc.root)
|
12
13
|
sourcecode_style(doc.root)
|
13
14
|
asset_style(doc.root)
|
14
15
|
end
|
@@ -196,6 +197,12 @@ module Asciidoctor
|
|
196
197
|
asset_title_style(root)
|
197
198
|
norm_bibitem_style(root)
|
198
199
|
end
|
200
|
+
|
201
|
+
def subclause_validate(root)
|
202
|
+
root.xpath("//clause/clause/clause/clause/clause/clause/clause/clause").each do |c|
|
203
|
+
style_warning(c, "Exceeds the maximum clause depth of 7", nil)
|
204
|
+
end
|
205
|
+
end
|
199
206
|
end
|
200
207
|
end
|
201
208
|
end
|
@@ -699,4 +699,67 @@ r = 1 %</stem>
|
|
699
699
|
</iso-standard>
|
700
700
|
OUTPUT
|
701
701
|
end
|
702
|
+
|
703
|
+
it "extends clause levels past 5" do
|
704
|
+
expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
|
705
|
+
#{ASCIIDOC_BLANK_HDR}
|
706
|
+
|
707
|
+
== Clause1
|
708
|
+
|
709
|
+
=== Clause2
|
710
|
+
|
711
|
+
==== Clause3
|
712
|
+
|
713
|
+
===== Clause4
|
714
|
+
|
715
|
+
====== Clause 5
|
716
|
+
|
717
|
+
[level=6]
|
718
|
+
====== Clause 6
|
719
|
+
|
720
|
+
[level=7]
|
721
|
+
====== Clause 7A
|
722
|
+
|
723
|
+
[level=7]
|
724
|
+
====== Clause 7B
|
725
|
+
|
726
|
+
[level=6]
|
727
|
+
====== Clause 6B
|
728
|
+
|
729
|
+
====== Clause 5B
|
730
|
+
|
731
|
+
INPUT
|
732
|
+
#{BLANK_HDR}
|
733
|
+
<sections>
|
734
|
+
<clause id="_" inline-header="false" obligation="normative">
|
735
|
+
<title>Clause1</title>
|
736
|
+
<clause id="_" inline-header="false" obligation="normative">
|
737
|
+
<title>Clause2</title>
|
738
|
+
<clause id="_" inline-header="false" obligation="normative">
|
739
|
+
<title>Clause3</title>
|
740
|
+
<clause id="_" inline-header="false" obligation="normative"><title>Clause4</title><clause id="_" inline-header="false" obligation="normative">
|
741
|
+
<title>Clause 5</title>
|
742
|
+
<clause id="_" inline-header="false" obligation="normative">
|
743
|
+
<title>Clause 6</title>
|
744
|
+
<clause id="_" inline-header="false" obligation="normative">
|
745
|
+
<title>Clause 7A</title>
|
746
|
+
</clause><clause id="_" inline-header="false" obligation="normative">
|
747
|
+
<title>Clause 7B</title>
|
748
|
+
</clause></clause><clause id="_" inline-header="false" obligation="normative">
|
749
|
+
<title>Clause 6B</title>
|
750
|
+
</clause></clause>
|
751
|
+
|
752
|
+
|
753
|
+
|
754
|
+
|
755
|
+
<clause id="_" inline-header="false" obligation="normative">
|
756
|
+
<title>Clause 5B</title>
|
757
|
+
</clause></clause>
|
758
|
+
</clause>
|
759
|
+
</clause>
|
760
|
+
</clause>
|
761
|
+
</sections>
|
762
|
+
</iso-standard>
|
763
|
+
OUTPUT
|
764
|
+
end
|
702
765
|
end
|
@@ -44,8 +44,8 @@ EOS
|
|
44
44
|
EOS
|
45
45
|
|
46
46
|
it "does not activate biblio caches if isobib disabled" do
|
47
|
-
system "mv ~/.relaton-bib.
|
48
|
-
system "rm -f test.relaton.
|
47
|
+
system "mv ~/.relaton-bib.pstore ~/.relaton-bib.pstore1"
|
48
|
+
system "rm -f test.relaton.pstore"
|
49
49
|
Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true)
|
50
50
|
#{ASCIIDOC_BLANK_HDR}
|
51
51
|
[bibliography]
|
@@ -53,16 +53,16 @@ EOS
|
|
53
53
|
|
54
54
|
* [[[iso123,ISO 123:2001]]] _Standard_
|
55
55
|
INPUT
|
56
|
-
expect(File.exist?("#{Dir.home}/.relaton-bib.
|
57
|
-
expect(File.exist?("test.relaton.
|
56
|
+
expect(File.exist?("#{Dir.home}/.relaton-bib.pstore")).to be false
|
57
|
+
expect(File.exist?("test.relaton.pstore")).to be false
|
58
58
|
|
59
|
-
system "rm ~/.relaton-bib.
|
60
|
-
system "mv ~/.relaton-bib.
|
59
|
+
system "rm ~/.relaton-bib.pstore"
|
60
|
+
system "mv ~/.relaton-bib.pstore1 ~/.relaton-bib.pstore"
|
61
61
|
end
|
62
62
|
|
63
63
|
it "does not activate biblio caches if isobib caching disabled" do
|
64
|
-
system "mv ~/.relaton-bib.
|
65
|
-
system "rm -f test.relaton.
|
64
|
+
system "mv ~/.relaton-bib.pstore ~/.relaton-bib.pstore1"
|
65
|
+
system "rm -f test.relaton.pstore"
|
66
66
|
mock_isobib_get_123
|
67
67
|
Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true)
|
68
68
|
#{ISOBIB_BLANK_HDR}
|
@@ -71,17 +71,17 @@ EOS
|
|
71
71
|
|
72
72
|
* [[[iso123,ISO 123:2001]]] _Standard_
|
73
73
|
INPUT
|
74
|
-
expect(File.exist?("#{Dir.home}/.relaton-bib.
|
75
|
-
expect(File.exist?("test.relaton.
|
74
|
+
expect(File.exist?("#{Dir.home}/.relaton-bib.pstore")).to be false
|
75
|
+
expect(File.exist?("test.relaton.pstore")).to be false
|
76
76
|
|
77
|
-
system "rm ~/.relaton-bib.
|
78
|
-
system "mv ~/.relaton-bib.
|
77
|
+
system "rm ~/.relaton-bib.pstore"
|
78
|
+
system "mv ~/.relaton-bib.pstore1 ~/.relaton-bib.pstore"
|
79
79
|
end
|
80
80
|
|
81
81
|
it "flushes biblio caches" do
|
82
|
-
system "cp ~/.relaton-bib.
|
82
|
+
system "cp ~/.relaton-bib.pstore ~/.relaton-bib.pstore1"
|
83
83
|
|
84
|
-
File.open("#{Dir.home}/.relaton-bib.
|
84
|
+
File.open("#{Dir.home}/.relaton-bib.pstore", "w") do |f|
|
85
85
|
f.write "XXX"
|
86
86
|
end
|
87
87
|
|
@@ -93,21 +93,21 @@ EOS
|
|
93
93
|
|
94
94
|
* [[[iso123,ISO 123:2001]]] _Standard_
|
95
95
|
INPUT
|
96
|
-
expect(File.exist?("#{Dir.home}/.relaton-bib.
|
96
|
+
expect(File.exist?("#{Dir.home}/.relaton-bib.pstore")).to be true
|
97
97
|
|
98
|
-
db = Relaton::Db.new "#{Dir.home}/.relaton-bib.
|
98
|
+
db = Relaton::Db.new "#{Dir.home}/.relaton-bib.pstore", nil
|
99
99
|
entry = db.load_entry("ISO 123:2001")
|
100
100
|
expect(entry["fetched"].to_s).to eq(Date.today.to_s)
|
101
101
|
expect(entry["bib"].to_xml).to be_equivalent_to(ISOBIB_123_DATED)
|
102
102
|
|
103
|
-
system "rm ~/.relaton-bib.
|
104
|
-
system "mv ~/.relaton-bib.
|
103
|
+
system "rm ~/.relaton-bib.pstore"
|
104
|
+
system "mv ~/.relaton-bib.pstore1 ~/.relaton-bib.pstore"
|
105
105
|
end
|
106
106
|
|
107
107
|
|
108
108
|
it "activates global cache" do
|
109
|
-
system "mv ~/.relaton-bib.
|
110
|
-
system "rm -f test.relaton.
|
109
|
+
system "mv ~/.relaton-bib.pstore ~/.relaton-bib.pstore1"
|
110
|
+
system "rm -f test.relaton.pstore"
|
111
111
|
mock_isobib_get_123
|
112
112
|
Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true)
|
113
113
|
#{CACHED_ISOBIB_BLANK_HDR}
|
@@ -116,20 +116,20 @@ EOS
|
|
116
116
|
|
117
117
|
* [[[iso123,ISO 123:2001]]] _Standard_
|
118
118
|
INPUT
|
119
|
-
expect(File.exist?("#{Dir.home}/.relaton-bib.
|
120
|
-
expect(File.exist?("test.relaton.
|
119
|
+
expect(File.exist?("#{Dir.home}/.relaton-bib.pstore")).to be true
|
120
|
+
expect(File.exist?("test.relaton.pstore")).to be false
|
121
121
|
|
122
|
-
db = Relaton::Db.new "#{Dir.home}/.relaton-bib.
|
122
|
+
db = Relaton::Db.new "#{Dir.home}/.relaton-bib.pstore", nil
|
123
123
|
entry = db.load_entry("ISO 123:2001")
|
124
124
|
expect(entry).to_not be nil
|
125
125
|
|
126
|
-
system "rm ~/.relaton-bib.
|
127
|
-
system "mv ~/.relaton-bib.
|
126
|
+
system "rm ~/.relaton-bib.pstore"
|
127
|
+
system "mv ~/.relaton-bib.pstore1 ~/.relaton-bib.pstore"
|
128
128
|
end
|
129
129
|
|
130
130
|
it "activates local cache" do
|
131
|
-
system "mv ~/.relaton-bib.
|
132
|
-
system "rm -f test.relaton.
|
131
|
+
system "mv ~/.relaton-bib.pstore ~/.relaton-bib.pstore1"
|
132
|
+
system "rm -f test.relaton.pstore"
|
133
133
|
mock_isobib_get_123
|
134
134
|
Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true)
|
135
135
|
#{LOCAL_CACHED_ISOBIB_BLANK_HDR}
|
@@ -138,25 +138,25 @@ EOS
|
|
138
138
|
|
139
139
|
* [[[iso123,ISO 123:2001]]] _Standard_
|
140
140
|
INPUT
|
141
|
-
expect(File.exist?("#{Dir.home}/.relaton-bib.
|
142
|
-
expect(File.exist?("test.relaton.
|
141
|
+
expect(File.exist?("#{Dir.home}/.relaton-bib.pstore")).to be true
|
142
|
+
expect(File.exist?("test.relaton.pstore")).to be true
|
143
143
|
|
144
|
-
db = Relaton::Db.new "#{Dir.home}/.relaton-bib.
|
144
|
+
db = Relaton::Db.new "#{Dir.home}/.relaton-bib.pstore", nil
|
145
145
|
entry = db.load_entry("ISO 123:2001")
|
146
146
|
expect(entry).to_not be nil
|
147
147
|
|
148
|
-
db = Relaton::Db.new "test.relaton.
|
148
|
+
db = Relaton::Db.new "test.relaton.pstore", nil
|
149
149
|
entry = db.load_entry("ISO 123:2001")
|
150
150
|
expect(entry).to_not be nil
|
151
151
|
|
152
|
-
system "rm ~/.relaton-bib.
|
153
|
-
system "mv ~/.relaton-bib.
|
152
|
+
system "rm ~/.relaton-bib.pstore"
|
153
|
+
system "mv ~/.relaton-bib.pstore1 ~/.relaton-bib.pstore"
|
154
154
|
end
|
155
155
|
|
156
156
|
|
157
157
|
it "fetches uncached references" do
|
158
|
-
system "mv ~/.relaton-bib.
|
159
|
-
db = Relaton::Db.new "#{Dir.home}/.relaton-bib.
|
158
|
+
system "mv ~/.relaton-bib.pstore ~/.relaton-bib.pstore1"
|
159
|
+
db = Relaton::Db.new "#{Dir.home}/.relaton-bib.pstore", nil
|
160
160
|
db.save_entry("ISO 123:2001",
|
161
161
|
{
|
162
162
|
"fetched" => Date.today.to_s,
|
@@ -182,17 +182,17 @@ EOS
|
|
182
182
|
expect(entry["fetched"].to_s).to eq(Date.today.to_s)
|
183
183
|
expect(entry["bib"].to_xml).to be_equivalent_to(ISOBIB_124_DATED)
|
184
184
|
|
185
|
-
system "rm ~/.relaton-bib.
|
186
|
-
system "mv ~/.relaton-bib.
|
185
|
+
system "rm ~/.relaton-bib.pstore"
|
186
|
+
system "mv ~/.relaton-bib.pstore1 ~/.relaton-bib.pstore"
|
187
187
|
end
|
188
188
|
|
189
189
|
it "expires stale undated references" do
|
190
|
-
system "mv ~/.relaton-bib.
|
190
|
+
system "mv ~/.relaton-bib.pstore ~/.relaton-bib.pstore1"
|
191
191
|
|
192
|
-
db = Relaton::Db.new "#{Dir.home}/.relaton-bib.
|
192
|
+
db = Relaton::Db.new "#{Dir.home}/.relaton-bib.pstore", nil
|
193
193
|
db.save_entry("ISO 123",
|
194
194
|
{
|
195
|
-
"fetched" => (Date.today - 90)
|
195
|
+
"fetched" => (Date.today - 90),
|
196
196
|
"bib" => IsoBibItem.from_xml(ISO_123_SHORT)
|
197
197
|
}
|
198
198
|
)
|
@@ -211,17 +211,17 @@ EOS
|
|
211
211
|
expect(entry["fetched"].to_s).to eq(Date.today.to_s)
|
212
212
|
expect(entry["bib"].to_xml).to be_equivalent_to(ISOBIB_123_UNDATED)
|
213
213
|
|
214
|
-
system "rm ~/.relaton-bib.
|
215
|
-
system "mv ~/.relaton-bib.
|
214
|
+
system "rm ~/.relaton-bib.pstore"
|
215
|
+
system "mv ~/.relaton-bib.pstore1 ~/.relaton-bib.pstore"
|
216
216
|
end
|
217
217
|
|
218
218
|
it "does not expire stale dated references" do
|
219
|
-
system "mv ~/.relaton-bib.
|
219
|
+
system "mv ~/.relaton-bib.pstore ~/.relaton-bib.pstore1"
|
220
220
|
|
221
|
-
db = Relaton::Db.new "#{Dir.home}/.relaton-bib.
|
221
|
+
db = Relaton::Db.new "#{Dir.home}/.relaton-bib.pstore", nil
|
222
222
|
db.save_entry("ISO 123:2001",
|
223
223
|
{
|
224
|
-
"fetched" => (Date.today - 90)
|
224
|
+
"fetched" => (Date.today - 90),
|
225
225
|
"bib" => IsoBibItem.from_xml(ISO_123_SHORT)
|
226
226
|
}
|
227
227
|
)
|
@@ -238,32 +238,32 @@ EOS
|
|
238
238
|
expect(entry["fetched"].to_s).to eq((Date.today - 90).to_s)
|
239
239
|
expect(entry["bib"].to_xml).to be_equivalent_to(ISO_123_SHORT)
|
240
240
|
|
241
|
-
system "rm ~/.relaton-bib.
|
242
|
-
system "mv ~/.relaton-bib.
|
241
|
+
system "rm ~/.relaton-bib.pstore"
|
242
|
+
system "mv ~/.relaton-bib.pstore1 ~/.relaton-bib.pstore"
|
243
243
|
end
|
244
244
|
|
245
245
|
it "prioritises local over global cache values" do
|
246
|
-
system "mv ~/.relaton-bib.
|
247
|
-
system "rm test.relaton.
|
246
|
+
system "mv ~/.relaton-bib.pstore ~/.relaton-bib.pstore1"
|
247
|
+
system "rm test.relaton.pstore"
|
248
248
|
|
249
|
-
db = Relaton::Db.new "#{Dir.home}/.relaton-bib.
|
249
|
+
db = Relaton::Db.new "#{Dir.home}/.relaton-bib.pstore", nil
|
250
250
|
db.save_entry("ISO 123:2001",
|
251
251
|
{
|
252
|
-
"fetched" => Date.today
|
252
|
+
"fetched" => Date.today,
|
253
253
|
"bib" => IsoBibItem.from_xml(ISO_123_SHORT)
|
254
254
|
}
|
255
255
|
)
|
256
256
|
db.save_entry("ISO 124",
|
257
257
|
{
|
258
|
-
"fetched" => Date.today
|
258
|
+
"fetched" => Date.today,
|
259
259
|
"bib" => IsoBibItem.from_xml(ISO_124_SHORT)
|
260
260
|
}
|
261
261
|
)
|
262
262
|
|
263
|
-
localdb = Relaton::Db.new "test.relaton.
|
263
|
+
localdb = Relaton::Db.new "test.relaton.pstore", nil
|
264
264
|
localdb.save_entry("ISO 124",
|
265
265
|
{
|
266
|
-
"fetched" => Date.today
|
266
|
+
"fetched" => Date.today,
|
267
267
|
"bib" => IsoBibItem.from_xml(ISO_124_SHORT_ALT)
|
268
268
|
}
|
269
269
|
)
|
@@ -297,8 +297,8 @@ EOS
|
|
297
297
|
expect(localdb.load_entry("ISO 123:2001")["bib"].to_xml).to be_equivalent_to(ISO_123_SHORT)
|
298
298
|
expect(localdb.load_entry("ISO 124")["bib"].to_xml).to be_equivalent_to(ISO_124_SHORT_ALT)
|
299
299
|
|
300
|
-
system "rm ~/.relaton-bib.
|
301
|
-
system "mv ~/.relaton-bib.
|
300
|
+
system "rm ~/.relaton-bib.pstore"
|
301
|
+
system "mv ~/.relaton-bib.pstore1 ~/.relaton-bib.pstore"
|
302
302
|
end
|
303
303
|
|
304
304
|
private
|
@@ -345,6 +345,34 @@ RSpec.describe Asciidoctor::ISO do
|
|
345
345
|
OUTPUT
|
346
346
|
end
|
347
347
|
|
348
|
+
it "processes RFC reference in Normative References" do
|
349
|
+
mock_rfcbib_get_rfc8341
|
350
|
+
expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
|
351
|
+
#{ISOBIB_BLANK_HDR}
|
352
|
+
[bibliography]
|
353
|
+
== Normative References
|
354
|
+
|
355
|
+
* [[[iso123,IETF RFC 8341]]] _Standard_
|
356
|
+
INPUT
|
357
|
+
#{BLANK_HDR}
|
358
|
+
<sections>
|
359
|
+
|
360
|
+
</sections><bibliography><references id="_" obligation="informative">
|
361
|
+
<title>Normative References</title>
|
362
|
+
<bibitem type="" id="iso123">
|
363
|
+
<title format="text/plain" language="en" script="Latn">Network Configuration Access Control Model</title>
|
364
|
+
<docidentifier>8341</docidentifier>
|
365
|
+
<date type="published">
|
366
|
+
<on>2018</on>
|
367
|
+
</date>
|
368
|
+
<status>published</status>
|
369
|
+
</bibitem>
|
370
|
+
</references>
|
371
|
+
</bibliography>
|
372
|
+
</iso-standard>
|
373
|
+
OUTPUT
|
374
|
+
end
|
375
|
+
|
348
376
|
it "processes non-ISO reference in Normative References" do
|
349
377
|
expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
|
350
378
|
#{ASCIIDOC_BLANK_HDR}
|
@@ -597,4 +625,19 @@ OUTPUT
|
|
597
625
|
end
|
598
626
|
end
|
599
627
|
|
628
|
+
def mock_rfcbib_get_rfc8341
|
629
|
+
expect(RfcBib::RfcBibliography).to receive(:get).with("RFC 8341", nil, {}) do
|
630
|
+
IsoBibItem.from_xml(<<~"OUTPUT")
|
631
|
+
<bibitem id="RFC8341">
|
632
|
+
<title format="text/plain" language="en" script="Latn">Network Configuration Access Control Model</title>
|
633
|
+
<docidentifier>8341</docidentifier>
|
634
|
+
<date type="published">
|
635
|
+
<on>2018</on>
|
636
|
+
</date>
|
637
|
+
<status>published</status>
|
638
|
+
</bibitem>
|
639
|
+
OUTPUT
|
640
|
+
end
|
641
|
+
end
|
642
|
+
|
600
643
|
end
|
@@ -828,4 +828,62 @@ RSpec.describe "No warning if French term matches IEV" do
|
|
828
828
|
INPUT
|
829
829
|
end
|
830
830
|
|
831
|
+
RSpec.describe "Warn if more than 7 levels of subclause" do
|
832
|
+
specify { expect { Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true) }.to output(%r{exceeds the maximum clause depth of 7}).to_stderr }
|
833
|
+
= Document title
|
834
|
+
Author
|
835
|
+
:docfile: test.adoc
|
836
|
+
:nodoc:
|
837
|
+
:no-isobib:
|
838
|
+
:language: fr
|
839
|
+
|
840
|
+
== Clause
|
841
|
+
|
842
|
+
=== Clause
|
843
|
+
|
844
|
+
==== Clause
|
845
|
+
|
846
|
+
===== Clause
|
847
|
+
|
848
|
+
====== Clause
|
849
|
+
|
850
|
+
[level=6]
|
851
|
+
====== Clause
|
852
|
+
|
853
|
+
[level=7]
|
854
|
+
====== Clause
|
855
|
+
|
856
|
+
[level=8]
|
857
|
+
====== Clause
|
858
|
+
|
859
|
+
INPUT
|
860
|
+
end
|
861
|
+
|
862
|
+
RSpec.describe "Do not warn if not more than 7 levels of subclause" do
|
863
|
+
specify { expect { Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true) }.not_to output(%r{exceeds the maximum clause depth of 7}).to_stderr }
|
864
|
+
= Document title
|
865
|
+
Author
|
866
|
+
:docfile: test.adoc
|
867
|
+
:nodoc:
|
868
|
+
:no-isobib:
|
869
|
+
:language: fr
|
870
|
+
|
871
|
+
== Clause
|
872
|
+
|
873
|
+
=== Clause
|
874
|
+
|
875
|
+
==== Clause
|
876
|
+
|
877
|
+
===== Clause
|
878
|
+
|
879
|
+
====== Clause
|
880
|
+
|
881
|
+
[level=6]
|
882
|
+
====== Clause
|
883
|
+
|
884
|
+
[level=7]
|
885
|
+
====== Clause
|
886
|
+
|
887
|
+
INPUT
|
888
|
+
end
|
831
889
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asciidoctor-iso
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-07-
|
11
|
+
date: 2018-07-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: asciidoctor
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0.1.
|
75
|
+
version: 0.1.3
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0.1.
|
82
|
+
version: 0.1.3
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: bundler
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -268,7 +268,6 @@ files:
|
|
268
268
|
- ".travis.yml"
|
269
269
|
- CODE_OF_CONDUCT.md
|
270
270
|
- Gemfile
|
271
|
-
- Gemfile.lock
|
272
271
|
- LICENSE
|
273
272
|
- Makefile
|
274
273
|
- README.adoc
|
data/Gemfile.lock
DELETED
@@ -1,190 +0,0 @@
|
|
1
|
-
GIT
|
2
|
-
remote: git://github.com/riboseinc/relaton.git
|
3
|
-
revision: 3daaf6fa4cd85eb4e1ea8141e520b4350a944975
|
4
|
-
specs:
|
5
|
-
relaton (0.1.0)
|
6
|
-
algoliasearch
|
7
|
-
gbbib (~> 0.1.0)
|
8
|
-
iev (~> 0.1.0)
|
9
|
-
isobib (~> 0.2.0)
|
10
|
-
rfcbib (~> 0.1.0)
|
11
|
-
|
12
|
-
PATH
|
13
|
-
remote: .
|
14
|
-
specs:
|
15
|
-
asciidoctor-iso (0.9.6)
|
16
|
-
asciidoctor (~> 1.5.7)
|
17
|
-
iev (~> 0.1.0)
|
18
|
-
isodoc (>= 0.8)
|
19
|
-
relaton (~> 0.1.0)
|
20
|
-
ruby-jing
|
21
|
-
|
22
|
-
GEM
|
23
|
-
remote: https://rubygems.org/
|
24
|
-
specs:
|
25
|
-
algoliasearch (1.23.2)
|
26
|
-
httpclient (~> 2.8, >= 2.8.3)
|
27
|
-
json (>= 1.5.1)
|
28
|
-
asciidoctor (1.5.7.1)
|
29
|
-
asciimath (1.0.4)
|
30
|
-
ast (2.4.0)
|
31
|
-
byebug (9.1.0)
|
32
|
-
cnccs (0.1.1)
|
33
|
-
coderay (1.1.2)
|
34
|
-
diff-lcs (1.3)
|
35
|
-
docile (1.3.1)
|
36
|
-
equivalent-xml (0.6.0)
|
37
|
-
nokogiri (>= 1.4.3)
|
38
|
-
ffi (1.9.25)
|
39
|
-
formatador (0.2.5)
|
40
|
-
gbbib (0.1.4)
|
41
|
-
cnccs
|
42
|
-
iso-bib-item
|
43
|
-
guard (2.14.2)
|
44
|
-
formatador (>= 0.2.4)
|
45
|
-
listen (>= 2.7, < 4.0)
|
46
|
-
lumberjack (>= 1.0.12, < 2.0)
|
47
|
-
nenv (~> 0.1)
|
48
|
-
notiffany (~> 0.0)
|
49
|
-
pry (>= 0.9.12)
|
50
|
-
shellany (~> 0.0)
|
51
|
-
thor (>= 0.18.1)
|
52
|
-
guard-compat (1.2.1)
|
53
|
-
guard-rspec (4.7.3)
|
54
|
-
guard (~> 2.1)
|
55
|
-
guard-compat (~> 1.1)
|
56
|
-
rspec (>= 2.99.0, < 4.0)
|
57
|
-
html2doc (0.8.2)
|
58
|
-
asciimath
|
59
|
-
htmlentities (~> 4.3.4)
|
60
|
-
image_size
|
61
|
-
mime-types
|
62
|
-
nokogiri
|
63
|
-
ruby-xslt
|
64
|
-
thread_safe
|
65
|
-
uuidtools
|
66
|
-
htmlentities (4.3.4)
|
67
|
-
httpclient (2.8.3)
|
68
|
-
iev (0.1.0)
|
69
|
-
nokogiri
|
70
|
-
image_size (2.0.0)
|
71
|
-
iso-bib-item (0.2.0)
|
72
|
-
isoics (~> 0.1.6)
|
73
|
-
nokogiri (~> 1.8.4)
|
74
|
-
ruby_deep_clone (~> 0.8.0)
|
75
|
-
isobib (0.2.0)
|
76
|
-
algoliasearch
|
77
|
-
iso-bib-item (~> 0.2.0)
|
78
|
-
isodoc (0.8.4)
|
79
|
-
asciimath
|
80
|
-
html2doc (~> 0.8.1)
|
81
|
-
htmlentities (~> 4.3.4)
|
82
|
-
liquid
|
83
|
-
nokogiri
|
84
|
-
roman-numerals
|
85
|
-
ruby-xslt
|
86
|
-
sass
|
87
|
-
thread_safe
|
88
|
-
uuidtools
|
89
|
-
isoics (0.1.6)
|
90
|
-
jaro_winkler (1.5.1)
|
91
|
-
json (2.1.0)
|
92
|
-
liquid (4.0.0)
|
93
|
-
listen (3.1.5)
|
94
|
-
rb-fsevent (~> 0.9, >= 0.9.4)
|
95
|
-
rb-inotify (~> 0.9, >= 0.9.7)
|
96
|
-
ruby_dep (~> 1.2)
|
97
|
-
lumberjack (1.0.13)
|
98
|
-
metanorma (0.2.6)
|
99
|
-
method_source (0.9.0)
|
100
|
-
mime-types (3.1)
|
101
|
-
mime-types-data (~> 3.2015)
|
102
|
-
mime-types-data (3.2016.0521)
|
103
|
-
mini_portile2 (2.3.0)
|
104
|
-
nenv (0.3.0)
|
105
|
-
nokogiri (1.8.4)
|
106
|
-
mini_portile2 (~> 2.3.0)
|
107
|
-
notiffany (0.1.1)
|
108
|
-
nenv (~> 0.1)
|
109
|
-
shellany (~> 0.0)
|
110
|
-
optout (0.0.2)
|
111
|
-
parallel (1.12.1)
|
112
|
-
parser (2.5.1.2)
|
113
|
-
ast (~> 2.4.0)
|
114
|
-
powerpack (0.1.2)
|
115
|
-
pry (0.11.3)
|
116
|
-
coderay (~> 1.1.0)
|
117
|
-
method_source (~> 0.9.0)
|
118
|
-
rainbow (3.0.0)
|
119
|
-
rake (12.3.1)
|
120
|
-
rb-fsevent (0.10.3)
|
121
|
-
rb-inotify (0.9.10)
|
122
|
-
ffi (>= 0.5.0, < 2)
|
123
|
-
rfcbib (0.1.1)
|
124
|
-
iso-bib-item (~> 0.2.0)
|
125
|
-
roman-numerals (0.3.0)
|
126
|
-
rspec (3.7.0)
|
127
|
-
rspec-core (~> 3.7.0)
|
128
|
-
rspec-expectations (~> 3.7.0)
|
129
|
-
rspec-mocks (~> 3.7.0)
|
130
|
-
rspec-core (3.7.1)
|
131
|
-
rspec-support (~> 3.7.0)
|
132
|
-
rspec-expectations (3.7.0)
|
133
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
134
|
-
rspec-support (~> 3.7.0)
|
135
|
-
rspec-mocks (3.7.0)
|
136
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
137
|
-
rspec-support (~> 3.7.0)
|
138
|
-
rspec-support (3.7.1)
|
139
|
-
rubocop (0.58.1)
|
140
|
-
jaro_winkler (~> 1.5.1)
|
141
|
-
parallel (~> 1.10)
|
142
|
-
parser (>= 2.5, != 2.5.1.1)
|
143
|
-
powerpack (~> 0.1)
|
144
|
-
rainbow (>= 2.2.2, < 4.0)
|
145
|
-
ruby-progressbar (~> 1.7)
|
146
|
-
unicode-display_width (~> 1.0, >= 1.0.1)
|
147
|
-
ruby-jing (0.0.1)
|
148
|
-
optout (>= 0.0.2)
|
149
|
-
ruby-progressbar (1.9.0)
|
150
|
-
ruby-xslt (0.9.10)
|
151
|
-
ruby_deep_clone (0.8.0)
|
152
|
-
ruby_dep (1.5.0)
|
153
|
-
sass (3.5.6)
|
154
|
-
sass-listen (~> 4.0.0)
|
155
|
-
sass-listen (4.0.0)
|
156
|
-
rb-fsevent (~> 0.9, >= 0.9.4)
|
157
|
-
rb-inotify (~> 0.9, >= 0.9.7)
|
158
|
-
shellany (0.0.1)
|
159
|
-
simplecov (0.16.1)
|
160
|
-
docile (~> 1.1)
|
161
|
-
json (>= 1.8, < 3)
|
162
|
-
simplecov-html (~> 0.10.0)
|
163
|
-
simplecov-html (0.10.2)
|
164
|
-
thor (0.20.0)
|
165
|
-
thread_safe (0.3.6)
|
166
|
-
timecop (0.9.1)
|
167
|
-
unicode-display_width (1.4.0)
|
168
|
-
uuidtools (2.1.5)
|
169
|
-
|
170
|
-
PLATFORMS
|
171
|
-
ruby
|
172
|
-
|
173
|
-
DEPENDENCIES
|
174
|
-
asciidoctor-iso!
|
175
|
-
bundler (~> 1.15)
|
176
|
-
byebug (~> 9.1)
|
177
|
-
equivalent-xml (~> 0.6)
|
178
|
-
guard (~> 2.14)
|
179
|
-
guard-rspec (~> 4.7)
|
180
|
-
isobib (~> 0.2.0)
|
181
|
-
metanorma (~> 0.2.6)
|
182
|
-
rake (~> 12.0)
|
183
|
-
relaton!
|
184
|
-
rspec (~> 3.6)
|
185
|
-
rubocop (~> 0.50)
|
186
|
-
simplecov (~> 0.15)
|
187
|
-
timecop (~> 0.9)
|
188
|
-
|
189
|
-
BUNDLED WITH
|
190
|
-
1.16.2
|