metanorma-iso 1.10.6 → 2.0.0
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/.gitignore +26 -0
- data/Makefile +1 -1
- data/lib/asciidoctor/iso/base.rb +2 -69
- data/lib/asciidoctor/iso/cleanup.rb +2 -175
- data/lib/asciidoctor/iso/converter.rb +2 -17
- data/lib/asciidoctor/iso/deprecated.rb +5 -0
- data/lib/asciidoctor/iso/front.rb +2 -169
- data/lib/asciidoctor/iso/front_id.rb +2 -224
- data/lib/asciidoctor/iso/section.rb +2 -48
- data/lib/asciidoctor/iso/validate.rb +2 -171
- data/lib/asciidoctor/iso/validate_image.rb +2 -96
- data/lib/asciidoctor/iso/validate_requirements.rb +2 -110
- data/lib/asciidoctor/iso/validate_section.rb +2 -246
- data/lib/asciidoctor/iso/validate_style.rb +2 -169
- data/lib/asciidoctor/iso/validate_title.rb +2 -104
- data/lib/isodoc/iso/html/htmlstyle.css +47 -0
- data/lib/isodoc/iso/html/isodoc.css +1327 -0
- data/lib/isodoc/iso/html/style-human.css +1010 -0
- data/lib/isodoc/iso/html/style-iso.css +1036 -0
- data/lib/isodoc/iso/html/wordstyle.css +1701 -0
- data/lib/isodoc/iso/html_convert.rb +6 -4
- data/lib/isodoc/iso/iso.amendment.xsl +96 -154
- data/lib/isodoc/iso/iso.international-standard.xsl +96 -154
- data/lib/metanorma/iso/base.rb +70 -0
- data/lib/{asciidoctor → metanorma}/iso/basicdoc.rng +0 -0
- data/lib/{asciidoctor → metanorma}/iso/biblio.rng +0 -0
- data/lib/{asciidoctor → metanorma}/iso/boilerplate-fr.xml +0 -0
- data/lib/{asciidoctor → metanorma}/iso/boilerplate.xml +0 -0
- data/lib/metanorma/iso/cleanup.rb +176 -0
- data/lib/metanorma/iso/converter.rb +18 -0
- data/lib/metanorma/iso/front.rb +170 -0
- data/lib/metanorma/iso/front_id.rb +225 -0
- data/lib/{asciidoctor → metanorma}/iso/isodoc.rng +29 -0
- data/lib/{asciidoctor → metanorma}/iso/isostandard-amd.rng +0 -0
- data/lib/{asciidoctor → metanorma}/iso/isostandard.rnc +0 -0
- data/lib/{asciidoctor → metanorma}/iso/isostandard.rng +0 -0
- data/lib/{asciidoctor → metanorma}/iso/reqt.rng +0 -0
- data/lib/metanorma/iso/section.rb +49 -0
- data/lib/metanorma/iso/validate.rb +172 -0
- data/lib/metanorma/iso/validate_image.rb +97 -0
- data/lib/metanorma/iso/validate_requirements.rb +111 -0
- data/lib/metanorma/iso/validate_section.rb +247 -0
- data/lib/metanorma/iso/validate_style.rb +170 -0
- data/lib/metanorma/iso/validate_title.rb +105 -0
- data/lib/metanorma/iso/version.rb +1 -1
- data/lib/metanorma-iso.rb +1 -1
- data/metanorma-iso.gemspec +1 -1
- data/spec/isodoc/ref_spec.rb +4 -2
- data/spec/{asciidoctor → metanorma}/amd_spec.rb +1 -1
- data/spec/{asciidoctor → metanorma}/base_spec.rb +1 -1
- data/spec/{asciidoctor → metanorma}/blank_spec.rb +1 -1
- data/spec/{asciidoctor → metanorma}/blocks_spec.rb +1 -1
- data/spec/{asciidoctor → metanorma}/cleanup_spec.rb +1 -1
- data/spec/{asciidoctor → metanorma}/inline_spec.rb +1 -1
- data/spec/{asciidoctor → metanorma}/lists_spec.rb +1 -1
- data/spec/{asciidoctor → metanorma}/refs_spec.rb +1 -1
- data/spec/{asciidoctor → metanorma}/section_spec.rb +1 -1
- data/spec/{asciidoctor → metanorma}/table_spec.rb +1 -1
- data/spec/{asciidoctor → metanorma}/validate_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- metadata +46 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b0023b1a033a6e07c83e9a8cfdd728953c7d8597e86f75beb7e1001b62d34639
|
4
|
+
data.tar.gz: c43bcc058f114a0223f165c94d11e490aa77782a45d044522a67203f2bd256ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d3ffdecf7a8a834e38a1ae0da77a0945638e07656fe95f0f66a28ab05fb9be467754235006a45c66382ac043c59d2989b3bfae232d7990397a07a06902791eb
|
7
|
+
data.tar.gz: f779a1138797276f389dbf08f88b4191d444fcab194d577a4baf77ac98d1bb1a63a113f101ad0a9b5a3a99ac2d6bb3170d2103cac8ecef2e61fb40fcd392cf2d
|
data/.gitignore
CHANGED
@@ -11,3 +11,29 @@ spec/examples/rice.xml
|
|
11
11
|
spec/examples/rice_files/
|
12
12
|
|
13
13
|
.rubocop-https--*
|
14
|
+
|
15
|
+
/Gemfile.devel
|
16
|
+
/Gemfile.lock
|
17
|
+
/spec/assets/iso.doc
|
18
|
+
/spec/assets/iso.html
|
19
|
+
/spec/assets/iso.pdf
|
20
|
+
/test.doc
|
21
|
+
/test.err
|
22
|
+
/test.html
|
23
|
+
/test.iso.sts.xml
|
24
|
+
/test.pdf
|
25
|
+
/test.presentation.xml
|
26
|
+
/test.sts.xml
|
27
|
+
/test.xml
|
28
|
+
/test_alt.html
|
29
|
+
/xref_error.adoc
|
30
|
+
/xref_error.alt.html
|
31
|
+
/xref_error.doc
|
32
|
+
/xref_error.err
|
33
|
+
/xref_error.html
|
34
|
+
/xref_error.iso.sts.xml
|
35
|
+
/xref_error.pdf
|
36
|
+
/xref_error.presentation.xml
|
37
|
+
/xref_error.rxl
|
38
|
+
/xref_error.sts.xml
|
39
|
+
/xref_error.xml
|
data/Makefile
CHANGED
@@ -14,7 +14,7 @@ TRANG_JAR := $(TOOLS_DIR)/trang.jar
|
|
14
14
|
XSDVIPATH := $(TOOLS_DIR)/xsdvi.jar
|
15
15
|
XSLT_FILE := $(TOOLS_DIR)/xs3pxsl
|
16
16
|
XSLT_FILE_MERGE := $(TOOLS_DIR)/xsdmerge.xsl
|
17
|
-
RNG_FILE_SRC := lib/
|
17
|
+
RNG_FILE_SRC := lib/metanorma/iso/isostandard.rng
|
18
18
|
XSD_FILE_DEST := ${CURDIR}/xsd_doc/isostandard.xsd
|
19
19
|
|
20
20
|
all: $(TXT) $(HTML) $(XML) $(NITS)
|
data/lib/asciidoctor/iso/base.rb
CHANGED
@@ -1,70 +1,3 @@
|
|
1
|
-
require "
|
2
|
-
require "
|
3
|
-
require "json"
|
4
|
-
require "pathname"
|
5
|
-
require "open-uri"
|
6
|
-
require "isodoc"
|
7
|
-
require "fileutils"
|
1
|
+
require "asciidoctor/iso/deprecated"
|
2
|
+
require "metanorma/iso/base"
|
8
3
|
|
9
|
-
module Asciidoctor
|
10
|
-
module ISO
|
11
|
-
class Converter < Standoc::Converter
|
12
|
-
XML_ROOT_TAG = "iso-standard".freeze
|
13
|
-
XML_NAMESPACE = "https://www.metanorma.org/ns/iso".freeze
|
14
|
-
|
15
|
-
def html_converter(node)
|
16
|
-
IsoDoc::Iso::HtmlConvert.new(html_extract_attributes(node))
|
17
|
-
end
|
18
|
-
|
19
|
-
def html_converter_alt(node)
|
20
|
-
IsoDoc::Iso::HtmlConvert.new(html_extract_attributes(node)
|
21
|
-
.merge(alt: true))
|
22
|
-
end
|
23
|
-
|
24
|
-
def doc_converter(node)
|
25
|
-
IsoDoc::Iso::WordConvert.new(doc_extract_attributes(node))
|
26
|
-
end
|
27
|
-
|
28
|
-
def pdf_converter(node)
|
29
|
-
return nil if node.attr("no-pdf")
|
30
|
-
|
31
|
-
IsoDoc::Iso::PdfConvert.new(pdf_extract_attributes(node))
|
32
|
-
end
|
33
|
-
|
34
|
-
def sts_converter(node)
|
35
|
-
return nil if node.attr("no-pdf")
|
36
|
-
|
37
|
-
IsoDoc::Iso::StsConvert.new(html_extract_attributes(node))
|
38
|
-
end
|
39
|
-
|
40
|
-
def presentation_xml_converter(node)
|
41
|
-
IsoDoc::Iso::PresentationXMLConvert.new(html_extract_attributes(node))
|
42
|
-
end
|
43
|
-
|
44
|
-
def init(node)
|
45
|
-
super
|
46
|
-
@amd = %w(amendment technical-corrigendum).include? doctype(node)
|
47
|
-
@vocab = node.attr("docsubtype") == "vocabulary"
|
48
|
-
end
|
49
|
-
|
50
|
-
def ol_attrs(node)
|
51
|
-
attr_code(keep_attrs(node)
|
52
|
-
.merge(id: ::Metanorma::Utils::anchor_or_uuid(node)))
|
53
|
-
end
|
54
|
-
|
55
|
-
def outputs(node, ret)
|
56
|
-
File.open("#{@filename}.xml", "w:UTF-8") { |f| f.write(ret) }
|
57
|
-
presentation_xml_converter(node).convert("#{@filename}.xml")
|
58
|
-
html_converter_alt(node).convert("#{@filename}.presentation.xml",
|
59
|
-
nil, false, "#{@filename}_alt.html")
|
60
|
-
html_converter(node).convert("#{@filename}.presentation.xml",
|
61
|
-
nil, false, "#{@filename}.html")
|
62
|
-
doc_converter(node).convert("#{@filename}.presentation.xml",
|
63
|
-
nil, false, "#{@filename}.doc")
|
64
|
-
pdf_converter(node)&.convert("#{@filename}.presentation.xml",
|
65
|
-
nil, false, "#{@filename}.pdf")
|
66
|
-
# sts_converter(node)&.convert(@filename + ".xml")
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
@@ -1,176 +1,3 @@
|
|
1
|
-
require "
|
2
|
-
require "
|
3
|
-
require "htmlentities"
|
4
|
-
require "json"
|
5
|
-
require "pathname"
|
1
|
+
require "asciidoctor/iso/deprecated"
|
2
|
+
require "metanorma/iso/cleanup"
|
6
3
|
|
7
|
-
module Asciidoctor
|
8
|
-
module ISO
|
9
|
-
class Converter < Standoc::Converter
|
10
|
-
PRE_NORMREF_FOOTNOTES = "//preface//fn | "\
|
11
|
-
"//clause[@type = 'scope']//fn".freeze
|
12
|
-
|
13
|
-
NORMREF_FOOTNOTES =
|
14
|
-
"//references[@normative = 'true']//fn".freeze
|
15
|
-
|
16
|
-
POST_NORMREF_FOOTNOTES =
|
17
|
-
"//sections//clause[not(@type = 'scope')]//fn | "\
|
18
|
-
"//annex//fn | "\
|
19
|
-
"//references[@normative = 'false']//fn".freeze
|
20
|
-
|
21
|
-
def other_footnote_renumber(xmldoc)
|
22
|
-
seen = {}
|
23
|
-
i = 0
|
24
|
-
[PRE_NORMREF_FOOTNOTES, NORMREF_FOOTNOTES,
|
25
|
-
POST_NORMREF_FOOTNOTES].each do |xpath|
|
26
|
-
xmldoc.xpath(xpath).each do |fn|
|
27
|
-
i, seen = other_footnote_renumber1(fn, i, seen)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
def id_prefix(prefix, id)
|
33
|
-
# we're just inheriting the prefixes from parent doc
|
34
|
-
return id.text if @amd
|
35
|
-
|
36
|
-
prefix.join("/") + (id.text.match?(%{^/}) ? "" : " ") + id.text
|
37
|
-
end
|
38
|
-
|
39
|
-
def get_id_prefix(xmldoc)
|
40
|
-
prefix = []
|
41
|
-
xmldoc.xpath("//bibdata/contributor[role/@type = 'publisher']"\
|
42
|
-
"/organization").each do |x|
|
43
|
-
x1 = x.at("abbreviation")&.text || x.at("name")&.text
|
44
|
-
(x1 == "ISO" and prefix.unshift("ISO")) or prefix << x1
|
45
|
-
end
|
46
|
-
prefix
|
47
|
-
end
|
48
|
-
|
49
|
-
# ISO as a prefix goes first
|
50
|
-
def docidentifier_cleanup(xmldoc)
|
51
|
-
prefix = get_id_prefix(xmldoc)
|
52
|
-
id = xmldoc.at("//bibdata/docidentifier[@type = 'ISO']") or return
|
53
|
-
id.content = id_prefix(prefix, id)
|
54
|
-
id = xmldoc.at("//bibdata/ext/structuredidentifier/project-number") and
|
55
|
-
id.content = id_prefix(prefix, id)
|
56
|
-
id = xmldoc.at("//bibdata/docidentifier[@type = 'iso-with-lang']") and
|
57
|
-
id.content = id_prefix(prefix, id)
|
58
|
-
id = xmldoc.at("//bibdata/docidentifier[@type = 'iso-reference']") and
|
59
|
-
id.content = id_prefix(prefix, id)
|
60
|
-
end
|
61
|
-
|
62
|
-
def format_ref(ref, type)
|
63
|
-
ref = ref.sub(/ \(All Parts\)/i, "")
|
64
|
-
super
|
65
|
-
end
|
66
|
-
|
67
|
-
TERM_CLAUSE =
|
68
|
-
"//sections//terms | "\
|
69
|
-
"//sections//clause[descendant::terms][not(descendant::definitions)]"
|
70
|
-
.freeze
|
71
|
-
|
72
|
-
PUBLISHER = "./contributor[role/@type = 'publisher']/organization".freeze
|
73
|
-
|
74
|
-
OTHERIDS = "@type = 'DOI' or @type = 'metanorma' or @type = 'ISSN' or "\
|
75
|
-
"@type = 'ISBN'".freeze
|
76
|
-
|
77
|
-
def pub_class(bib)
|
78
|
-
return 1 if bib.at("#{PUBLISHER}[abbreviation = 'ISO']")
|
79
|
-
return 1 if bib.at("#{PUBLISHER}[name = 'International Organization "\
|
80
|
-
"for Standardization']")
|
81
|
-
return 2 if bib.at("#{PUBLISHER}[abbreviation = 'IEC']")
|
82
|
-
return 2 if bib.at("#{PUBLISHER}[name = 'International "\
|
83
|
-
"Electrotechnical Commission']")
|
84
|
-
return 3 if bib.at("./docidentifier[@type][not(#{OTHERIDS})]")
|
85
|
-
|
86
|
-
4
|
87
|
-
end
|
88
|
-
|
89
|
-
def sort_biblio(bib)
|
90
|
-
bib.sort do |a, b|
|
91
|
-
sort_biblio_key(a) <=> sort_biblio_key(b)
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
# TODO sort by authors
|
96
|
-
# sort by: doc class (ISO, IEC, other standard (not DOI &c), other
|
97
|
-
# then standard class (docid class other than DOI &c)
|
98
|
-
# then docnumber if present, numeric sort
|
99
|
-
# else alphanumeric metanorma id (abbreviation)
|
100
|
-
# then doc part number if present, numeric sort
|
101
|
-
# then doc id (not DOI &c)
|
102
|
-
# then title
|
103
|
-
def sort_biblio_key(bib)
|
104
|
-
pubclass = pub_class(bib)
|
105
|
-
num = bib&.at("./docnumber")&.text
|
106
|
-
id = bib&.at("./docidentifier[not(#{OTHERIDS})]")
|
107
|
-
metaid = bib&.at("./docidentifier[@type = 'metanorma']")&.text
|
108
|
-
abbrid = metaid unless /^\[\d+\]$/.match?(metaid)
|
109
|
-
/\d-(?<partid>\d+)/ =~ id&.text
|
110
|
-
type = id["type"] if id
|
111
|
-
title = bib&.at("./title[@type = 'main']")&.text ||
|
112
|
-
bib&.at("./title")&.text || bib&.at("./formattedref")&.text
|
113
|
-
"#{pubclass} :: #{type} :: "\
|
114
|
-
"#{num.nil? ? abbrid : sprintf('%09d', num.to_i)} :: "\
|
115
|
-
"#{sprintf('%09d', partid.to_i)} :: #{id&.text} :: #{title}"
|
116
|
-
end
|
117
|
-
|
118
|
-
def sections_cleanup(xml)
|
119
|
-
super
|
120
|
-
return unless @amd
|
121
|
-
|
122
|
-
xml.xpath("//*[@inline-header]").each do |h|
|
123
|
-
h.delete("inline-header")
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
def boilerplate_file(_xmldoc)
|
128
|
-
file = @lang == "fr" ? "boilerplate-fr.xml" : "boilerplate.xml"
|
129
|
-
File.join(@libdir, file)
|
130
|
-
end
|
131
|
-
|
132
|
-
def footnote_cleanup(xmldoc)
|
133
|
-
unpub_footnotes(xmldoc)
|
134
|
-
super
|
135
|
-
end
|
136
|
-
|
137
|
-
def unpub_footnotes(xmldoc)
|
138
|
-
xmldoc.xpath("//bibitem/note[@type = 'Unpublished-Status']").each do |n|
|
139
|
-
id = n.parent["id"]
|
140
|
-
e = xmldoc.at("//eref[@bibitemid = '#{id}']") or next
|
141
|
-
fn = n.children.to_xml
|
142
|
-
n&.elements&.first&.name == "p" or fn = "<p>#{fn}</p>"
|
143
|
-
e.next = "<fn>#{fn}</fn>"
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
def bibitem_cleanup(xmldoc)
|
148
|
-
super
|
149
|
-
unpublished_note(xmldoc)
|
150
|
-
end
|
151
|
-
|
152
|
-
def unpublished_note(xmldoc)
|
153
|
-
xmldoc.xpath("//bibitem[not(note[@type = 'Unpublished-Status'])]")
|
154
|
-
.each do |b|
|
155
|
-
next if pub_class(b) > 2
|
156
|
-
next unless (s = b.at("./status/stage")) && (s.text.to_i < 60)
|
157
|
-
|
158
|
-
id = b.at("docidentifier").text
|
159
|
-
b.at("./language | ./script | ./abstract | ./status")
|
160
|
-
.previous = %(<note type="Unpublished-Status">
|
161
|
-
<p>#{@i18n.under_preparation.sub(/%/, id)}</p></note>)
|
162
|
-
end
|
163
|
-
end
|
164
|
-
|
165
|
-
def termdef_boilerplate_insert(xmldoc, isodoc, once = false)
|
166
|
-
once = true
|
167
|
-
super
|
168
|
-
end
|
169
|
-
|
170
|
-
def term_defs_boilerplate_cont(src, term, isodoc)
|
171
|
-
@vocab and src.empty? and return
|
172
|
-
super
|
173
|
-
end
|
174
|
-
end
|
175
|
-
end
|
176
|
-
end
|
@@ -1,18 +1,3 @@
|
|
1
|
-
require "asciidoctor"
|
2
|
-
require "metanorma
|
3
|
-
require "metanorma/iso/version"
|
4
|
-
require "asciidoctor/iso/base"
|
5
|
-
require "asciidoctor/iso/front"
|
6
|
-
require "asciidoctor/iso/section"
|
7
|
-
require "asciidoctor/iso/validate"
|
8
|
-
require "asciidoctor/iso/cleanup"
|
1
|
+
require "asciidoctor/iso/deprecated"
|
2
|
+
require "metanorma/iso/converter"
|
9
3
|
|
10
|
-
module Asciidoctor
|
11
|
-
module ISO
|
12
|
-
# A {Converter} implementation that generates ISO output, and a document
|
13
|
-
# schema encapsulation of the document for validation
|
14
|
-
class Converter < ::Asciidoctor::Standoc::Converter
|
15
|
-
register_for "iso"
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -0,0 +1,5 @@
|
|
1
|
+
warn "Please replace your references to Asciidoctor::ISO with Metanorma::ISO and your instances of require 'asciidoctor/iso' with require 'metanorma/iso'"
|
2
|
+
|
3
|
+
exit 127 if ENV['METANORMA_DEPRECATION_FAIL']
|
4
|
+
|
5
|
+
Asciidoctor::ISO = Metanorma::ISO unless defined? Asciidoctor::ISO
|
@@ -1,170 +1,3 @@
|
|
1
|
-
require "
|
2
|
-
require "
|
3
|
-
require "htmlentities"
|
4
|
-
require "json"
|
5
|
-
require "pathname"
|
6
|
-
require "open-uri"
|
7
|
-
require_relative "front_id"
|
1
|
+
require "asciidoctor/iso/deprecated"
|
2
|
+
require "metanorma/iso/front"
|
8
3
|
|
9
|
-
module Asciidoctor
|
10
|
-
module ISO
|
11
|
-
class Converter < Standoc::Converter
|
12
|
-
def metadata_ext(node, xml)
|
13
|
-
super
|
14
|
-
structured_id(node, xml)
|
15
|
-
xml.stagename stage_name(get_stage(node), get_substage(node),
|
16
|
-
doctype(node), node.attr("iteration"))
|
17
|
-
@amd && a = node.attr("updates-document-type") and
|
18
|
-
xml.updates_document_type a
|
19
|
-
end
|
20
|
-
|
21
|
-
def metadata_subdoctype(node, xml)
|
22
|
-
super
|
23
|
-
a = node.attr("horizontal") and xml.horizontal a
|
24
|
-
end
|
25
|
-
|
26
|
-
def org_abbrev
|
27
|
-
{ "International Organization for Standardization" => "ISO",
|
28
|
-
"International Electrotechnical Commission" => "IEC" }
|
29
|
-
end
|
30
|
-
|
31
|
-
def metadata_author(node, xml)
|
32
|
-
publishers = node.attr("publisher") || "ISO"
|
33
|
-
csv_split(publishers).each do |p|
|
34
|
-
xml.contributor do |c|
|
35
|
-
c.role **{ type: "author" }
|
36
|
-
c.organization do |a|
|
37
|
-
organization(a, p, false, node, !node.attr("publisher"))
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def metadata_publisher(node, xml)
|
44
|
-
publishers = node.attr("publisher") || "ISO"
|
45
|
-
csv_split(publishers).each do |p|
|
46
|
-
xml.contributor do |c|
|
47
|
-
c.role **{ type: "publisher" }
|
48
|
-
c.organization do |a|
|
49
|
-
organization(a, p, true, node, !node.attr("publisher"))
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
def metadata_copyright(node, xml)
|
56
|
-
publishers = node.attr("copyright-holder") || node.attr("publisher") ||
|
57
|
-
"ISO"
|
58
|
-
csv_split(publishers).each do |p|
|
59
|
-
xml.copyright do |c|
|
60
|
-
c.from (node.attr("copyright-year") || Date.today.year)
|
61
|
-
c.owner do |owner|
|
62
|
-
owner.organization do |o|
|
63
|
-
organization(
|
64
|
-
o, p, true, node,
|
65
|
-
!(node.attr("copyright-holder") || node.attr("publisher"))
|
66
|
-
)
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
def metadata_status(node, xml)
|
74
|
-
stage = get_stage(node)
|
75
|
-
substage = get_substage(node)
|
76
|
-
xml.status do |s|
|
77
|
-
s.stage stage, **attr_code(abbreviation: cover_stage_abbr(node))
|
78
|
-
s.substage substage
|
79
|
-
node.attr("iteration") && (s.iteration node.attr("iteration"))
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
def metadata_committee(node, xml)
|
84
|
-
xml.editorialgroup do |a|
|
85
|
-
committee_component("technical-committee", node, a)
|
86
|
-
committee_component("subcommittee", node, a)
|
87
|
-
committee_component("workgroup", node, a)
|
88
|
-
node.attr("secretariat") && a.secretariat(node.attr("secretariat"))
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
def title_intro(node, xml, lang, at)
|
93
|
-
return unless node.attr("title-intro-#{lang}")
|
94
|
-
|
95
|
-
xml.title(**attr_code(at.merge(type: "title-intro"))) do |t1|
|
96
|
-
t1 << Metanorma::Utils::asciidoc_sub(node.attr("title-intro-#{lang}"))
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
def title_main(node, xml, lang, at)
|
101
|
-
xml.title **attr_code(at.merge(type: "title-main")) do |t1|
|
102
|
-
t1 << Metanorma::Utils::asciidoc_sub(node.attr("title-main-#{lang}"))
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
def title_part(node, xml, lang, at)
|
107
|
-
return unless node.attr("title-part-#{lang}")
|
108
|
-
|
109
|
-
xml.title(**attr_code(at.merge(type: "title-part"))) do |t1|
|
110
|
-
t1 << Metanorma::Utils::asciidoc_sub(node.attr("title-part-#{lang}"))
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
def title_amd(node, xml, lang, at)
|
115
|
-
return unless node.attr("title-amendment-#{lang}")
|
116
|
-
|
117
|
-
xml.title(**attr_code(at.merge(type: "title-amd"))) do |t1|
|
118
|
-
t1 << Metanorma::Utils::asciidoc_sub(
|
119
|
-
node.attr("title-amendment-#{lang}"),
|
120
|
-
)
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
def title_full(node, xml, lang, at)
|
125
|
-
title = node.attr("title-main-#{lang}")
|
126
|
-
intro = node.attr("title-intro-#{lang}")
|
127
|
-
part = node.attr("title-part-#{lang}")
|
128
|
-
amd = node.attr("title-amendment-#{lang}")
|
129
|
-
title = "#{intro} -- #{title}" if intro
|
130
|
-
title = "#{title} -- #{part}" if part
|
131
|
-
title = "#{title} -- #{amd}" if amd && @amd
|
132
|
-
xml.title **attr_code(at.merge(type: "main")) do |t1|
|
133
|
-
t1 << Metanorma::Utils::asciidoc_sub(title)
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
def title(node, xml)
|
138
|
-
["en", "fr"].each do |lang|
|
139
|
-
at = { language: lang, format: "text/plain" }
|
140
|
-
title_full(node, xml, lang, at)
|
141
|
-
title_intro(node, xml, lang, at)
|
142
|
-
title_main(node, xml, lang, at)
|
143
|
-
title_part(node, xml, lang, at)
|
144
|
-
title_amd(node, xml, lang, at) if @amd
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
def relaton_relations
|
149
|
-
super + %w(obsoletes successor-of manifestation-of related annotation-of)
|
150
|
-
end
|
151
|
-
|
152
|
-
def relaton_relation_descriptions
|
153
|
-
super.merge(
|
154
|
-
"amends" => "updates", "revises" => "updates",
|
155
|
-
"replaces" => "obsoletes",
|
156
|
-
"supersedes" => "obsoletes",
|
157
|
-
"corrects" => "updates",
|
158
|
-
"informatively-cited-in" => "isCitedIn",
|
159
|
-
"informatively-cites" => "cites",
|
160
|
-
"normatively-cited in" => "isCitedIn",
|
161
|
-
"normatively-cites" => "cites",
|
162
|
-
"identical-adopted-from" => "adoptedFrom",
|
163
|
-
"modified-adopted-from" => "adoptedFrom",
|
164
|
-
"related-directive" => "related",
|
165
|
-
"related-mandate" => "related",
|
166
|
-
)
|
167
|
-
end
|
168
|
-
end
|
169
|
-
end
|
170
|
-
end
|