relaton-render 0.3.1 → 0.3.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/README.adoc +1 -2
- data/lib/isodoc-yaml/i18n-ar.yaml +7 -2
- data/lib/isodoc-yaml/i18n-de.yaml +7 -1
- data/lib/isodoc-yaml/i18n-en.yaml +4 -2
- data/lib/isodoc-yaml/i18n-es.yaml +10 -2
- data/lib/isodoc-yaml/i18n-fr.yaml +12 -2
- data/lib/isodoc-yaml/i18n-ru.yaml +13 -2
- data/lib/isodoc-yaml/i18n-zh-Hans.yaml +4 -2
- data/lib/relaton/render/fields/fields.rb +15 -4
- data/lib/relaton/render/general/render.rb +2 -2
- data/lib/relaton/render/parse/parse.rb +1 -0
- data/lib/relaton/render/parse/parse_contributors.rb +30 -6
- data/lib/relaton/render/parse/parse_extract.rb +4 -16
- data/lib/relaton/render/template/template.rb +3 -2
- 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: ffb9cdf17ba3f47947a747bd8867ea9e7c47a98d458756ec947ee4423dc6b303
|
|
4
|
+
data.tar.gz: d3a34c0f04cdb456517403b16fa3055ceb5e78162a44570e05ed5da16163c6ea
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4a2aa5ae8d17b38ad0e79e575b9852127886a93ceafa5003ed1fc36d0bfb28e5a51733059b0a4c68256acdf62f3f1fd95195e68cf1e2b8d050fd753b6230f1a4
|
|
7
|
+
data.tar.gz: 5bd29bd5368dc53408da0888cb11734a580041288132a0a73b1e93206849b527df5ee7bbb771734274be9d2927f098f9dea798bcdadd1c7d52ae2f909e52f1d7
|
data/README.adoc
CHANGED
|
@@ -35,8 +35,7 @@ The parameters are:
|
|
|
35
35
|
`journaltemplate`:: template for rendering journals in article citations
|
|
36
36
|
`extenttemplate`:: templates for rendering extents
|
|
37
37
|
`sizetemplate`:: templates for rendering sizes
|
|
38
|
-
`
|
|
39
|
-
`edition`:: override formatting of edition
|
|
38
|
+
`edition_ordinal`:: override formatting of edition with ordinal
|
|
40
39
|
`date`:: default date format (from Twitter CLDR)
|
|
41
40
|
|
|
42
41
|
== Configuration
|
|
@@ -8,8 +8,10 @@ date:
|
|
|
8
8
|
month_year: yMMMM
|
|
9
9
|
day_month_year: to_long_s
|
|
10
10
|
date_time: to_long_s
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
ordinal_keys: []
|
|
12
|
+
OrdinalRules: digits-ordinal
|
|
13
|
+
edition_ordinal: "الطبعة %Ordinal"
|
|
14
|
+
edition: الطبعة
|
|
13
15
|
draft: "مشروع %"
|
|
14
16
|
editor:
|
|
15
17
|
sg: محرر
|
|
@@ -28,4 +30,7 @@ size:
|
|
|
28
30
|
volume:
|
|
29
31
|
sg: "المجلد %"
|
|
30
32
|
pl: "المجلدين %"
|
|
33
|
+
inflection:
|
|
34
|
+
الطبعة:
|
|
35
|
+
gender: f
|
|
31
36
|
|
|
@@ -9,7 +9,9 @@ date:
|
|
|
9
9
|
day_month_year: to_long_s
|
|
10
10
|
date_time: to_long_s
|
|
11
11
|
draft: "Entwurf %"
|
|
12
|
-
|
|
12
|
+
edition_ordinal: "% Aufl."
|
|
13
|
+
ordinal_keys: []
|
|
14
|
+
edition: Auflage
|
|
13
15
|
editor:
|
|
14
16
|
sg: Hrsg.
|
|
15
17
|
pl: Hrsg.
|
|
@@ -27,3 +29,7 @@ size:
|
|
|
27
29
|
volume:
|
|
28
30
|
sg: "% Bd."
|
|
29
31
|
pl: "% Bde."
|
|
32
|
+
inflection:
|
|
33
|
+
Auflage:
|
|
34
|
+
gender: f
|
|
35
|
+
|
|
@@ -8,8 +8,10 @@ date:
|
|
|
8
8
|
month_year: yMMMM
|
|
9
9
|
day_month_year: to_long_s
|
|
10
10
|
date_time: to_long_s
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
ordinal_keys: []
|
|
12
|
+
OrdinalRules: digits-ordinal
|
|
13
|
+
edition: edition
|
|
14
|
+
edition_ordinal: "%Ordinal edition"
|
|
13
15
|
draft: "draft %"
|
|
14
16
|
editor:
|
|
15
17
|
sg: ed.
|
|
@@ -8,8 +8,12 @@ date:
|
|
|
8
8
|
month_year: yMMMM
|
|
9
9
|
day_month_year: to_long_s
|
|
10
10
|
date_time: to_long_s
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
ordinal_keys: [gender]
|
|
12
|
+
OrdinalRules:
|
|
13
|
+
m: digits-ordinal-masculine
|
|
14
|
+
f: digits-ordinal-feminine
|
|
15
|
+
edition_ordinal: "%Ordinal ed."
|
|
16
|
+
edition: edición
|
|
13
17
|
draft: "borrador %"
|
|
14
18
|
editor:
|
|
15
19
|
sg: ed.
|
|
@@ -28,3 +32,7 @@ size:
|
|
|
28
32
|
volume:
|
|
29
33
|
sg: "% vol."
|
|
30
34
|
pl: "% vols."
|
|
35
|
+
inflection:
|
|
36
|
+
edición:
|
|
37
|
+
gender: f
|
|
38
|
+
|
|
@@ -8,8 +8,14 @@ date:
|
|
|
8
8
|
month_year: yMMMM
|
|
9
9
|
day_month_year: to_long_s
|
|
10
10
|
date_time: to_long_s
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
ordinal_keys: [gender,number]
|
|
12
|
+
OrdinalRules:
|
|
13
|
+
m.sg: digits-ordinal-masculine
|
|
14
|
+
f.sg: digits-ordinal-feminine
|
|
15
|
+
m.pl: digits-ordinal-masculine-plural
|
|
16
|
+
f.pl: digits-ordinal-feminine-plural
|
|
17
|
+
edition_ordinal: "%Ordinal édition"
|
|
18
|
+
edition: édition
|
|
13
19
|
draft: "brouillon %"
|
|
14
20
|
editor:
|
|
15
21
|
sg: éd.
|
|
@@ -28,3 +34,7 @@ size:
|
|
|
28
34
|
volume:
|
|
29
35
|
sg: "% vol."
|
|
30
36
|
pl: "% vol."
|
|
37
|
+
inflection:
|
|
38
|
+
édition:
|
|
39
|
+
gender: f
|
|
40
|
+
|
|
@@ -8,8 +8,16 @@ date:
|
|
|
8
8
|
month_year: yMMMM
|
|
9
9
|
day_month_year: to_long_s
|
|
10
10
|
date_time: to_long_s
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
ordinal_keys: [gender,number]
|
|
12
|
+
SpelloutRules:
|
|
13
|
+
m.sg: spellout-ordinal-masculine
|
|
14
|
+
f.sg: spellout-ordinal-feminine
|
|
15
|
+
n.sg: spellout-ordinal-neuter
|
|
16
|
+
m.pl: spellout-ordinal-plural
|
|
17
|
+
f.pl: spellout-ordinal-plural
|
|
18
|
+
n.pl: spellout-ordinal-plural
|
|
19
|
+
edition_ordinal: "%Spellout издание"
|
|
20
|
+
edition: издание
|
|
13
21
|
draft: "проект %"
|
|
14
22
|
editor:
|
|
15
23
|
sg: изд.
|
|
@@ -28,4 +36,7 @@ size:
|
|
|
28
36
|
volume:
|
|
29
37
|
sg: "% т."
|
|
30
38
|
pl: "% тт."
|
|
39
|
+
inflection:
|
|
40
|
+
издание:
|
|
41
|
+
gender: n
|
|
31
42
|
|
|
@@ -8,8 +8,10 @@ date:
|
|
|
8
8
|
month_year: yMMMM
|
|
9
9
|
day_month_year: to_long_s
|
|
10
10
|
date_time: to_long_s
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
ordinal_keys: []
|
|
12
|
+
OrdinalRules: digits-ordinal
|
|
13
|
+
edition_ordinal: "第%Ordinal版"
|
|
14
|
+
edition: 版
|
|
13
15
|
draft: "草案%"
|
|
14
16
|
editor:
|
|
15
17
|
sg: 编辑
|
|
@@ -24,6 +24,7 @@ module Relaton
|
|
|
24
24
|
.each do |k|
|
|
25
25
|
hash[k[0]] = nameformat(hash[k[1]])
|
|
26
26
|
end
|
|
27
|
+
hash[:publisher_abbrev] = hash[:publisher_abbrev_raw]&.join(", ")
|
|
27
28
|
end
|
|
28
29
|
|
|
29
30
|
def role_fields_format(hash)
|
|
@@ -97,10 +98,20 @@ module Relaton
|
|
|
97
98
|
def editionformat(edn)
|
|
98
99
|
return edn unless /^\d+$/.match?(edn)
|
|
99
100
|
|
|
100
|
-
num = edn
|
|
101
|
-
@r.
|
|
102
|
-
|
|
103
|
-
|
|
101
|
+
num = edition_translate1(edn.to_i)
|
|
102
|
+
@r.edition_ordinal.sub(/%(Spellout|Ordinal)?/, num)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def edition_translate1(num)
|
|
106
|
+
ruleset = case @r.i18n.edition_ordinal
|
|
107
|
+
when /%Spellout/ then "SpelloutRules"
|
|
108
|
+
when /%Ordinal/ then "OrdinalRules"
|
|
109
|
+
else "Digit"
|
|
110
|
+
end
|
|
111
|
+
ruleset == "Digit" and return num.to_s
|
|
112
|
+
ed = HTMLEntities.new.decode(@r.i18n.edition)
|
|
113
|
+
@r.i18n.inflect_ordinal(num, @r.i18n.inflection&.dig(ed) || {},
|
|
114
|
+
ruleset)
|
|
104
115
|
end
|
|
105
116
|
|
|
106
117
|
def draftformat(num, _hash)
|
|
@@ -10,7 +10,7 @@ module Relaton
|
|
|
10
10
|
class General
|
|
11
11
|
attr_reader :template, :journaltemplate, :seriestemplate, :nametemplate,
|
|
12
12
|
:extenttemplate, :sizetemplate, :lang, :script, :i18n,
|
|
13
|
-
:edition, :
|
|
13
|
+
:edition, :edition_ordinal, :date
|
|
14
14
|
|
|
15
15
|
def initialize(opt = {})
|
|
16
16
|
options = read_config.merge(Utils::string_keys(opt))
|
|
@@ -53,7 +53,7 @@ module Relaton
|
|
|
53
53
|
@lang = opt["language"]
|
|
54
54
|
@script = opt["script"]
|
|
55
55
|
@i18n = i18n_klass(opt["language"], opt["script"])
|
|
56
|
-
@
|
|
56
|
+
@edition_ordinal = opt["edition_ordinal"] || @i18n.edition_ordinal
|
|
57
57
|
@edition = opt["edition"] || @i18n.edition
|
|
58
58
|
@date = opt["date"] || @i18n.date
|
|
59
59
|
end
|
|
@@ -29,6 +29,7 @@ module Relaton
|
|
|
29
29
|
def simple_or_host_xml2hash(doc, host)
|
|
30
30
|
{ edition_raw: edition(doc, host), medium_raw: medium(doc, host),
|
|
31
31
|
place_raw: place(doc, host), publisher_raw: publisher(doc, host),
|
|
32
|
+
publisher_abbrev_raw: publisher_abbrev(doc, host),
|
|
32
33
|
distributor_raw: distributor(doc, host), draft_raw: draft(doc, host),
|
|
33
34
|
access_location: access_location(doc, host),
|
|
34
35
|
date: date(doc, host), date_updated: date_updated(doc, host),
|
|
@@ -48,17 +48,20 @@ module Relaton
|
|
|
48
48
|
[cr.map { |x| extractname(x) }, contributor_role(cr)]
|
|
49
49
|
end
|
|
50
50
|
|
|
51
|
+
def creatornames_roles_allowed
|
|
52
|
+
%w(author performer adapter translator editor publisher distributor)
|
|
53
|
+
end
|
|
54
|
+
|
|
51
55
|
def creatornames1(doc)
|
|
52
56
|
cr = []
|
|
53
57
|
return [] if doc.nil?
|
|
54
58
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
next if add.nil?
|
|
59
|
+
creatornames_roles_allowed.each do |r|
|
|
60
|
+
add = pick_contributor(doc, r)
|
|
61
|
+
next if add.nil?
|
|
59
62
|
|
|
60
|
-
|
|
61
|
-
|
|
63
|
+
cr = add and break
|
|
64
|
+
end
|
|
62
65
|
cr.nil? and cr = doc.contributor
|
|
63
66
|
cr
|
|
64
67
|
end
|
|
@@ -100,6 +103,27 @@ module Relaton
|
|
|
100
103
|
host and ret ||= host.date.detect { |x| x.type == "accessed" }
|
|
101
104
|
datepick(ret)
|
|
102
105
|
end
|
|
106
|
+
|
|
107
|
+
def publisher(doc, host)
|
|
108
|
+
x = pick_contributor(doc, "publisher")
|
|
109
|
+
host and x ||= pick_contributor(host, "publisher")
|
|
110
|
+
x.nil? and return nil
|
|
111
|
+
x.map { |c| extractname(c) }
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def publisher_abbrev(doc, host)
|
|
115
|
+
x = pick_contributor(doc, "publisher")
|
|
116
|
+
host and x ||= pick_contributor(host, "publisher")
|
|
117
|
+
x.nil? and return nil
|
|
118
|
+
x.map { |c| c.entity.abbreviation&.content }
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def distributor(doc, host)
|
|
122
|
+
x = pick_contributor(doc, "distributor")
|
|
123
|
+
host and x ||= pick_contributor(host, "distributor")
|
|
124
|
+
x.nil? and return nil
|
|
125
|
+
x.map { |c| extractname(c) }
|
|
126
|
+
end
|
|
103
127
|
end
|
|
104
128
|
end
|
|
105
129
|
end
|
|
@@ -11,7 +11,9 @@ module Relaton
|
|
|
11
11
|
|
|
12
12
|
t = doc.title.select { |x| x.title.language&.include? @lang }
|
|
13
13
|
t.empty? and t = doc.title
|
|
14
|
-
t.
|
|
14
|
+
t1 = t.select { |x| x.type == "main" }
|
|
15
|
+
t1.empty? and t1 = t
|
|
16
|
+
t1.first&.title&.content
|
|
15
17
|
end
|
|
16
18
|
|
|
17
19
|
def medium(doc, host)
|
|
@@ -41,20 +43,6 @@ module Relaton
|
|
|
41
43
|
x.map(&:name)
|
|
42
44
|
end
|
|
43
45
|
|
|
44
|
-
def publisher(doc, host)
|
|
45
|
-
x = pick_contributor(doc, "publisher")
|
|
46
|
-
host and x ||= pick_contributor(host, "publisher")
|
|
47
|
-
x.nil? and return nil
|
|
48
|
-
x.map { |c| extractname(c) }
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def distributor(doc, host)
|
|
52
|
-
x = pick_contributor(doc, "distributor")
|
|
53
|
-
host and x ||= pick_contributor(host, "distributor")
|
|
54
|
-
x.nil? and return nil
|
|
55
|
-
x.map { |c| extractname(c) }
|
|
56
|
-
end
|
|
57
|
-
|
|
58
46
|
def series(doc)
|
|
59
47
|
doc.series.detect { |s| s.type == "main" } ||
|
|
60
48
|
doc.series.detect { |s| s.type.nil? } ||
|
|
@@ -101,7 +89,7 @@ module Relaton
|
|
|
101
89
|
|
|
102
90
|
def uri(doc)
|
|
103
91
|
uri = nil
|
|
104
|
-
%
|
|
92
|
+
%w(doi uri src).each do |t|
|
|
105
93
|
uri = doc.link.detect { |u| u.type == t } and break
|
|
106
94
|
end
|
|
107
95
|
uri ||= doc.link.first
|
|
@@ -79,6 +79,7 @@ module Relaton
|
|
|
79
79
|
.gsub(/(:\s+)(&\s)/, "\\2")
|
|
80
80
|
.gsub(/\s+([,.:;)])/, "\\1")
|
|
81
81
|
.sub(/^\s*[,.:;]\s*/, "")
|
|
82
|
+
.sub(/[,:;]\s*$/, "")
|
|
82
83
|
.gsub(/_/, " ")
|
|
83
84
|
.gsub(/#{NON_SPACING_DELIM}/o, "").gsub(/\s+/, " ")
|
|
84
85
|
end
|
|
@@ -133,9 +134,9 @@ module Relaton
|
|
|
133
134
|
end
|
|
134
135
|
|
|
135
136
|
def template_select_etal(names)
|
|
136
|
-
if @etal_count && names.size >= @etal_count
|
|
137
|
+
if @etal_count && names[:surname].size >= @etal_count
|
|
137
138
|
@template[:etal]
|
|
138
|
-
else expand_nametemplate(@template_raw[:more], names.size)
|
|
139
|
+
else expand_nametemplate(@template_raw[:more], names[:surname].size)
|
|
139
140
|
end
|
|
140
141
|
end
|
|
141
142
|
|
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.3.
|
|
4
|
+
version: 0.3.4
|
|
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-04-
|
|
11
|
+
date: 2022-04-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|