metanorma-standoc 2.9.9 → 2.10.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/lib/metanorma/standoc/blocks.rb +0 -1
- data/lib/metanorma/standoc/cleanup_bibdata.rb +13 -0
- data/lib/metanorma/standoc/cleanup_boilerplate.rb +24 -3
- data/lib/metanorma/standoc/front.rb +17 -9
- data/lib/metanorma/standoc/isodoc.rng +1 -1
- data/lib/metanorma/standoc/ref.rb +4 -4
- data/lib/metanorma/standoc/ref_utility.rb +5 -4
- data/lib/metanorma/standoc/section.rb +1 -1
- data/lib/metanorma/standoc/utils.rb +16 -3
- data/lib/metanorma/standoc/version.rb +1 -1
- data/metanorma-standoc.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: be2ed59cc5913ed2c104fdd03479643b39183682a8e17d977d2afb6a6617cc1f
|
4
|
+
data.tar.gz: 38fa43ef39ca71510411b98a492d332f71d3ec4d234e4ccb3cbfc987c5d548bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5db76444b5bc527f3edc10723f26a0fb230e826473b1426f812494128966bf21391922859f35112546d29ab9fd66ee7d71f4d298736d6b67359a4df7d2ebf69
|
7
|
+
data.tar.gz: 7d3fc23fab73965d54475bbc7b0be492b746eb8f351cc4123ee4f8b8870bc4c572634e2f37340649ab2d529ff39054f1faccadc82707204e1c754911e863334a
|
@@ -212,7 +212,6 @@ module Metanorma
|
|
212
212
|
noko do |xml|
|
213
213
|
xml.passthrough **attr_code(formats:
|
214
214
|
node.attr("format") || "metanorma") do |p|
|
215
|
-
# p << @c.encode(@c.decode(node.content), :basic, :hexadecimal)
|
216
215
|
p << @c.encode(node.content, :basic, :hexadecimal)
|
217
216
|
end
|
218
217
|
end
|
@@ -7,6 +7,19 @@ module Metanorma
|
|
7
7
|
bibdata_embed_hdr_cleanup(xmldoc) # feeds bibdata_embed_id_cleanup
|
8
8
|
bibdata_embed_id_cleanup(xmldoc)
|
9
9
|
biblio_indirect_erefs(xmldoc, @internal_eref_namespaces&.uniq)
|
10
|
+
coverpage_images(xmldoc)
|
11
|
+
end
|
12
|
+
|
13
|
+
def coverpage_images(xmldoc)
|
14
|
+
%w(coverpage-image innercoverpage-image tocside-image
|
15
|
+
backpage-image).each do |n|
|
16
|
+
xmldoc.xpath("//bibdata/ext/#{n}").each do |x|
|
17
|
+
ins = add_misc_container(xmldoc)
|
18
|
+
ins << "<presentation-metadata><name>#{n}</name>" \
|
19
|
+
"<value>#{x.remove.children.to_xml}</value>" \
|
20
|
+
"</presentation-metadata>"
|
21
|
+
end
|
22
|
+
end
|
10
23
|
end
|
11
24
|
|
12
25
|
def bibdata_anchor_cleanup(xmldoc)
|
@@ -25,7 +25,7 @@ module Metanorma
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def norm_ref_boilerplate_insert_location(ref)
|
28
|
-
while (n = ref.parent) && %w(clause references).include?(n
|
28
|
+
while (n = ref.parent) && %w(clause references).include?(n.name)
|
29
29
|
n.elements.detect do |e|
|
30
30
|
!%(title references).include?(e.name) &&
|
31
31
|
!e.at("./self::clause[@type = 'boilerplate']") &&
|
@@ -113,6 +113,7 @@ module Metanorma
|
|
113
113
|
def merge_boilerplate_files(built_in, user_add)
|
114
114
|
%w(copyright license legal feedback).each do |w|
|
115
115
|
resolve_boilerplate_statement(built_in, user_add, w)
|
116
|
+
resolve_boilerplate_append(built_in, user_add, w)
|
116
117
|
end
|
117
118
|
to_xml(built_in)
|
118
119
|
end
|
@@ -126,6 +127,26 @@ module Metanorma
|
|
126
127
|
end
|
127
128
|
end
|
128
129
|
|
130
|
+
def resolve_boilerplate_append(built_in, user_add, statement)
|
131
|
+
b = user_add.at("./#{statement}-statement-append") or return
|
132
|
+
if a = built_in.at("./#{statement}-statement")
|
133
|
+
resolve_boilerplate_append1(a, b, statement)
|
134
|
+
else
|
135
|
+
b.name = "#{statement}-statement"
|
136
|
+
built_in << b
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
def resolve_boilerplate_append1(built_in, user_add, statement)
|
141
|
+
if user_add.at("./clause") then built_in << user_add.children
|
142
|
+
else
|
143
|
+
user_add.name = "clause"
|
144
|
+
user_add["id"].nil? || uuid?(user_add["id"]) and
|
145
|
+
user_add["id"] = "_boilerplate-#{statement}-statement-append"
|
146
|
+
built_in << user_add
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
129
150
|
def boilerplate_read(file)
|
130
151
|
ret = File.read(file, encoding: "UTF-8")
|
131
152
|
/\.adoc$/.match?(file) and
|
@@ -139,7 +160,6 @@ module Metanorma
|
|
139
160
|
boilerplate_file_restructure(file)
|
140
161
|
end
|
141
162
|
|
142
|
-
# If Asciidoctor, convert top clauses to tags and wrap in <boilerplate>
|
143
163
|
def boilerplate_file_restructure(file)
|
144
164
|
ret = adoc2xml(file, backend.to_sym)
|
145
165
|
boilerplate_xml_cleanup(ret)
|
@@ -165,7 +185,8 @@ module Metanorma
|
|
165
185
|
|
166
186
|
def boilerplate_top_elements(xml)
|
167
187
|
xml.elements.each do |e|
|
168
|
-
(t = e.at("./title") and
|
188
|
+
(t = e.at("./title") and
|
189
|
+
/-statement(-append)?$/.match?(t.text)) or next
|
169
190
|
e.name = t.remove.text
|
170
191
|
e.keys.each { |a| e.delete(a) } # rubocop:disable Style/HashEachMethods
|
171
192
|
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require "date"
|
2
|
-
require "nokogiri"
|
3
2
|
require "htmlentities"
|
4
3
|
require "pathname"
|
5
4
|
require_relative "./front_contributor"
|
@@ -91,9 +90,7 @@ module Metanorma
|
|
91
90
|
a == "date" || /^date_\d+$/.match(a) or next
|
92
91
|
type, date = node.attr(a).split(/ /, 2)
|
93
92
|
type or next
|
94
|
-
xml.date(type:)
|
95
|
-
d.on date
|
96
|
-
end
|
93
|
+
xml.date(type:) { |d| d.on date }
|
97
94
|
end
|
98
95
|
end
|
99
96
|
|
@@ -126,8 +123,7 @@ module Metanorma
|
|
126
123
|
|
127
124
|
def relation_normalise(type)
|
128
125
|
type.sub(/-by$/, "By").sub(/-of$/, "Of").sub(/-from$/, "From")
|
129
|
-
.sub(/-in$/, "In")
|
130
|
-
.sub(/^has-([a-z])/) { "has#{$1.upcase}" }
|
126
|
+
.sub(/-in$/, "In").sub(/^has-([a-z])/) { "has#{$1.upcase}" }
|
131
127
|
end
|
132
128
|
|
133
129
|
def metadata_getrelation(node, xml, type, desc = nil)
|
@@ -193,6 +189,7 @@ module Metanorma
|
|
193
189
|
metadata_flavor(node, ext)
|
194
190
|
metadata_committee(node, ext)
|
195
191
|
metadata_ics(node, ext)
|
192
|
+
metadata_coverpage_images(node, ext)
|
196
193
|
end
|
197
194
|
|
198
195
|
def metadata_doctype(node, xml)
|
@@ -220,9 +217,9 @@ module Metanorma
|
|
220
217
|
["en"].each do |lang|
|
221
218
|
at = { language: lang, format: "text/plain" }
|
222
219
|
xml.title **attr_code(at) do |t|
|
223
|
-
|
224
|
-
node.attr("title-en"))
|
225
|
-
node.title)
|
220
|
+
title = Metanorma::Utils::asciidoc_sub(node.attr("title") ||
|
221
|
+
node.attr("title-en"))
|
222
|
+
t << (title || node.title)
|
226
223
|
end
|
227
224
|
end
|
228
225
|
end
|
@@ -234,6 +231,17 @@ module Metanorma
|
|
234
231
|
xml.title v, { language: titlelang, format: "text/plain" }
|
235
232
|
end
|
236
233
|
end
|
234
|
+
|
235
|
+
def metadata_coverpage_images(node, xml)
|
236
|
+
%w(coverpage-image innercoverpage-image tocside-image
|
237
|
+
backpage-image).each do |n|
|
238
|
+
if a = node.attr(n)
|
239
|
+
xml.send n do |c|
|
240
|
+
a.split(",").each { |x| c.image src: x }
|
241
|
+
end
|
242
|
+
end
|
243
|
+
end
|
244
|
+
end
|
237
245
|
end
|
238
246
|
end
|
239
247
|
end
|
@@ -17,7 +17,7 @@
|
|
17
17
|
these elements; we just want one namespace for any child grammars
|
18
18
|
of this.
|
19
19
|
-->
|
20
|
-
<!-- VERSION v1.
|
20
|
+
<!-- VERSION v1.4.0 -->
|
21
21
|
<grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
22
22
|
<include href="reqt.rng"/>
|
23
23
|
<include href="basicdoc.rng">
|
@@ -110,10 +110,10 @@ module Metanorma
|
|
110
110
|
|
111
111
|
def refitem_render1(match, code, bib)
|
112
112
|
refitem_uri(code, bib)
|
113
|
-
|
114
|
-
docid(bib,
|
115
|
-
|
116
|
-
|
113
|
+
match[:usrlbl] and docid(bib, match[:usrlbl])
|
114
|
+
code[:usrlabel] and docid(bib, code[:usrlabel])
|
115
|
+
i = code[:id] and
|
116
|
+
docid(bib, /^\d+$/.match?(i) ? "[#{i}]" : i, code[:type])
|
117
117
|
code[:type] == "repo" and
|
118
118
|
bib.docidentifier code[:key], type: "repository"
|
119
119
|
end
|
@@ -39,11 +39,12 @@ module Metanorma
|
|
39
39
|
ref
|
40
40
|
end
|
41
41
|
|
42
|
-
def docid(bib, code)
|
42
|
+
def docid(bib, code, codetype = nil)
|
43
43
|
type, code1 = if /^\[\d+\]$|^\([^)]+\).*$/.match?(code)
|
44
44
|
["metanorma", mn_code(code)]
|
45
|
-
|
46
|
-
|
45
|
+
elsif %w(attachment repo path).include?(codetype)
|
46
|
+
[nil, code]
|
47
|
+
else @bibdb&.docid_type(code) || [nil, code]
|
47
48
|
end
|
48
49
|
code1.sub!(/^nofetch\((.+)\)$/, "\\1")
|
49
50
|
bib.docidentifier **attr_code(type:) do |d|
|
@@ -111,7 +112,7 @@ module Metanorma
|
|
111
112
|
line = CSV.parse_line(m[:keys], liberal_parsing: true) or return ret
|
112
113
|
line.size > 1 or return ret
|
113
114
|
ret[:id] = line.first
|
114
|
-
ret[m[:type].to_sym] = line[1
|
115
|
+
ret[m[:type].to_sym] = line[1..].map(&:strip)
|
115
116
|
ret
|
116
117
|
end
|
117
118
|
|
@@ -24,7 +24,7 @@ module Metanorma
|
|
24
24
|
ret1 = preface_main_filter(sectiontype_streamline(ret), node)
|
25
25
|
ret1 == "symbols and abbreviated terms" and return ret1
|
26
26
|
!level || node.level == 1 || node.attr("heading") or return nil
|
27
|
-
@seen_headers.include?
|
27
|
+
!node.attr("heading") && @seen_headers.include?(ret) and return nil
|
28
28
|
@seen_headers << ret unless ret1.nil?
|
29
29
|
@seen_headers_canonical << ret1 unless ret1.nil?
|
30
30
|
ret1
|
@@ -112,9 +112,17 @@ module Metanorma
|
|
112
112
|
def adoc2xml(text, flavour)
|
113
113
|
Nokogiri::XML(text).root and return text
|
114
114
|
f = @flush_caches ? ":flush-caches:\n" : ""
|
115
|
-
|
116
|
-
|
117
|
-
|
115
|
+
doc = <<~ADOC
|
116
|
+
= X
|
117
|
+
A
|
118
|
+
:semantic-metadata-headless: true
|
119
|
+
:no-isobib:
|
120
|
+
#{f}:novalid:
|
121
|
+
:!sectids:
|
122
|
+
|
123
|
+
#{text}
|
124
|
+
ADOC
|
125
|
+
c = Asciidoctor.convert(doc, backend: flavour, header_footer: true)
|
118
126
|
Nokogiri::XML(c).at("//xmlns:sections")
|
119
127
|
end
|
120
128
|
|
@@ -141,6 +149,11 @@ module Metanorma
|
|
141
149
|
@refids.include? ref
|
142
150
|
end
|
143
151
|
|
152
|
+
def uuid?(ref)
|
153
|
+
/^_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/
|
154
|
+
.match?(ref)
|
155
|
+
end
|
156
|
+
|
144
157
|
module_function :adoc2xml
|
145
158
|
|
146
159
|
class EmptyAttr
|
data/metanorma-standoc.gemspec
CHANGED
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.add_dependency "asciidoctor", "~> 2.0.0"
|
33
33
|
spec.add_dependency "crass", "~> 1.0.0"
|
34
34
|
spec.add_dependency "iev", "~> 0.3.0"
|
35
|
-
spec.add_dependency "isodoc", "~> 2.
|
35
|
+
spec.add_dependency "isodoc", "~> 2.12.1"
|
36
36
|
spec.add_dependency "metanorma", ">= 1.6.0"
|
37
37
|
spec.add_dependency "metanorma-plugin-datastruct", "~> 0.3.0"
|
38
38
|
spec.add_dependency "metanorma-plugin-glossarist", "~> 0.2.0"
|
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.
|
4
|
+
version: 2.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-11-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 2.
|
75
|
+
version: 2.12.1
|
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: 2.
|
82
|
+
version: 2.12.1
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: metanorma
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|