relaton-render 0.10.0 → 0.10.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9dc54a7ee2aedd554302d6a94f83fd8106ad7f28c717f37ce2785e99d4be1449
4
- data.tar.gz: 25512713fefa6342d0c3fd94f9373f88dbb20914fa606ed280ad43dd47aef3e5
3
+ metadata.gz: a19104c38ea80010334bb8a9b010149f61bc0293cdda062595d77202e21fd2d3
4
+ data.tar.gz: 9e087b89f7eb6aef7a07d22264a08d8ffd1ac9310a790c1cbd30fbc59df8727e
5
5
  SHA512:
6
- metadata.gz: 7fb3f5f4b135576fe9910eabab634c327a4b7d62c243765fce5c64b36d23faa78a2944c394ba8903ac3959e8e7dc0f9cfcb6b7a8f6e636721b2024d2ffc394fa
7
- data.tar.gz: 106ee2f8482617321ec2563db446afdf1fe00c66640f7829218a86e01727cab6952a0d36e1a61e38c32b161f2976624b948685d9b74bd703a6b683a0b7d1d173
6
+ metadata.gz: 5debe31c38c1d10ede1806b5915fa47408715f51f318afe95d45f0b2ae6c2b24d6eec99d160dbfcb0efeb3490c663f42fdb6b52da347b5644975b55e22b63e9f
7
+ data.tar.gz: f05613f9b3081a153287550cb4f774f81276c8c424ec6b25842843a22826f248bfc8060493afb3b6d0b355721a1a50489bb1e36bc02ee68a6f43a6db3853c237
@@ -29,8 +29,8 @@ stage:
29
29
  withdrawn: 取り消されました
30
30
  extent:
31
31
  page:
32
- sg: "p. %"
33
- pl: "pp. %"
32
+ sg: "%頁"
33
+ pl: "%頁"
34
34
  volume:
35
35
  sg: "巻%"
36
36
  pl: "巻%"
@@ -39,8 +39,8 @@ extent:
39
39
  pl: "いいえ%"
40
40
  size:
41
41
  page:
42
- sg: "% p."
43
- pl: "% pp."
42
+ sg: "%頁"
43
+ pl: "%頁"
44
44
  volume:
45
45
  sg: "巻%"
46
46
  pl: "巻%"
@@ -206,7 +206,8 @@ module Relaton
206
206
 
207
207
  def uriformat(uri)
208
208
  uri.nil? || uri.empty? and return nil
209
- "<link target='#{uri}'>#{uri}</link>"
209
+ # do not process uri contents in l10n
210
+ "<link target='#{uri}'><esc>#{uri}</esc></link>"
210
211
  end
211
212
 
212
213
  private
@@ -77,7 +77,7 @@ module Relaton
77
77
  def generic_citation(ret)
78
78
  ret.each_with_object({}) do |b, m|
79
79
  m[b[:id]] = { data_liquid: b[:data_liquid], type: b[:type],
80
- citation: b[:data_liquid][:docidentifier] }
80
+ citation: @i18n.l10n(b[:data_liquid][:docidentifier]) }
81
81
  end
82
82
  end
83
83
 
@@ -126,8 +126,8 @@ module Relaton
126
126
  ret.each_with_object({}) do |(_k, v), m|
127
127
  v.each_value do |v1|
128
128
  v1.each do |b|
