metanorma-standoc 2.1.5 → 2.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/metanorma/standoc/base.rb +13 -0
- data/lib/metanorma/standoc/blocks.rb +26 -17
- data/lib/metanorma/standoc/cleanup.rb +1 -1
- data/lib/metanorma/standoc/cleanup_biblio.rb +210 -0
- data/lib/metanorma/standoc/cleanup_block.rb +6 -4
- data/lib/metanorma/standoc/cleanup_maths.rb +2 -15
- data/lib/metanorma/standoc/cleanup_ref.rb +22 -13
- data/lib/metanorma/standoc/cleanup_reqt.rb +3 -103
- data/lib/metanorma/standoc/cleanup_symbols.rb +1 -1
- data/lib/metanorma/standoc/cleanup_text.rb +10 -8
- data/lib/metanorma/standoc/cleanup_xref.rb +1 -2
- data/lib/metanorma/standoc/converter.rb +2 -0
- data/lib/metanorma/standoc/front.rb +1 -1
- data/lib/metanorma/standoc/front_contributor.rb +0 -10
- data/lib/metanorma/standoc/inline.rb +8 -4
- data/lib/metanorma/standoc/isodoc.rng +6 -1
- data/lib/metanorma/standoc/macros.rb +1 -180
- data/lib/metanorma/standoc/macros_inline.rb +194 -0
- data/lib/metanorma/standoc/ref_sect.rb +2 -2
- data/lib/metanorma/standoc/ref_utility.rb +1 -1
- data/lib/metanorma/standoc/reqt.rb +19 -75
- data/lib/metanorma/standoc/reqt.rng +1 -1
- data/lib/metanorma/standoc/section.rb +35 -3
- data/lib/metanorma/standoc/utils.rb +9 -43
- data/lib/metanorma/standoc/validate.rb +1 -69
- data/lib/metanorma/standoc/validate_table.rb +91 -0
- data/lib/metanorma/standoc/version.rb +1 -1
- data/metanorma-standoc.gemspec +4 -5
- data/spec/metanorma/{refs_dl_spec.rb → biblio_spec.rb} +90 -7
- data/spec/metanorma/blocks_spec.rb +31 -267
- data/spec/metanorma/cleanup_blocks_spec.rb +0 -171
- data/spec/metanorma/inline_spec.rb +4 -0
- data/spec/metanorma/macros_concept_spec.rb +1033 -0
- data/spec/metanorma/macros_spec.rb +2 -1030
- data/spec/metanorma/refs_spec.rb +0 -2
- data/spec/metanorma/reqt_spec.rb +130 -0
- data/spec/metanorma/section_spec.rb +5 -0
- data/spec/metanorma/validate_spec.rb +46 -6
- data/spec/vcr_cassettes/bsi16341.yml +80 -52
- data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec.yml +94 -94
- data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec1.yml +12 -12
- data/spec/vcr_cassettes/hide_refs.yml +70 -70
- data/spec/vcr_cassettes/isobib_get_123.yml +11 -11
- data/spec/vcr_cassettes/isobib_get_123_1.yml +23 -23
- data/spec/vcr_cassettes/isobib_get_123_1_fr.yml +35 -35
- data/spec/vcr_cassettes/isobib_get_123_2.yml +22 -22
- data/spec/vcr_cassettes/isobib_get_123_2001.yml +13 -13
- data/spec/vcr_cassettes/isobib_get_124.yml +11 -11
- data/spec/vcr_cassettes/rfcbib_get_rfc8341.yml +34 -64
- data/spec/vcr_cassettes/separates_iev_citations_by_top_level_clause.yml +45 -45
- data/spec/vcr_cassettes/std-link.yml +12 -12
- metadata +15 -11
- data/lib/metanorma/standoc/cleanup_ref_dl.rb +0 -113
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metanorma-standoc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1
|
4
|
+
version: 2.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: asciidoctor
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 2.
|
47
|
+
version: 2.2.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 2.
|
54
|
+
version: 2.2.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: metanorma-plugin-datastruct
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -151,33 +151,33 @@ dependencies:
|
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
154
|
+
name: mn-requirements
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
157
|
- - "~>"
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version:
|
159
|
+
version: 0.0.1
|
160
160
|
type: :runtime
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
164
|
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
|
-
version:
|
166
|
+
version: 0.0.1
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
168
|
name: relaton-cli
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
170
170
|
requirements:
|
171
171
|
- - "~>"
|
172
172
|
- !ruby/object:Gem::Version
|
173
|
-
version: 1.
|
173
|
+
version: 1.13.0
|
174
174
|
type: :runtime
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
178
|
- - "~>"
|
179
179
|
- !ruby/object:Gem::Version
|
180
|
-
version: 1.
|
180
|
+
version: 1.13.0
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
182
|
name: relaton-iev
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -477,6 +477,7 @@ files:
|
|
477
477
|
- lib/metanorma/standoc/blocks_notes.rb
|
478
478
|
- lib/metanorma/standoc/cleanup.rb
|
479
479
|
- lib/metanorma/standoc/cleanup_amend.rb
|
480
|
+
- lib/metanorma/standoc/cleanup_biblio.rb
|
480
481
|
- lib/metanorma/standoc/cleanup_block.rb
|
481
482
|
- lib/metanorma/standoc/cleanup_boilerplate.rb
|
482
483
|
- lib/metanorma/standoc/cleanup_footnotes.rb
|
@@ -484,7 +485,6 @@ files:
|
|
484
485
|
- lib/metanorma/standoc/cleanup_inline.rb
|
485
486
|
- lib/metanorma/standoc/cleanup_maths.rb
|
486
487
|
- lib/metanorma/standoc/cleanup_ref.rb
|
487
|
-
- lib/metanorma/standoc/cleanup_ref_dl.rb
|
488
488
|
- lib/metanorma/standoc/cleanup_reqt.rb
|
489
489
|
- lib/metanorma/standoc/cleanup_section.rb
|
490
490
|
- lib/metanorma/standoc/cleanup_section_names.rb
|
@@ -507,6 +507,7 @@ files:
|
|
507
507
|
- lib/metanorma/standoc/macros.rb
|
508
508
|
- lib/metanorma/standoc/macros_embed.rb
|
509
509
|
- lib/metanorma/standoc/macros_form.rb
|
510
|
+
- lib/metanorma/standoc/macros_inline.rb
|
510
511
|
- lib/metanorma/standoc/macros_note.rb
|
511
512
|
- lib/metanorma/standoc/macros_plantuml.rb
|
512
513
|
- lib/metanorma/standoc/macros_terms.rb
|
@@ -524,6 +525,7 @@ files:
|
|
524
525
|
- lib/metanorma/standoc/utils.rb
|
525
526
|
- lib/metanorma/standoc/validate.rb
|
526
527
|
- lib/metanorma/standoc/validate_section.rb
|
528
|
+
- lib/metanorma/standoc/validate_table.rb
|
527
529
|
- lib/metanorma/standoc/version.rb
|
528
530
|
- lib/metanorma/standoc/views/datamodel/model_representation.adoc.erb
|
529
531
|
- lib/metanorma/standoc/views/datamodel/plantuml_representation.adoc.erb
|
@@ -607,6 +609,7 @@ files:
|
|
607
609
|
- spec/fixtures/test.exp
|
608
610
|
- spec/fixtures/test.xmi
|
609
611
|
- spec/metanorma/base_spec.rb
|
612
|
+
- spec/metanorma/biblio_spec.rb
|
610
613
|
- spec/metanorma/blank_spec.rb
|
611
614
|
- spec/metanorma/blocks_spec.rb
|
612
615
|
- spec/metanorma/cleanup_blocks_spec.rb
|
@@ -618,13 +621,14 @@ files:
|
|
618
621
|
- spec/metanorma/inline_spec.rb
|
619
622
|
- spec/metanorma/isobib_cache_spec.rb
|
620
623
|
- spec/metanorma/lists_spec.rb
|
624
|
+
- spec/metanorma/macros_concept_spec.rb
|
621
625
|
- spec/metanorma/macros_json2text_spec.rb
|
622
626
|
- spec/metanorma/macros_plantuml_spec.rb
|
623
627
|
- spec/metanorma/macros_spec.rb
|
624
628
|
- spec/metanorma/macros_yaml2text_spec.rb
|
625
629
|
- spec/metanorma/processor_spec.rb
|
626
|
-
- spec/metanorma/refs_dl_spec.rb
|
627
630
|
- spec/metanorma/refs_spec.rb
|
631
|
+
- spec/metanorma/reqt_spec.rb
|
628
632
|
- spec/metanorma/section_spec.rb
|
629
633
|
- spec/metanorma/table_spec.rb
|
630
634
|
- spec/metanorma/validate_spec.rb
|
@@ -1,113 +0,0 @@
|
|
1
|
-
require "set"
|
2
|
-
require "relaton_bib"
|
3
|
-
|
4
|
-
module Metanorma
|
5
|
-
module Standoc
|
6
|
-
module Cleanup
|
7
|
-
def ref_dl_cleanup(xmldoc)
|
8
|
-
xmldoc.xpath("//clause[@bibitem = 'true']").each do |c|
|
9
|
-
bib = dl_bib_extract(c) or next
|
10
|
-
validate_ref_dl(bib, c)
|
11
|
-
bibitemxml = RelatonBib::BibliographicItem.from_hash(bib).to_xml or next
|
12
|
-
bibitem = Nokogiri::XML(bibitemxml)
|
13
|
-
bibitem.root["id"] = c["id"] if c["id"] && !/^_/.match(c["id"])
|
14
|
-
c.replace(bibitem.root)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
# do not accept implicit id
|
19
|
-
def validate_ref_dl(bib, clause)
|
20
|
-
id = bib["id"]
|
21
|
-
id ||= clause["id"] unless /^_/.match?(clause["id"])
|
22
|
-
unless id
|
23
|
-
@log.add("Anchors", clause,
|
24
|
-
"The following reference is missing an anchor:\n"\
|
25
|
-
"#{clause.to_xml}")
|
26
|
-
return
|
27
|
-
end
|
28
|
-
@refids << id
|
29
|
-
validate_ref_dl1(bib, id, clause)
|
30
|
-
end
|
31
|
-
|
32
|
-
def validate_ref_dl1(bib, id, clause)
|
33
|
-
bib["title"] or
|
34
|
-
@log.add("Bibliography", clause, "Reference #{id} is missing a title")
|
35
|
-
bib["docid"] or
|
36
|
-
@log.add("Bibliography", clause,
|
37
|
-
"Reference #{id} is missing a document identifier (docid)")
|
38
|
-
end
|
39
|
-
|
40
|
-
def extract_from_p(tag, bib, key)
|
41
|
-
return unless bib[tag]
|
42
|
-
|
43
|
-
"<#{key}>#{bib[tag].at('p').children}</#{key}>"
|
44
|
-
end
|
45
|
-
|
46
|
-
# if the content is a single paragraph, replace it with its children
|
47
|
-
# single links replaced with uri
|
48
|
-
def p_unwrap(para)
|
49
|
-
elems = para.elements
|
50
|
-
if elems.size == 1 && elems[0].name == "p"
|
51
|
-
link_unwrap(elems[0]).children.to_xml.strip
|
52
|
-
else
|
53
|
-
para.to_xml.strip
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
def link_unwrap(para)
|
58
|
-
elems = para.elements
|
59
|
-
if elems.size == 1 && elems[0].name == "link"
|
60
|
-
para.at("./link").replace(elems[0]["target"].strip)
|
61
|
-
end
|
62
|
-
para
|
63
|
-
end
|
64
|
-
|
65
|
-
def dd_bib_extract(dtd)
|
66
|
-
return nil if dtd.children.empty?
|
67
|
-
|
68
|
-
dtd.at("./dl") and return dl_bib_extract(dtd)
|
69
|
-
elems = dtd.remove.elements
|
70
|
-
return p_unwrap(dtd) unless elems.size == 1 &&
|
71
|
-
%w(ol ul).include?(elems[0].name)
|
72
|
-
|
73
|
-
ret = []
|
74
|
-
elems[0].xpath("./li").each do |li|
|
75
|
-
ret << p_unwrap(li)
|
76
|
-
end
|
77
|
-
ret
|
78
|
-
end
|
79
|
-
|
80
|
-
def add_to_hash(bib, key, val)
|
81
|
-
Metanorma::Utils::set_nested_value(bib, key.split("."), val)
|
82
|
-
end
|
83
|
-
|
84
|
-
# definition list, with at most one level of unordered lists
|
85
|
-
def dl_bib_extract(clause, nested = false)
|
86
|
-
dl = clause.at("./dl") or return
|
87
|
-
bib = {}
|
88
|
-
key = ""
|
89
|
-
dl.xpath("./dt | ./dd").each do |dtd|
|
90
|
-
(dtd.name == "dt" and key = dtd.text.sub(/:+$/, "")) or
|
91
|
-
add_to_hash(bib, key, dd_bib_extract(dtd))
|
92
|
-
end
|
93
|
-
clause.xpath("./clause").each do |c1|
|
94
|
-
key = c1&.at("./title")&.text&.downcase&.strip
|
95
|
-
next unless %w(contributor relation series).include? key
|
96
|
-
|
97
|
-
add_to_hash(bib, key, dl_bib_extract(c1, true))
|
98
|
-
end
|
99
|
-
dl_bib_extract_title(bib, clause, nested)
|
100
|
-
end
|
101
|
-
|
102
|
-
def dl_bib_extract_title(bib, clause, nested)
|
103
|
-
(!nested && clause.at("./title")) or return bib
|
104
|
-
title = clause.at("./title").remove.children.to_xml
|
105
|
-
bib["title"] = [bib["title"]] if bib["title"].is_a?(Hash) ||
|
106
|
-
bib["title"].is_a?(String)
|
107
|
-
bib["title"] = [] unless bib["title"]
|
108
|
-
bib["title"] << title if !title.empty?
|
109
|
-
bib
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|