metanorma-standoc 2.6.3 → 2.7.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/Gemfile +6 -4
- data/lib/metanorma/standoc/front.rb +1 -0
- data/lib/metanorma/standoc/front_contributor.rb +124 -46
- data/lib/metanorma/standoc/version.rb +1 -1
- data/metanorma-standoc.gemspec +2 -2
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bf3149fa25a49d1321ac0d739d2bf4664f3470e1b5eb206c02495359dbc486c4
|
4
|
+
data.tar.gz: 6438c00017b8fb15e3f2b58eaf38853b0f912e92c47c89033054a37965af512c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb8a363500b7fedb8eba90780643a5d29d608403bde76237f346485ae3061026c541e69f7c217dd236fd87b0752eb6bee64881e026c22786eb387ccb39841b1b
|
7
|
+
data.tar.gz: f891e8cb87f09a829c88e567f0874f98ee1982771d8d0e8982d8d1972392bff65c33dfe18a1a2faa8166c1054d4e524b596a5e0f8fef9656b8a0dd245b76189b
|
data/Gemfile
CHANGED
@@ -4,10 +4,12 @@ Encoding.default_internal = Encoding::UTF_8
|
|
4
4
|
source "https://rubygems.org"
|
5
5
|
git_source(:github) { |repo| "https://github.com/#{repo}" }
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
if File.exist? 'Gemfile.devel'
|
10
|
-
eval File.read('Gemfile.devel'), nil, 'Gemfile.devel' # rubocop:disable Security/Eval
|
7
|
+
group :development, :test do
|
8
|
+
gem "rspec"
|
11
9
|
end
|
12
10
|
|
11
|
+
if File.exist? "Gemfile.devel"
|
12
|
+
eval File.read("Gemfile.devel"), nil, "Gemfile.devel" # rubocop:disable Security/Eval
|
13
|
+
end
|
13
14
|
|
15
|
+
gemspec
|
@@ -1,26 +1,21 @@
|
|
1
1
|
require "date"
|
2
|
-
require "nokogiri"
|
3
|
-
require "htmlentities"
|
4
|
-
require "pathname"
|
5
|
-
require "csv"
|
6
2
|
|
7
3
|
module Metanorma
|
8
4
|
module Standoc
|
9
5
|
module Front
|
10
6
|
def committee_component(compname, node, out)
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
**attr_code(number: node.attr("#{compname}-number_#{i}"),
|
18
|
-
type: node.attr("#{compname}-type_#{i}"))
|
7
|
+
i = 1
|
8
|
+
suffix = ""
|
9
|
+
while node.attr(compname + suffix)
|
10
|
+
out.send compname.gsub(/-/, "_"), node.attr(compname + suffix),
|
11
|
+
**attr_code(number: node.attr("#{compname}-number#{suffix}"),
|
12
|
+
type: node.attr("#{compname}-type#{suffix}"))
|
19
13
|
i += 1
|
14
|
+
suffix = "_#{i}"
|
20
15
|
end
|
21
16
|
end
|
22
17
|
|
23
|
-
def organization(org, orgname,
|
18
|
+
def organization(org, orgname, node = nil, default_org = nil)
|
24
19
|
abbrevs = org_abbrev
|
25
20
|
n = abbrevs.invert[orgname] and orgname = n
|
26
21
|
org.name orgname
|
@@ -28,32 +23,24 @@ module Metanorma
|
|
28
23
|
abbr = org_abbrev[orgname]
|
29
24
|
default_org && b = node.attr("subdivision-abbr") and abbr = b
|
30
25
|
abbr and org.abbreviation abbr
|
31
|
-
is_pub && node and org_address(node, org)
|
32
26
|
end
|
33
27
|
|
34
|
-
def org_address(
|
35
|
-
|
28
|
+
def org_address(org, xml)
|
29
|
+
p = org[:address] and xml.address do |ad|
|
36
30
|
ad.formattedAddress do |f|
|
37
|
-
f <<
|
31
|
+
f << p.gsub(/ \+\n/, "<br/>")
|
38
32
|
end
|
39
33
|
end
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
node.attr("pub-uri") and person.uri node.attr("pub-uri")
|
34
|
+
p = org[:phone] and xml.phone p
|
35
|
+
p = org[:fax] and xml.phone p, type: "fax"
|
36
|
+
p = org[:email] and xml.email p
|
37
|
+
p = org[:uri] and xml.uri p
|
45
38
|
end
|
46
39
|
|
47
40
|
def metadata_author(node, xml)
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
c.role type: "author"
|
52
|
-
c.organization do |a|
|
53
|
-
organization(a, p, false, node, !node.attr("publisher"))
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
41
|
+
org_contributor(node, xml,
|
42
|
+
{ source: ["publisher", "pub"], role: "author",
|
43
|
+
default: default_publisher })
|
57
44
|
personal_author(node, xml)
|
58
45
|
end
|
59
46
|
|
@@ -129,6 +116,7 @@ module Metanorma
|
|
129
116
|
xml.subdivision s
|
130
117
|
end
|
131
118
|
person_address(node, suffix, xml)
|
119
|
+
person_org_logo(node, suffix, xml)
|
132
120
|
end
|
133
121
|
|
134
122
|
def person_address(node, suffix, xml)
|
@@ -145,11 +133,19 @@ module Metanorma
|
|
145
133
|
|
146
134
|
def person_address_components(node, suffix, xml)
|
147
135
|
xml.address do |ad|
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
136
|
+
%w(street city state country postcode).each do |k|
|
137
|
+
s = node.attr("#{k}#{suffix}") and ad.send k, s
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
def person_org_logo(node, suffix, xml)
|
143
|
+
p = node.attr("affiliation_logo#{suffix}") and org_logo(xml, p)
|
144
|
+
end
|
145
|
+
|
146
|
+
def org_logo(xml, logo)
|
147
|
+
logo and xml.logo do |l|
|
148
|
+
l.image src: logo
|
153
149
|
end
|
154
150
|
end
|
155
151
|
|
@@ -162,27 +158,109 @@ module Metanorma
|
|
162
158
|
end
|
163
159
|
|
164
160
|
def metadata_publisher(node, xml)
|
165
|
-
|
166
|
-
|
161
|
+
o = { source: ["publisher", "pub"], role: "publisher",
|
162
|
+
default: default_publisher }
|
163
|
+
org_contributor(node, xml, o)
|
164
|
+
end
|
165
|
+
|
166
|
+
def metadata_sponsor(node, xml)
|
167
|
+
o = { source: ["sponsor"], role: "enabler" }
|
168
|
+
org_contributor(node, xml, o)
|
169
|
+
end
|
170
|
+
|
171
|
+
def org_contributor(node, xml, opts)
|
172
|
+
org_attrs_parse(node, opts).each do |o|
|
167
173
|
xml.contributor do |c|
|
168
|
-
c
|
174
|
+
org_contributor_role(c, o)
|
169
175
|
c.organization do |a|
|
170
|
-
|
176
|
+
org_organization(node, a, o)
|
171
177
|
end
|
172
178
|
end
|
173
179
|
end
|
174
180
|
end
|
175
181
|
|
182
|
+
def org_contributor_role(xml, org)
|
183
|
+
xml.role type: org[:role] do |r|
|
184
|
+
org[:desc] and r.description do |d|
|
185
|
+
d << org[:desc]
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
def org_organization(node, xml, org)
|
191
|
+
organization(xml, org[:name], node, !node.attr("publisher"))
|
192
|
+
org_address(org, xml)
|
193
|
+
org_logo(xml, org[:logo])
|
194
|
+
end
|
195
|
+
|
196
|
+
def org_attrs_parse(node, opts)
|
197
|
+
source = opts[:source]&.detect { |s| node.attr(s) }
|
198
|
+
org_attrs_simple_parse(node, opts, source) ||
|
199
|
+
org_attrs_complex_parse(node, opts, source)
|
200
|
+
end
|
201
|
+
|
202
|
+
def org_attrs_simple_parse(node, opts, source)
|
203
|
+
!source and return org_attrs_simple_parse_no_source(node, opts)
|
204
|
+
orgs = csv_split(node.attr(source))
|
205
|
+
orgs.size > 1 and return orgs.map do |o|
|
206
|
+
{ name: o, role: opts[:role], desc: opts[:desc] }
|
207
|
+
end
|
208
|
+
nil
|
209
|
+
end
|
210
|
+
|
211
|
+
def org_attrs_simple_parse_no_source(node, opts)
|
212
|
+
!opts[:default] && !opts[:name] and return []
|
213
|
+
[{ name: opts[:name] || opts[:default],
|
214
|
+
role: opts[:role], desc: opts[:desc] }
|
215
|
+
.compact.merge(extract_org_attrs_address(node, opts, ""))]
|
216
|
+
end
|
217
|
+
|
218
|
+
def org_attrs_complex_parse(node, opts, source)
|
219
|
+
i = 1
|
220
|
+
suffix = ""
|
221
|
+
ret = []
|
222
|
+
while node.attr(source + suffix)
|
223
|
+
ret << extract_org_attrs_complex(node, opts, source, suffix)
|
224
|
+
i += 1
|
225
|
+
suffix = "_#{i}"
|
226
|
+
end
|
227
|
+
ret
|
228
|
+
end
|
229
|
+
|
230
|
+
def extract_org_attrs_complex(node, opts, source, suffix)
|
231
|
+
{ name: node.attr(source + suffix),
|
232
|
+
role: opts[:role], desc: opts[:desc],
|
233
|
+
logo: node.attr("#{source}_logo#{suffix}") }.compact
|
234
|
+
.merge(extract_org_attrs_address(node, opts, suffix))
|
235
|
+
end
|
236
|
+
|
237
|
+
def extract_org_attrs_address(node, opts, suffix)
|
238
|
+
%w(address phone fax email uri).each_with_object({}) do |a, m|
|
239
|
+
opts[:source]&.each do |s|
|
240
|
+
p = node.attr("#{s}-#{a}#{suffix}") and
|
241
|
+
m[a.to_sym] = p
|
242
|
+
end
|
243
|
+
end
|
244
|
+
end
|
245
|
+
|
246
|
+
def copyright_parse(node)
|
247
|
+
opt = { source: ["copyright-holder", "publisher", "pub"],
|
248
|
+
role: "publisher", default: default_publisher }
|
249
|
+
ret = org_attrs_parse(node, opt)
|
250
|
+
ret.empty? and ret = [{ name: "-" }]
|
251
|
+
ret
|
252
|
+
end
|
253
|
+
|
176
254
|
def metadata_copyright(node, xml)
|
177
|
-
|
178
|
-
csv_split(pub || default_publisher || "-")&.each do |p|
|
255
|
+
copyright_parse(node).each do |p|
|
179
256
|
xml.copyright do |c|
|
180
257
|
c.from (node.attr("copyright-year") || Date.today.year)
|
181
|
-
p.
|
182
|
-
owner
|
183
|
-
organization
|
258
|
+
(p[:name].is_a?(String) && p[:name].match(/\p{L}/).nil?) or
|
259
|
+
c.owner do |owner|
|
260
|
+
owner.organization do |a|
|
261
|
+
org_organization(node, a, p)
|
262
|
+
end
|
184
263
|
end
|
185
|
-
end
|
186
264
|
end
|
187
265
|
end
|
188
266
|
end
|
data/metanorma-standoc.gemspec
CHANGED
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.add_dependency "addressable", "~> 2.8.0"
|
32
32
|
spec.add_dependency "asciidoctor", "~> 2.0.0"
|
33
33
|
spec.add_dependency "iev", "~> 0.3.0"
|
34
|
-
spec.add_dependency "isodoc", "~> 2.7.
|
34
|
+
spec.add_dependency "isodoc", "~> 2.7.1"
|
35
35
|
spec.add_dependency "metanorma", ">= 1.6.0"
|
36
36
|
spec.add_dependency "metanorma-plugin-datastruct", "~> 0.2.0"
|
37
37
|
spec.add_dependency "metanorma-plugin-glossarist", "~> 0.1.1"
|
@@ -41,7 +41,7 @@ Gem::Specification.new do |spec|
|
|
41
41
|
spec.add_dependency "asciimath2unitsml", "~> 0.4.0"
|
42
42
|
spec.add_dependency "concurrent-ruby"
|
43
43
|
spec.add_dependency "pngcheck"
|
44
|
-
spec.add_dependency "relaton-cli", "~> 1.
|
44
|
+
spec.add_dependency "relaton-cli", "~> 1.17.0"
|
45
45
|
spec.add_dependency "relaton-iev", "~> 1.1.5"
|
46
46
|
spec.add_dependency "unicode2latex", "~> 0.0.1"
|
47
47
|
|
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.7.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: 2023-11-
|
11
|
+
date: 2023-11-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 2.7.
|
61
|
+
version: 2.7.1
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 2.7.
|
68
|
+
version: 2.7.1
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: metanorma
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -184,14 +184,14 @@ dependencies:
|
|
184
184
|
requirements:
|
185
185
|
- - "~>"
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
version: 1.
|
187
|
+
version: 1.17.0
|
188
188
|
type: :runtime
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
192
|
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
|
-
version: 1.
|
194
|
+
version: 1.17.0
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
196
|
name: relaton-iev
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|