metanorma-jis 0.1.3 → 0.1.4
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 +5 -2
- data/lib/metanorma/jis/front.rb +150 -68
- data/lib/metanorma/jis/version.rb +1 -1
- data/metanorma-jis.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: 8bcd50e7099ae02c6427bbca496f824f9429ba102e0d3b8df1bdb2f2fd6cb9a2
|
4
|
+
data.tar.gz: 760abf62f4c69e4f73f8fa9e2bfc696e431b6fc4859b79f103e4595d6883bb3e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d1128ad3d108ac316a8d4c324c69b2fa5328838b84a1ff4b59f7b01ab79464c7946839c151c1a0749c52bc4da406c5ab820f7be2aefb43a06c36464757ebf020
|
7
|
+
data.tar.gz: c06c9323c1e2af9c1fe73c5b2e43c68dcb81efebb4004bc8c6f88959b2bfc43cc3989366c92242eab460873e137419e7efa83c6b5732f2a33ee71ea9f46f0168
|
data/Gemfile
CHANGED
@@ -2,11 +2,14 @@ Encoding.default_external = Encoding::UTF_8
|
|
2
2
|
Encoding.default_internal = Encoding::UTF_8
|
3
3
|
|
4
4
|
source "https://rubygems.org"
|
5
|
+
git_source(:github) { |repo| "https://github.com/#{repo}" }
|
5
6
|
|
6
|
-
|
7
|
-
|
7
|
+
group :development, :test do
|
8
|
+
gem "rspec"
|
9
|
+
end
|
8
10
|
|
9
11
|
if File.exist? "Gemfile.devel"
|
10
12
|
eval File.read("Gemfile.devel"), nil, "Gemfile.devel" # rubocop:disable Security/Eval
|
11
13
|
end
|
12
14
|
|
15
|
+
gemspec
|
data/lib/metanorma/jis/front.rb
CHANGED
@@ -7,29 +7,49 @@ module Metanorma
|
|
7
7
|
super.merge("Japanese Industrial Standards" => "JIS")
|
8
8
|
end
|
9
9
|
|
10
|
-
def
|
10
|
+
def default_publisher
|
11
11
|
"JIS"
|
12
12
|
end
|
13
13
|
|
14
|
-
# Like the ISO code, but multilingual
|
14
|
+
# # Like the ISO code, but multilingual
|
15
|
+
# def metadata_author(node, xml)
|
16
|
+
# metadata_contrib_sdo(node, xml, JIS_HASH,
|
17
|
+
# { role: "author", sourcerole: "publisher" })
|
18
|
+
# node.attr("doctype") == "expert-commentary" and
|
19
|
+
# personal_author(node, xml)
|
20
|
+
# end
|
21
|
+
|
15
22
|
def metadata_author(node, xml)
|
16
|
-
|
17
|
-
|
23
|
+
org_contributor(node, xml,
|
24
|
+
{ source: ["publisher", "pub"], role: "author",
|
25
|
+
default: JIS_HASH })
|
18
26
|
node.attr("doctype") == "expert-commentary" and
|
19
27
|
personal_author(node, xml)
|
20
28
|
end
|
21
29
|
|
30
|
+
# def metadata_publisher(node, xml)
|
31
|
+
# metadata_contrib_sdo(node, xml, JIS_HASH,
|
32
|
+
# { role: "publisher", sourcerole: "publisher" })
|
33
|
+
# metadata_contrib_sdo(node, xml, nil,
|
34
|
+
# { role: "authorizer",
|
35
|
+
# sourcerole: "investigative-organization",
|
36
|
+
# desc: "Investigative organization" })
|
37
|
+
# metadata_contrib_sdo(node, xml, nil,
|
38
|
+
# { role: "authorizer",
|
39
|
+
# sourcerole: "investigative-committee",
|
40
|
+
# desc: "Investigative committee" })
|
41
|
+
# end
|
42
|
+
|
22
43
|
def metadata_publisher(node, xml)
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
desc: "Investigative committee" })
|
44
|
+
[{ source: ["publisher", "pub"], role: "publisher", default: JIS_HASH },
|
45
|
+
{ role: "authorizer",
|
46
|
+
source: ["investigative-organization"],
|
47
|
+
desc: "Investigative organization" },
|
48
|
+
{ role: "authorizer",
|
49
|
+
source: ["investigative-committee"],
|
50
|
+
desc: "Investigative committee" }].each do |o|
|
51
|
+
org_contributor(node, xml, o)
|
52
|
+
end
|
33
53
|
end
|
34
54
|
|
35
55
|
LANGS = %w(ja en).freeze
|
@@ -37,56 +57,111 @@ module Metanorma
|
|
37
57
|
JIS_HASH =
|
38
58
|
{ "ja" => "日本工業規格", "en" => "Japanese Industrial Standards" }.freeze
|
39
59
|
|
40
|
-
def metadata_contrib_sdo(node, xml, default_value, opt)
|
41
|
-
|
42
|
-
|
60
|
+
# def metadata_contrib_sdo(node, xml, default_value, opt)
|
61
|
+
# pub, default = metadata_contrib_extract(node, opt[:sourcerole], default_value)
|
62
|
+
# metadata_contrib_sdo_build(node, xml, pub, default, opt)
|
63
|
+
# end
|
64
|
+
#
|
65
|
+
# def metadata_contrib_sdo_build(node, xml, pub, default, opt)
|
66
|
+
# pub&.each do |p|
|
67
|
+
# xml.contributor do |c|
|
68
|
+
# c.role type: opt[:role] do |r|
|
69
|
+
# opt[:desc] and r.description opt[:desc]
|
70
|
+
# end
|
71
|
+
# c.organization do |a|
|
72
|
+
# organization(a, p, opt[:role] == "publisher", node, default)
|
73
|
+
# end
|
74
|
+
# end
|
75
|
+
# end
|
76
|
+
# end
|
77
|
+
#
|
78
|
+
# def metadata_contrib_extract(node, role, default_value)
|
79
|
+
# pub, default = multiling_docattr_csv(node, role, LANGS, default_value)
|
80
|
+
# a = node.attr("#{role}-abbr") and abbr = a # one abbrev for all languages
|
81
|
+
# [pub&.map { |p| { name: p, abbr: abbr } }, default]
|
82
|
+
# end
|
83
|
+
#
|
84
|
+
# def multiling_docattr(node, attr, langs)
|
85
|
+
# ret = node.attr(attr) and return ret
|
86
|
+
# ret = langs.each_with_object({}).each do |l, m|
|
87
|
+
# x = node.attr("#{attr}-#{l}") and m[l] = x
|
88
|
+
# end.compact
|
89
|
+
# ret.empty? and return nil
|
90
|
+
# ret
|
91
|
+
# end
|
92
|
+
#
|
93
|
+
# def multiling_docattr_csv(node, attr, langs, default)
|
94
|
+
# ret = multiling_docattr(node, attr, langs)
|
95
|
+
# not_found = ret.nil?
|
96
|
+
# ret ||= default
|
97
|
+
# ret &&= if ret.is_a?(Hash) then interleave_multiling_docattr(ret)
|
98
|
+
# else csv_split(ret)
|
99
|
+
# end
|
100
|
+
# [ret, not_found]
|
101
|
+
# end
|
102
|
+
#
|
103
|
+
# # TODO abort if CSV count different between different languages
|
104
|
+
# def interleave_multiling_docattr(ret)
|
105
|
+
# h = ret.transform_values { |v| csv_split(v) }
|
106
|
+
# h.each_with_object([]) do |(k, v), m|
|
107
|
+
# v.each_with_index do |v1, i|
|
108
|
+
# m[i] ||= {}
|
109
|
+
# m[i][k] = v1
|
110
|
+
# end
|
111
|
+
# end
|
112
|
+
# end
|
113
|
+
|
114
|
+
def org_organization(node, xml, org)
|
115
|
+
organization(xml, { name: org[:name], abbr: org[:abbr] }.compact,
|
116
|
+
node, !multiling_docattr(node, "publisher", "", LANGS))
|
117
|
+
org_address(org, xml)
|
118
|
+
org_logo(xml, org[:logo])
|
43
119
|
end
|
44
120
|
|
45
|
-
def
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
opt[:desc] and r.description opt[:desc]
|
50
|
-
end
|
51
|
-
c.organization do |a|
|
52
|
-
organization(a, p, opt[:role] == "publisher", node, default)
|
53
|
-
end
|
121
|
+
def org_attrs_parse(node, opts)
|
122
|
+
source = opts[:source]&.detect { |s| node.attr(s) }
|
123
|
+
source ||= opts[:source]&.detect do |s|
|
124
|
+
LANGS.detect { |l| node.attr("#{s}-#{l}") }
|
54
125
|
end
|
55
|
-
|
126
|
+
org_attrs_simple_parse(node, opts, source) ||
|
127
|
+
org_attrs_complex_parse(node, opts, source)
|
56
128
|
end
|
57
129
|
|
58
|
-
def
|
59
|
-
|
60
|
-
|
61
|
-
|
130
|
+
def org_attrs_complex_parse(node, opts, source)
|
131
|
+
i = 1
|
132
|
+
suffix = ""
|
133
|
+
ret = []
|
134
|
+
while multiling_docattr(node, source, suffix, LANGS)
|
135
|
+
ret << extract_org_attrs_complex(node, opts, source, suffix)
|
136
|
+
i += 1
|
137
|
+
suffix = "_#{i}"
|
138
|
+
end
|
139
|
+
ret
|
62
140
|
end
|
63
141
|
|
64
|
-
def multiling_docattr(node, attr, langs)
|
65
|
-
ret = node.attr(attr) and return ret
|
142
|
+
def multiling_docattr(node, attr, suffix, langs)
|
143
|
+
ret = node.attr(attr + suffix) and return ret
|
66
144
|
ret = langs.each_with_object({}).each do |l, m|
|
67
|
-
x = node.attr("#{attr}-#{l}") and m[l] = x
|
145
|
+
x = node.attr("#{attr}-#{l}#{suffix}") and m[l] = x
|
68
146
|
end.compact
|
69
147
|
ret.empty? and return nil
|
70
148
|
ret
|
71
149
|
end
|
72
150
|
|
73
|
-
def
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
[ret, not_found]
|
151
|
+
def extract_org_attrs_complex(node, opts, source, suffix)
|
152
|
+
{ name: multiling_docattr(node, source, suffix, LANGS),
|
153
|
+
role: opts[:role], desc: opts[:desc],
|
154
|
+
abbr: multiling_docattr(node, "#{source}-abbr", suffix, LANGS),
|
155
|
+
logo: multiling_docattr(node, "#{source}_logo", suffix, LANGS) }
|
156
|
+
.compact
|
157
|
+
.merge(extract_org_attrs_address(node, opts, suffix))
|
81
158
|
end
|
82
159
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
m[i] ||= {}
|
89
|
-
m[i][k] = v1
|
160
|
+
def extract_org_attrs_address(node, opts, suffix)
|
161
|
+
%w(address phone fax email uri).each_with_object({}) do |a, m|
|
162
|
+
opts[:source]&.each do |s|
|
163
|
+
p = multiling_docattr(node, "#{s}-#{a}", suffix, LANGS) and
|
164
|
+
m[a.to_sym] = p
|
90
165
|
end
|
91
166
|
end
|
92
167
|
end
|
@@ -104,37 +179,44 @@ module Metanorma
|
|
104
179
|
end
|
105
180
|
end
|
106
181
|
|
107
|
-
def organization(xml, org,
|
108
|
-
org.is_a?(Hash) or org = { name: org }
|
182
|
+
def organization(xml, org, node = nil, default_org = nil)
|
183
|
+
org.is_a?(Hash) && org[:name] or org = { name: org }
|
109
184
|
abbrevs = org_abbrev
|
110
185
|
name_str = org[:name].is_a?(Hash) ? org[:name]["en"] : org[:name]
|
111
186
|
n = abbrevs.invert[org[:name]] and org = { name: n, abbr: org[:name] }
|
112
187
|
multiling_noko_value(org[:name], "name", xml)
|
113
|
-
default_org && a = multiling_docattr(node, "subdivision", LANGS) and
|
188
|
+
default_org && a = multiling_docattr(node, "subdivision", "", LANGS) and
|
114
189
|
multiling_noko_value(a, "subdivision", xml)
|
115
190
|
abbr = org[:abbr]
|
116
191
|
abbr ||= org_abbrev[name_str]
|
117
192
|
default_org && b = node.attr("subdivision-abbr") and abbr = b
|
118
193
|
abbr and xml.abbreviation abbr
|
119
|
-
# is_pub && node and org_address(node, org) # should refactor into struct, like abbr
|
120
194
|
end
|
121
195
|
|
122
|
-
def metadata_copyright(node, xml)
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
196
|
+
# def metadata_copyright(node, xml)
|
197
|
+
# pub, default = metadata_contrib_extract(node, "copyright-holder", nil)
|
198
|
+
# if default
|
199
|
+
# pub, default = metadata_contrib_extract(node, "publisher", JIS_HASH)
|
200
|
+
# end
|
201
|
+
#
|
202
|
+
# pub&.each do |p|
|
203
|
+
# xml.copyright do |c|
|
204
|
+
# c.from (node.attr("copyright-year") || Date.today.year)
|
205
|
+
# c.owner do |owner|
|
206
|
+
# owner.organization do |o|
|
207
|
+
# organization(o, p, true, node, default)
|
208
|
+
# end
|
209
|
+
# end
|
210
|
+
# end
|
211
|
+
# end
|
212
|
+
# end
|
127
213
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
end
|
135
|
-
end
|
136
|
-
end
|
137
|
-
end
|
214
|
+
def copyright_parse(node)
|
215
|
+
opt = { source: ["copyright-holder", "publisher", "pub"],
|
216
|
+
role: "publisher", default: JIS_HASH }
|
217
|
+
ret = org_attrs_parse(node, opt)
|
218
|
+
ret.empty? and ret = [{ name: "-" }]
|
219
|
+
ret
|
138
220
|
end
|
139
221
|
|
140
222
|
def title(node, xml)
|
data/metanorma-jis.gemspec
CHANGED
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.test_files = `git ls-files -- {spec}/*`.split("\n")
|
31
31
|
spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
|
32
32
|
|
33
|
-
spec.add_dependency "metanorma-iso", "~> 2.
|
33
|
+
spec.add_dependency "metanorma-iso", "~> 2.6.0"
|
34
34
|
spec.add_dependency "pubid-jis"
|
35
35
|
|
36
36
|
spec.add_development_dependency "debug"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metanorma-jis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
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: metanorma-iso
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.
|
19
|
+
version: 2.6.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.
|
26
|
+
version: 2.6.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: pubid-jis
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|