129
- m[b[:id]] = { author: b[:author], date: b[:date],
130
- citation: "#{b[:author]} #{b[:date]}",
129
+ m[b[:id]] = { author: @i18n.l10n(b[:author]), date: b[:date],
130
+ citation: @i18n.l10n("#{b[:author]} #{b[:date]}"),
131
131
  data_liquid: b[:data_liquid], type: b[:type] }
132
132
  end
133
133
  end
@@ -112,6 +112,7 @@ module Relaton
112
112
  end
113
113
 
114
114
  def render(bib, embedded: false)
115
+ require "debug"; binding.b
115
116
  bib = xml2relaton(bib)
116
117
  f = bib.formattedref and
117
118
  return embedded ? f.content : fmtref(f.content)
@@ -139,11 +140,17 @@ module Relaton
139
140
  ret
140
141
  end
141
142
 
143
+ # <esc> in field can get capitalised in filters
144
+ def esc_cleanup(text)
145
+ text.gsub(/<esc>/i, "<esc>").gsub(/<\/esc>/i, "</esc>")
146
+ end
147
+
142
148
  def render1(doc)
143
149
  r = doc.relation.select { |x| x.type == "hasRepresentation" }
144
150
  .map { |x| @i18n.also_pub_as + render_single_bibitem(x.bibitem) }
145
151
  out = [render_single_bibitem(doc)] + r
146
- @i18n.l10n(out.join(". ").gsub(".. ", ". "))
152
+ @i18n.l10n(esc_cleanup(out.join(". ")).gsub(".</esc>.", ".</esc>")
153
+ .gsub(".. ", ". "))
147
154
  end
148
155
 
149
156
  def render_single_bibitem(doc)
@@ -152,7 +159,7 @@ module Relaton
152
159
  end
153
160
 
154
161
  def liquid(data_liquid, renderer)
155
- valid_parse(@i18n.l10n(renderer.render(data_liquid)))
162
+ valid_parse(renderer.render(data_liquid))
156
163
  end
157
164
 
158
165
  def parse(doc)
@@ -201,7 +208,7 @@ module Relaton
201
208
  end
202
209
 
203
210
  # add to liquid data based on template
204
- def enhance_data(data, template)
211
+ def enhance_data(_data, template)
205
212
  template.is_a?(String) or return
206
213
  # add_date_accessed(data, template)
207
214
  end
@@ -17,7 +17,7 @@ module Relaton
17
17
  def extract_personname(person)
18
18
  surname = person.name.surname || person.name.completename
19
19
  given, middle, initials = given_and_middle_name(person)
20
- { surname: content(surname),
20
+ { surname: wrap_in_esc(content(surname)),
21
21
  given: given,
22
22
  middle: middle,
23
23
  initials: initials }
@@ -28,7 +28,16 @@ module Relaton
28
28
  initials = extract_initials(person)
29
29
  forenames.empty? and initials.empty? and return [nil, nil, nil]
30
30
  initials.empty? and initials = initials_from_forenames(forenames)
31
- [forenames.first, forenames[1..-1], Array(initials)]
31
+ [forenames.first, forenames[1..-1],
32
+ wrap_in_esc(Array(initials))]
33
+ end
34
+
35
+ def wrap_in_esc(obj)
36
+ case obj
37
+ when String then "<esc>#{obj}</esc>"
38
+ when Array then obj.map { |e| wrap_in_esc(e) }
39
+ else obj
40
+ end
32
41
  end
33
42
 
34
43
  def extract_initials(person)
@@ -41,7 +50,7 @@ module Relaton
41
50
 
42
51
  def forenames_parse(person)
43
52
  person.name.forename.map do |x|
44
- x.content.empty? ? "#{x.initial}." : content(x)
53
+ x.content.empty? ? "<esc>#{x.initial}.</esc>" : content(x)
45
54
  end
46
55
  end
47
56
 
@@ -79,7 +79,7 @@ module Relaton
79
79
  end
80
80
 
81
81
  def series_num(series, _doc)
82
- series.number
82
+ series.number&.strip
83
83
  end
84
84
 
85
85
  def series_partnumber(series, _doc)
@@ -48,7 +48,8 @@ module Relaton
48
48
  out = authoritative_identifier_select(a)
49
49
  out.empty? or break
50
50
  end
51
- out.map(&:id)
51
+ # prevent l10n of identifier contents
52
+ out.map(&:id).map { |i| "<esc>#{i.strip}</esc>" }
52
53
  end
53
54
 
54
55
  def authoritative_identifier_select(idents)
@@ -71,7 +72,7 @@ module Relaton
71
72
  doc.docidentifier.each_with_object([]) do |id, ret|
72
73
  type = id_type_norm(id)
73
74
  other_identifier_include.include? type or next
74
- ret << @i18n.l10n("#{type}: #{id.id}")
75
+ ret << @i18n.l10n("#{type}: <esc>#{id.id}</esc>")
75
76
  end
76
77
  end
77
78
 
@@ -85,7 +86,7 @@ module Relaton
85
86
  type.casecmp("doi").zero? or next
86
87
  ret << id.id
87
88
  end
88
- out.empty? ? nil : out
89
+ out.empty? ? nil : out.map { |i| "<esc>#{i.strip}</esc>" }
89
90
  end
90
91
 
91
92
  def id_type_norm(id)
@@ -97,8 +97,8 @@ module Relaton
97
97
  end
98
98
  a.join
99
99
  end.join.tr("\t", " ")
100
- t.gsub(/\}\}#{FIELD_DELIM}\|/o, "}}#{FIELD_DELIM}\t")
101
- .gsub(/\|#{FIELD_DELIM}\{\{/o, "\t#{FIELD_DELIM}{{")
100
+ t.gsub(/\}\}#{FIELD_DELIM}\|/o, "}}#{FIELD_DELIM}#{NON_SPACING_DELIM}")
101
+ .gsub(/\|#{FIELD_DELIM}\{\{/o, "#{NON_SPACING_DELIM}#{FIELD_DELIM}{{")
102
102
  end
103
103
 
104
104
  def render(hash)
@@ -124,8 +124,11 @@ module Relaton
124
124
  def template_clean1(str)
125
125
  str.gsub(/\S*#{FIELD_DELIM}#{FIELD_DELIM}\S*/o, "")
126
126
  .gsub(/#{FIELD_DELIM}/o, "")
127
+ .gsub(/([,:;]\s*)+<\/esc>([,:;])(\s|_|$)/, "\\2</esc>\\3")
127
128
  .gsub(/([,:;]\s*)+([,:;](\s|_|$))/, "\\2")
129
+ .gsub(/([,.:;]\s*)+<\/esc>([.])(\s|_|$)/, "\\2</esc>\\3")
128
130
  .gsub(/([,.:;]\s*)+([.](\s|_|$))/, "\\2")
131
+ .gsub(/([,:;]\s*)+<\/esc>(,)(\s|_|$)/, "\\2</esc>\\3")
129
132
  .gsub(/([,:;]\s*)+(,(\s|_|$))/, "\\2")
130
133
  .gsub(/(:\s+)(&\s)/, "\\2")
131
134
  .gsub(/\s+([,.:;)])/, "\\1")
@@ -133,7 +136,9 @@ module Relaton
133
136
  .sub(/[,:;]\s*$/, "")
134
137
  .gsub(/(?<!\\)_/, " ")
135
138
  .gsub("\\_", "_")
136
- .gsub(/#{NON_SPACING_DELIM}/o, "").gsub(/\s+/, " ")
139
+ .gsub(/#{NON_SPACING_DELIM}/o, "")
140
+ .gsub(/\s+/, " ")
141
+ .gsub(/<(\/)?esc>/i, "<\\1esc>")
137
142
  end
138
143
 
139
144
  # need non-breaking spaces in fields: "Updated:_nil" ---
@@ -1,5 +1,5 @@
1
1
  module Relaton
2
2
  module Render
3
- VERSION = "0.10.0".freeze
3
+ VERSION = "0.10.1".freeze
4
4
  end
5
5
  end
@@ -24,6 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency "bundler"
25
25
  spec.add_development_dependency "debug"
26
26
  spec.add_development_dependency "equivalent-xml", "~> 0.6"
27
+ spec.add_development_dependency "isodoc"
27
28
  spec.add_development_dependency "rake", ">= 12.3.3"
28
29
  spec.add_development_dependency "rspec", "~> 3.0"
29
30
  spec.add_development_dependency "simplecov"
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.10.0
4
+ version: 0.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-09-29 00:00:00.000000000 Z
11
+ date: 2025-10-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.6'
55
+ - !ruby/object:Gem::Dependency
56
+ name: isodoc
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rake
57
71
  requirement: !ruby/object:Gem::Requirement