relaton-render 0.9.0 → 0.9.2

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: 60624cccbc9d2e12cc7bdd47f4a8dfadbfb3173ae3eb9e2cc5c7e9463ff5eae3
4
- data.tar.gz: 7b00ae7cb5612f7c225a5211d18b1d118466e1e6ae96211191462e2d4eface81
3
+ metadata.gz: '093dc48a9893414c5abdee0073b6295634cfbf6a5c9189db4bd0707694579342'
4
+ data.tar.gz: 5d31145a5d427c19cc0bfd3304f6b1a8467525fc619e5ab7f3e9d1e7c40aa9b1
5
5
  SHA512:
6
- metadata.gz: 625abfc7777b059ba61e8d1fc8cdb858390f7497e3c537522e84e3aed4e8bc375cb8363651e51b6b4d97d1b54084ce289f3215f7c396dbc0f6be4eb69e520697
7
- data.tar.gz: e15b472ab455fea5e36465fbfcd1571d8dfadcae5bd34034abf02e4bb53e4067e76a5471420b6054829926bd5efa95a857ebf9868b77acada502c6a8a673f72e
6
+ metadata.gz: 654aa465197829c72232ce8065277d0a378554459f24aee28be8e9925f6e805e794aaa55729773fa0e0fdd99eaa97df216006028e313d191ad3045038743a194
7
+ data.tar.gz: a92588028e0d215d35781f0e78a0b5f40bee5ea19ed2c2bf502a78c2063c13449fbf8cb0cf60cdc16d008d865470d5087f2c039e691dd64ac28b117ec658844f
@@ -128,13 +128,15 @@ module Relaton
128
128
  end
129
129
 
130
130
  def extentformat(extent, hash)
131
- extent.map do |e|
131
+ extent.map do |stack|
132
+ stack.map do |e|
132
133
  e1 = e.transform_values { |v| v.is_a?(Hash) ? range(v) : v }
133
134
  ret = e.each_with_object({}) do |(k, v), m|
134
135
  extentformat1(k, v, m, e1)
135
136
  m
136
137
  end
137
138
  @r.extenttemplate.render(hash.merge(ret))
139
+ end.join(" ")
138
140
  end.join("; ")
139
141
  end
140
142
 
@@ -5,6 +5,9 @@ module Relaton
5
5
  node.nil? and return node
6
6
  node.content.is_a?(Array) and return node.content.map { |x| content(x) }
7
7
  node.content.strip
8
+ .gsub("</title>", "").gsub("<title>", "")
9
+ # node.children.map { |n| n.text? ? n.content : n.to_xml }.join
10
+ # node.text? ? node.content.strip : node.to_xml.strip
8
11
  end
9
12
 
10
13
  def extract_orgname(org)
@@ -21,16 +24,19 @@ module Relaton
21
24
  end
22
25
 
23
26
  def given_and_middle_name(person)
24
- forenames = person.name.forename.map do |x|
25
- x.content.empty? ? "#{x.initial}." : content(x)
26
- end
27
+ forenames = forenames_parse(person)
28
+ initials = extract_initials(person)
29
+ forenames.empty? and initials.empty? and return [nil, nil, nil]
30
+ initials.empty? and initials = initials_from_forenames(forenames)
31
+ [forenames.first, forenames[1..-1], Array(initials)]
32
+ end
33
+
34
+ def extract_initials(person)
27
35
  initials = content(person.name.initials)&.sub(/(.)\.?$/, "\\1.")
28
36
  &.split /(?<=\.) /
29
37
  initials ||= person.name.forename.map(&:initial)
30
38
  .compact.map { |x| x.sub(/(.)\.?$/, "\\1.") }
31
- forenames.empty? and initials.empty? and return [nil, nil, nil]
32
- initials.empty? and initials = forenames.map { |x| "#{x[0]}." }
33
- [forenames.first, forenames[1..-1], Array(initials)]
39
+ initials
34
40
  end
35
41
 
36
42
  def forenames_parse(person)
@@ -49,6 +55,10 @@ module Relaton
49
55
  .scan(/.+?\.(?=(?:$|\s|\p{Alpha}))/).map(&:strip)
50
56
  end
51
57
 
58
+ def initials_from_forenames(forenames)
59
+ forenames.map(&:split).flatten.map { |x| "#{x[0]}." }
60
+ end
61
+
52
62
  def extractname(contributor)
53
63
  org = contributor.entity if contributor.entity
54
64
  .is_a?(RelatonBib::Organization)
@@ -141,13 +141,15 @@ module Relaton
141
141
  doc.extent.each_with_object([]) do |e, acc|
142
142
  case e
143
143
  when RelatonBib::Extent, RelatonBib::LocalityStack
144
- e.locality.each do |e1|
144
+ a = e.locality.each_with_object([]) do |e1, m|
145
145
  if e1.is_a?(RelatonBib::LocalityStack)
146
- acc << extent1(e1.locality)
146
+ m << extent1(e1.locality)
147
147
  else
148
- acc << extent1(Array(e1))
148
+ m.empty? and m << {}
149
+ m[-1].merge!(extent1(Array(e1)))
149
150
  end
150
151
  end
152
+ acc << a
151
153
  when RelatonBib::Locality
152
154
  acc << extent1(Array(e))
153
155
  end
@@ -1,7 +1,7 @@
1
1
  module Relaton
2
2
  module Render
3
3
  module Template
4
- module CapitalizeFirst
4
+ module CustomFilters
5
5
  def capitalize_first(words)
6
6
  return nil if words.nil?
7
7
 
@@ -9,6 +9,33 @@ module Relaton
9
9
  ret.first.capitalize! if ret.size.positive?
10
10
  ret.join("_")
11
11
  end
12
+
13
+ def selective_upcase(text)
14
+ return nil if text.nil?
15
+
16
+ ret = text.split(/(\+\+\+[^+]+?\+\+\+)/)
17
+ ret.map do |n|
18
+ if m = /^\+\+\+(.+)\+\+\+$/.match(n)
19
+ m[1]
20
+ else
21
+ n.upcase
22
+ end
23
+ end.join
24
+ end
25
+
26
+ def selective_tag(text, tag)
27
+ return nil if text.nil?
28
+
29
+ ret = text.split(/(\+\+\+[^+]+?\+\+\+)/)
30
+ ret.map do |n|
31
+ if m = /^\+\+\+(.+)\+\+\+$/.match(n)
32
+ m[1]
33
+ else
34
+ closetag = tag.sub(/^</, "</")
35
+ "#{tag}#{n}#{closetag}"
36
+ end
37
+ end.join
38
+ end
12
39
  end
13
40
  end
14
41
  end
@@ -53,7 +53,7 @@ module Relaton
53
53
 
54
54
  def customise_liquid
55
55
  ::Liquid::Template
56
- .register_filter(::Relaton::Render::Template::CapitalizeFirst)
56
+ .register_filter(::Relaton::Render::Template::CustomFilters)
57
57
  end
58
58
 
59
59
  # denote start and end of field,
@@ -187,7 +187,7 @@ module Relaton
187
187
  end
188
188
 
189
189
  def template_select_etal(names)
190
- if @etal_count && names[:surname].size >= @etal_count
190
+ if @etal_count && names[:surname].size > @etal_count
191
191
  expand_nametemplate(@template_raw[:etal], @etal_display)
192
192
  else
193
193
  expand_nametemplate(@template_raw[:more], names[:surname].size)
@@ -1,5 +1,5 @@
1
1
  module Relaton
2
2
  module Render
3
- VERSION = "0.9.0".freeze
3
+ VERSION = "0.9.2".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.9.0
4
+ version: 0.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-12-19 00:00:00.000000000 Z
11
+ date: 2025-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -270,7 +270,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
270
270
  - !ruby/object:Gem::Version
271
271
  version: '0'
272
272
  requirements: []
273
- rubygems_version: 3.3.27
273
+ rubygems_version: 3.5.22
274
274
  signing_key:
275
275
  specification_version: 4
276
276
  summary: Rendering of ISO 690 XML