relaton-render 0.3.1 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 077a906da97ebd8417a856d6c5b73ae81cd3c5457ba8383094e752fd5c585bc0
4
- data.tar.gz: 85c8446d1a644ba1b4cd28cfae099dddaa31867a376a9e484d387387ac7d0c7c
3
+ metadata.gz: ffb9cdf17ba3f47947a747bd8867ea9e7c47a98d458756ec947ee4423dc6b303
4
+ data.tar.gz: d3a34c0f04cdb456517403b16fa3055ceb5e78162a44570e05ed5da16163c6ea
5
5
  SHA512:
6
- metadata.gz: 3fb5003aaefb0915a9eebd6d021bdd20e92dcf2c2eb015aea68c102928f1b8702841624d356d14dc00912752df3a50f7e98222d2e9a84cda819d1ed755610aad
7
- data.tar.gz: 5cd715d1b65f71d1e4126b8443dbcb99a4bf078145cd3bfaa9e9fff5c67bac96b9d6b9e97e55b995c6f63764997f1e703bc65e366fde5b1d2c376f4e7af384bf
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
- `edition_number`:: override formatting of edition number
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
- edition_number: ["OrdinalRules", "digits-ordinal"]
12
- edition: "الطبعة؜ %؜"
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
- edition: "% Aufl."
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
- edition_number: ["OrdinalRules", "digits-ordinal"]
12
- edition: "% edition"
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
- edition_number: ["OrdinalRules", "digits-ordinal-feminine"]
12
- edition: "% ed."
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
- edition_number: ["OrdinalRules", "digits-ordinal-feminine"]
12
- edition: "% édition"
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
- edition_number: ["SpelloutRules", "spellout-ordinal-neuter"]
12
- edition: "% издание"
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
- edition_number: ["OrdinalRules", "digits-ordinal"]
12
- edition: "第%版"
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.edition_number and num = edn.to_i.localize(tw_cldr_lang)
102
- .to_rbnf_s(*@r.edition_number)
103
- @r.edition.sub(/%/, num)
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, :edition_number, :date
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
- @edition_number = opt["edition_number"] || @i18n.edition_number
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
- %w(author performer adapter translator editor publisher distributor)
56
- .each do |r|
57
- add = pick_contributor(doc, r)
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
- cr = add and break
61
- end
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.first&.title&.content
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
- %i(doi uri src).each do |t|
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
 
@@ -1,5 +1,5 @@
1
1
  module Relaton
2
2
  module Render
3
- VERSION = "0.3.1".freeze
3
+ VERSION = "0.3.4".freeze
4
4
  end
5
5
  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.3.1
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-20 00:00:00.000000000 Z
11
+ date: 2022-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler