relaton-render 0.5.7 → 0.5.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.adoc +3 -2
- data/lib/relaton/render/fields/fields.rb +20 -34
- data/lib/relaton/render/parse/parse.rb +3 -2
- data/lib/relaton/render/parse/parse_contributors.rb +11 -1
- data/lib/relaton/render/parse/parse_extract.rb +8 -14
- data/lib/relaton/render/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4279b77e453986c5068226fd078df3c97746d9ebbbe04a0b1217eccb27804030
|
4
|
+
data.tar.gz: c2340eca6f974d0fca1f6120fb50d1092dc9159a7d658734e3f750cf149b6692
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f7ecf68117575c5b55b99bbad99a9eea91263ce61224253ee9149de113ce6edf66bd543dfb8d475a4ab4599572bd2701edc60c31576fa6d1475fb73cb63c2aff
|
7
|
+
data.tar.gz: c9a1452e1fb08dbc7d910a63b25b3e453919b5d3d1ce7cc0c943bf1adb3f6e6a9f6d638ca1be814a9ec836c77b2e6cc66be1a3be34f733cc2aedbfad45510df3
|
data/README.adoc
CHANGED
@@ -155,14 +155,15 @@ drawn from the bibliographic item:
|
|
155
155
|
| place | ./place | | Y |
|
156
156
|
| publisher | ./contributor[role/@type = 'publisher']/organization/name | | Y |
|
157
157
|
| distributor | ./contributor[role/@type = 'distributor']/organization/name | | Y |
|
158
|
+
| authorizer | ./contributor[role/@type = 'authorizer']/organization/name \| ./contributor[role/@type = 'publisher']/organization/name | | Y |
|
158
159
|
| authoritative_identifier | ./docidentifier[not(@type = 'metanorma' or @type = 'ordinal' or @type = 'ISBN' or @type = 'ISSN' or @type = 'DOI')] | Y | |
|
159
160
|
| other_identifier | ./docidentifier[@type = 'ISBN' or @type = 'ISSN' or @type = 'DOI'] | Y | | By default, each such identifier is prefixed with its type and colon
|
160
161
|
| status | ./status | | | Rendering varies by flavour
|
161
162
|
| uri | ./uri[@type = 'citation' or @type = 'uri' or @type = 'src' or true] | | | If multiples, prioritise language match. Always exclude DOI: that is not where the resource is available from
|
162
163
|
| access_location | ./accessLocation | | Y |
|
163
164
|
| extent | ./extent | Y | | Render with standard abbreviations for pp, vols, with n-dash, with delimiting of multiple locations
|
164
|
-
| creatornames | ./contributor[role/@type = 'author'] \| ./contributor[role/@type = 'performer'] \| ./contributor[role/@type = 'adapter'] \| ./contributor[role/@type = 'translator'] \| ./contributor[role/@type = 'editor'] \| ./contributor[role/@type = 'distributor'] \| ./contributor | Y | | <<nametemplate,`nametemplate`>> applied to each name; joining template from internationalisation applied to multiple names
|
165
|
-
| authorcite | ./contributor[role/@type = 'author'] \| ./contributor[role/@type = 'performer'] \| ./contributor[role/@type = 'adapter'] \| ./contributor[role/@type = 'translator'] \| ./contributor[role/@type = 'editor'] \| ./contributor[role/@type = 'distributor'] \| ./contributor | Y | | <<authorcitetemplate,`authorcitetemplate`>> applied to each name; joining template from internationalisation applied to multiple names
|
165
|
+
| creatornames | ./contributor[role/@type = 'author'] \| ./contributor[role/@type = 'performer'] \| ./contributor[role/@type = 'adapter'] \| ./contributor[role/@type = 'translator'] \| ./contributor[role/@type = 'editor'] \| ./contributor[role/@type = 'distributor'] \| ./contributor[role/@type = 'authorizer'] \| ./contributor | Y | | <<nametemplate,`nametemplate`>> applied to each name; joining template from internationalisation applied to multiple names
|
166
|
+
| authorcite | ./contributor[role/@type = 'author'] \| ./contributor[role/@type = 'performer'] \| ./contributor[role/@type = 'adapter'] \| ./contributor[role/@type = 'translator'] \| ./contributor[role/@type = 'editor'] \| ./contributor[role/@type = 'distributor'] \| ./contributor[role/@type = 'authorizer'] \| ./contributor | Y | | <<authorcitetemplate,`authorcitetemplate`>> applied to each name; joining template from internationalisation applied to multiple names
|
166
167
|
| role | ./contributor[role/description] \| ./contributor[role/@type] | | |
|
167
168
|
| date | ./date[@type = 'issued'] \| ./date[@type = 'circulated'] \| ./date | | Y |
|
168
169
|
| date_updated | ./date[@type = 'updated'] | | Y |
|
@@ -17,7 +17,8 @@ module Relaton
|
|
17
17
|
|
18
18
|
def name_fields_format(hash)
|
19
19
|
[%i(creatornames creators), %i(host_creatornames host_creators),
|
20
|
-
%i(publisher publisher_raw), %i(distributor distributor_raw)
|
20
|
+
%i(publisher publisher_raw), %i(distributor distributor_raw),
|
21
|
+
%i(authorizer authorizer_raw)]
|
21
22
|
.each do |k|
|
22
23
|
hash[k[0]] = nameformat(hash[k[1]])
|
23
24
|
end
|
@@ -62,8 +63,7 @@ module Relaton
|
|
62
63
|
|
63
64
|
# TODO is not being i18n-alised
|
64
65
|
def mediumformat(hash)
|
65
|
-
|
66
|
-
|
66
|
+
hash.nil? and return nil
|
67
67
|
%w(content genre form carrier size scale).each_with_object([]) do |i, m|
|
68
68
|
m << hash[i] if hash[i]
|
69
69
|
m
|
@@ -81,8 +81,7 @@ module Relaton
|
|
81
81
|
end
|
82
82
|
|
83
83
|
def nameformat(names)
|
84
|
-
|
85
|
-
|
84
|
+
names.nil? and return names
|
86
85
|
parts = %i(surname initials given middle nonpersonal)
|
87
86
|
names_out = names.each_with_object({}) do |n, m|
|
88
87
|
parts.each do |i|
|
@@ -94,8 +93,7 @@ module Relaton
|
|
94
93
|
end
|
95
94
|
|
96
95
|
def authorciteformat(names)
|
97
|
-
|
98
|
-
|
96
|
+
names.nil? || @r.authorcitetemplate.nil? and return names
|
99
97
|
parts = %i(surname initials given middle nonpersonal)
|
100
98
|
names_out = names.each_with_object({}) do |n, m|
|
101
99
|
parts.each do |i|
|
@@ -107,9 +105,9 @@ module Relaton
|
|
107
105
|
end
|
108
106
|
|
109
107
|
def role_inflect(contribs, role)
|
110
|
-
|
111
|
-
%w(author publisher
|
112
|
-
|
108
|
+
role.nil? || contribs.size.zero? ||
|
109
|
+
%w(author publisher distributor
|
110
|
+
authorizer).include?(role) and return nil
|
113
111
|
number = contribs.size > 1 ? "pl" : "sg"
|
114
112
|
@r.i18n.get[role][number] || role
|
115
113
|
end
|
@@ -134,9 +132,9 @@ module Relaton
|
|
134
132
|
end
|
135
133
|
|
136
134
|
def draftformat(num, _hash)
|
137
|
-
|
138
|
-
|
139
|
-
|
135
|
+
num.nil? ||
|
136
|
+
(num.is_a?(Hash) && num[:status].nil? &&
|
137
|
+
num[:iteration].nil?) and return nil
|
140
138
|
@r.i18n.draft.sub(/%/, num)
|
141
139
|
end
|
142
140
|
|
@@ -180,23 +178,16 @@ module Relaton
|
|
180
178
|
|
181
179
|
def sizeformat1(key, val, hash)
|
182
180
|
case key
|
183
|
-
when "volume"
|
184
|
-
hash[
|
185
|
-
hash[
|
186
|
-
when "issue"
|
187
|
-
hash[:issue_raw] = val
|
188
|
-
hash[:issue] = pagevolformat(val, nil, "issue", true)
|
189
|
-
when "page"
|
190
|
-
hash[:page_raw] = val
|
191
|
-
hash[:page] = pagevolformat(val, nil, "page", true)
|
181
|
+
when "volume", "issue", "page"
|
182
|
+
hash["#{key}_raw".to_sym] = val
|
183
|
+
hash[key.to_sym] = pagevolformat(val, nil, key, true)
|
192
184
|
when "data" then hash[:data] = val
|
193
185
|
when "duration" then hash[:duration] = val
|
194
186
|
end
|
195
187
|
end
|
196
188
|
|
197
189
|
def pagevolformat(value, value_raw, type, is_size)
|
198
|
-
|
199
|
-
|
190
|
+
value.nil? and return nil
|
200
191
|
num = "pl"
|
201
192
|
if is_size
|
202
193
|
value == "1" and num = "sg"
|
@@ -215,8 +206,7 @@ module Relaton
|
|
215
206
|
end
|
216
207
|
|
217
208
|
def dateformat(date, _hash)
|
218
|
-
|
219
|
-
|
209
|
+
date.nil? and return nil
|
220
210
|
%i(from to on).each do |k|
|
221
211
|
date[k] = ::Relaton::Render::Date.new(date[k], renderer: @r).render
|
222
212
|
end
|
@@ -224,20 +214,16 @@ module Relaton
|
|
224
214
|
end
|
225
215
|
|
226
216
|
def uriformat(uri)
|
227
|
-
|
228
|
-
|
217
|
+
uri.nil? || uri.empty? and return nil
|
229
218
|
"<link target='#{uri}'>#{uri}</link>"
|
230
219
|
end
|
231
220
|
|
232
221
|
private
|
233
222
|
|
234
223
|
def tw_cldr_lang
|
235
|
-
if @r.lang != "zh"
|
236
|
-
|
237
|
-
|
238
|
-
:"zh-tw"
|
239
|
-
else
|
240
|
-
:"zh-cn"
|
224
|
+
if @r.lang != "zh" then @r.lang.to_sym
|
225
|
+
elsif @r.script == "Hant" then :"zh-tw"
|
226
|
+
else :"zh-cn"
|
241
227
|
end
|
242
228
|
end
|
243
229
|
end
|
@@ -30,10 +30,11 @@ module Relaton
|
|
30
30
|
|
31
31
|
def simple_or_host_xml2hash(doc, host)
|
32
32
|
{ edition_raw: edition(doc, host), edition_num: edition_num(doc, host),
|
33
|
-
medium_raw: medium(doc, host),
|
33
|
+
medium_raw: medium(doc, host), draft_raw: draft(doc, host),
|
34
34
|
place_raw: place(doc, host), publisher_raw: publisher(doc, host),
|
35
35
|
publisher_abbrev_raw: publisher_abbrev(doc, host),
|
36
|
-
|
36
|
+
authorizer_raw: authorizer(doc, host),
|
37
|
+
distributor_raw: distributor(doc, host),
|
37
38
|
access_location: access_location(doc, host),
|
38
39
|
date: date(doc, host), date_updated: date_updated(doc, host),
|
39
40
|
date_accessed: date_accessed(doc, host) }
|
@@ -3,6 +3,7 @@ module Relaton
|
|
3
3
|
class Parse
|
4
4
|
def content(node)
|
5
5
|
node.nil? and return node
|
6
|
+
node.content.is_a?(Array) and return node.content.map { |x| content(x) }
|
6
7
|
node.content.strip
|
7
8
|
end
|
8
9
|
|
@@ -74,7 +75,7 @@ module Relaton
|
|
74
75
|
end
|
75
76
|
|
76
77
|
def creatornames_roles_allowed
|
77
|
-
%w(author performer adapter translator editor distributor)
|
78
|
+
%w(author performer adapter translator editor distributor authorizer)
|
78
79
|
end
|
79
80
|
|
80
81
|
def creatornames1(doc)
|
@@ -152,6 +153,15 @@ module Relaton
|
|
152
153
|
x.nil? and return nil
|
153
154
|
x.map { |c| extractname(c) }
|
154
155
|
end
|
156
|
+
|
157
|
+
def authorizer(doc, host)
|
158
|
+
x = pick_contributor(doc, "authorizer") ||
|
159
|
+
pick_contributor(doc, "publisher")
|
160
|
+
host and x ||= pick_contributor(host, "authorizer") ||
|
161
|
+
pick_contributor(host, "publisher")
|
162
|
+
x.nil? and return nil
|
163
|
+
x.map { |c| extractname(c) }
|
164
|
+
end
|
155
165
|
end
|
156
166
|
end
|
157
167
|
end
|
@@ -7,8 +7,7 @@ module Relaton
|
|
7
7
|
|
8
8
|
# TODO : first is naive choice
|
9
9
|
def title(doc)
|
10
|
-
|
11
|
-
|
10
|
+
doc.nil? || doc.title.empty? and return nil
|
12
11
|
t = doc.title.select { |x| x.title.language&.include? @lang }
|
13
12
|
t.empty? and t = doc.title
|
14
13
|
t1 = t.select { |x| x.type == "main" }
|
@@ -62,8 +61,7 @@ module Relaton
|
|
62
61
|
end
|
63
62
|
|
64
63
|
def series_title(series, _doc)
|
65
|
-
|
66
|
-
|
64
|
+
series.nil? and return nil
|
67
65
|
series.title.respond_to?(:titles) && !series.title.titles.empty? and
|
68
66
|
return content(series.title.titles.first.title)
|
69
67
|
series.title.respond_to?(:title) and
|
@@ -122,8 +120,7 @@ module Relaton
|
|
122
120
|
u.language == @lang && !u.type&.casecmp("doi")&.zero?
|
123
121
|
end
|
124
122
|
uri ||= doc.link.detect { |u| !u.type&.casecmp("doi")&.zero? }
|
125
|
-
return nil
|
126
|
-
|
123
|
+
uri or return nil
|
127
124
|
uri.content.to_s.strip
|
128
125
|
end
|
129
126
|
|
@@ -172,9 +169,8 @@ module Relaton
|
|
172
169
|
end
|
173
170
|
|
174
171
|
def draft(doc, host)
|
175
|
-
|
176
|
-
|
177
|
-
{ iteration: iter_ordinal(doc) || iter_ordinal(host), status: dr }
|
172
|
+
{ iteration: iter_ordinal(doc) || iter_ordinal(host),
|
173
|
+
status: status(doc) || status(host) }
|
178
174
|
end
|
179
175
|
|
180
176
|
def iter_ordinal(doc)
|
@@ -184,7 +180,7 @@ module Relaton
|
|
184
180
|
end
|
185
181
|
|
186
182
|
def status(doc)
|
187
|
-
doc
|
183
|
+
doc&.status&.stage&.value
|
188
184
|
end
|
189
185
|
|
190
186
|
private
|
@@ -202,10 +198,8 @@ module Relaton
|
|
202
198
|
|
203
199
|
def localized_string_or_text(str)
|
204
200
|
case str
|
205
|
-
when RelatonBib::LocalizedString
|
206
|
-
|
207
|
-
when String
|
208
|
-
str
|
201
|
+
when RelatonBib::LocalizedString then content(str)
|
202
|
+
when String then str
|
209
203
|
end
|
210
204
|
end
|
211
205
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: relaton-render
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-12-
|
11
|
+
date: 2022-12-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|