relaton-bib 0.5.0 → 0.8.0

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: 0ce6cabec8231c8496286a8b792efc2842abbfceee27f8ee27ed9c7759574416
4
- data.tar.gz: efdd0740c622358066675c5e37d278c1b66e43b4cf0420bcd1afafb708140c15
3
+ metadata.gz: 2d8b311616840c90e25325574979fe74ec6253ef5d23c0873545255ff3dce033
4
+ data.tar.gz: b144ea5a04e375c1a97ccc06891e0660b790048394a65e272f54ffda8d8c2edb
5
5
  SHA512:
6
- metadata.gz: bc52f3fb46b5491c7e83a1fd71602e8c9af0123823ea88faacf5d6a5f6f77dfd17bdbbcc5ec19f9ea878697961cbd55d4ab488595da7d659688e8958b50949fd
7
- data.tar.gz: 7d3154b81eb5c7cc465b9257cc17c596ac2c71453b371b5f9767194bcbbe1c6c495247cb2a1c389fd40830e6fa7cc57f6fd27425a21b07b447ff99cf3121be88
6
+ metadata.gz: 81c5c5906f25a7f2289f9393efce6233ba11c7d8a0ffa0dfa1b7b863d69413756a6df679e5e0222fc744b3450bb6610499cbabe89da8b75dbaa00c1d9502080b
7
+ data.tar.gz: 31a66938522b61ca282a674106023d65c6250d0636f477b1dbed979427092a2f5aa3f6f8863331190b101a0eb56aa8e96dafed023c17a37f3c0459b148b2e413
@@ -1,20 +1,29 @@
1
- # Auto-generated !!! Do not edit it manually
2
- # use ci-master https://github.com/metanorma/metanorma-build-scripts
1
+ # Auto-generated by Cimas: Do not edit it manually!
2
+ # See https://github.com/metanorma/cimas
3
3
  name: macos
4
4
 
5
- on: [push]
5
+ on:
6
+ push:
7
+ branches: [ master ]
8
+ pull_request:
9
+ branches: [ '**' ]
6
10
 
7
11
  jobs:
8
12
  test-macos:
9
13
  name: Test on Ruby ${{ matrix.ruby }} macOS
10
14
  runs-on: macos-latest
11
15
  strategy:
16
+ fail-fast: false
12
17
  matrix:
13
18
  ruby: [ '2.6', '2.5', '2.4' ]
14
19
  steps:
15
- - uses: actions/checkout@v1
16
- with:
17
- submodules: recursive
20
+ - uses: actions/checkout@master
21
+ - name: Checkout submodules
22
+ shell: bash
23
+ run: |
24
+ auth_header="$(git config --local --get http.https://github.com/.extraheader)"
25
+ git submodule sync --recursive
26
+ git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
18
27
  - name: Use Ruby
19
28
  uses: actions/setup-ruby@v1
20
29
  with:
@@ -22,7 +31,7 @@ jobs:
22
31
  architecture: 'x64'
23
32
  - name: Update gems
24
33
  run: |
25
- sudo gem install bundler -v "~> 2" --force
34
+ sudo gem install bundler --force
26
35
  bundle install --jobs 4 --retry 3
27
36
  - name: Run specs
28
37
  run: |
@@ -1,20 +1,29 @@
1
- # Auto-generated !!! Do not edit it manually
2
- # use ci-master https://github.com/metanorma/metanorma-build-scripts
1
+ # Auto-generated by Cimas: Do not edit it manually!
2
+ # See https://github.com/metanorma/cimas
3
3
  name: ubuntu
4
4
 
5
- on: [push]
5
+ on:
6
+ push:
7
+ branches: [ master ]
8
+ pull_request:
9
+ branches: [ '**' ]
6
10
 
7
11
  jobs:
8
12
  test-linux:
9
13
  name: Test on Ruby ${{ matrix.ruby }} Ubuntu
10
14
  runs-on: ubuntu-latest
11
15
  strategy:
16
+ fail-fast: false
12
17
  matrix:
13
18
  ruby: [ '2.6', '2.5', '2.4' ]
14
19
  steps:
15
- - uses: actions/checkout@v1
16
- with:
17
- submodules: recursive
20
+ - uses: actions/checkout@master
21
+ - name: Checkout submodules
22
+ shell: bash
23
+ run: |
24
+ auth_header="$(git config --local --get http.https://github.com/.extraheader)"
25
+ git submodule sync --recursive
26
+ git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
18
27
  - name: Use Ruby
19
28
  uses: actions/setup-ruby@v1
20
29
  with:
@@ -22,7 +31,7 @@ jobs:
22
31
  architecture: 'x64'
23
32
  - name: Update gems
24
33
  run: |
25
- gem install bundler -v "~> 2"
34
+ gem install bundler
26
35
  bundle install --jobs 4 --retry 3
27
36
  - name: Run specs
28
37
  run: |
@@ -1,20 +1,29 @@
1
- # Auto-generated !!! Do not edit it manually
2
- # use ci-master https://github.com/metanorma/metanorma-build-scripts
1
+ # Auto-generated by Cimas: Do not edit it manually!
2
+ # See https://github.com/metanorma/cimas
3
3
  name: windows
4
4
 
5
- on: [push]
5
+ on:
6
+ push:
7
+ branches: [ master ]
8
+ pull_request:
9
+ branches: [ '**' ]
6
10
 
7
11
  jobs:
8
12
  test-windows:
9
13
  name: Test on Ruby ${{ matrix.ruby }} Windows
10
14
  runs-on: windows-latest
11
15
  strategy:
16
+ fail-fast: false
12
17
  matrix:
13
18
  ruby: [ '2.6', '2.5', '2.4' ]
14
19
  steps:
15
- - uses: actions/checkout@v1
16
- with:
17
- submodules: recursive
20
+ - uses: actions/checkout@master
21
+ - name: Checkout submodules
22
+ shell: bash
23
+ run: |
24
+ auth_header="$(git config --local --get http.https://github.com/.extraheader)"
25
+ git submodule sync --recursive
26
+ git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
18
27
  - name: Use Ruby
19
28
  uses: actions/setup-ruby@v1
20
29
  with:
@@ -23,7 +32,7 @@ jobs:
23
32
  - name: Update gems
24
33
  shell: pwsh
25
34
  run: |
26
- gem install bundler -v "~> 2"
35
+ gem install bundler
27
36
  bundle config --local path vendor/bundle
28
37
  bundle update
29
38
  bundle install --jobs 4 --retry 3
data/lib/relaton_bib.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "relaton_bib/version"
2
+ require "relaton_bib/deep_dup"
2
3
  require "relaton_bib/bibliographic_item"
3
4
  require "relaton_bib/hit_collection"
4
5
  require "relaton_bib/hit"
@@ -102,7 +102,7 @@ module RelatonBib
102
102
  attr_reader :extent
103
103
 
104
104
  # @return [Array<Strig>]
105
- attr_reader :accesslocation
105
+ attr_reader :accesslocation, :license
106
106
 
107
107
  # @return [Array<Relaton::Classification>]
108
108
  attr_reader :classification
@@ -113,6 +113,9 @@ module RelatonBib
113
113
  # @return [Date]
114
114
  attr_reader :fetched
115
115
 
116
+ # @return [Array<RelatonBib::LocalizedString>]
117
+ attr_reader :keyword
118
+
116
119
  # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
117
120
  # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
118
121
 
@@ -136,6 +139,7 @@ module RelatonBib
136
139
  # @param classification [Array<RelatonBib::Classification>]
137
140
  # @param validity [RelatonBib:Validity, NilClass]
138
141
  # @param fetched [Date, NilClass] default nil
142
+ # @param keyword [Array<String>]
139
143
  #
140
144
  # @param copyright [Hash, RelatonBib::CopyrightAssociation, NilClass]
141
145
  # @option copyright [Hash, RelatonBib::ContributionInfo] :owner
@@ -171,7 +175,7 @@ module RelatonBib
171
175
  # @option link [String] :content
172
176
  def initialize(**args)
173
177
  if args[:type] && !TYPES.include?(args[:type])
174
- warn %{Document type "#{args[:type]}" is invalid.}
178
+ warn %{[relaton-bib] document type "#{args[:type]}" is invalid.}
175
179
  end
176
180
 
177
181
  @title = (args[:title] || []).map do |t|
@@ -222,6 +226,8 @@ module RelatonBib
222
226
  @classification = args.fetch :classification, []
223
227
  @validity = args[:validity]
224
228
  @fetched = args.fetch :fetched, nil # , Date.today # we should pass the fetched arg from scrappers
229
+ @keyword = (args[:keyword] || []).map { |kw| LocalizedString.new(kw) }
230
+ @license = args.fetch :license, []
225
231
  end
226
232
  # rubocop:enable Metrics/MethodLength, Metrics/AbcSize
227
233
  # rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
@@ -303,6 +309,8 @@ module RelatonBib
303
309
  hash["classification"] = single_element_array(classification) if classification&.any?
304
310
  hash["validity"] = validity.to_hash if validity
305
311
  hash["fetched"] = fetched.to_s if fetched
312
+ hash["keyword"] = single_element_array(keyword) if keyword&.any?
313
+ hash["license"] = single_element_array(license) if license&.any?
306
314
  hash
307
315
  end
308
316
 
@@ -323,6 +331,7 @@ module RelatonBib
323
331
  bibtex_date item
324
332
  bibtex_series item
325
333
  bibtex_classification item
334
+ item.keywords = keyword.map(&:content).join(", ") if keyword.any?
326
335
  bibtex_docidentifier item
327
336
  item.timestamp = fetched.to_s if fetched
328
337
  bibtex_link item
@@ -455,7 +464,7 @@ module RelatonBib
455
464
  classification.each do |c|
456
465
  case c.type
457
466
  when "type" then item["type"] = c.value
458
- when "keyword" then item.keywords = c.value
467
+ # when "keyword" then item.keywords = c.value
459
468
  when "mendeley" then item["mendeley-tags"] = c.value
460
469
  end
461
470
  end
@@ -519,7 +528,9 @@ module RelatonBib
519
528
  place.each { |pl| pl.to_xml builder }
520
529
  extent.each { |e| builder.extent { e.to_xml builder } }
521
530
  accesslocation.each { |al| builder.accesslocation al }
531
+ license.each { |l| builder.license l }
522
532
  classification.each { |cls| cls.to_xml builder }
533
+ keyword.each { |kw| builder.keyword { kw.to_xml(builder) } }
523
534
  validity&.to_xml builder
524
535
  if block_given?
525
536
  yield builder
@@ -24,7 +24,8 @@ module RelatonBib
24
24
  series: fetch_series(bt),
25
25
  link: fetch_link(bt),
26
26
  language: fetch_language(bt),
27
- classification: fetch_classification(bt)
27
+ classification: fetch_classification(bt),
28
+ keyword: fetch_keyword(bt)
28
29
  )
29
30
  h
30
31
  end
@@ -225,12 +226,18 @@ module RelatonBib
225
226
  def fetch_classification(bibtex)
226
227
  cls = []
227
228
  cls << Classification.new(type: "type", value: bibtex["type"].to_s) if bibtex["type"]
228
- cls << Classification.new(type: "keyword", value: bibtex.keywords.to_s) if bibtex["keywords"]
229
+ # cls << Classification.new(type: "keyword", value: bibtex.keywords.to_s) if bibtex["keywords"]
229
230
  if bibtex["mendeley-tags"]
230
- cls << Classification.new(type: "mendeley", value: bibtex["mendeley-tags"].to_s)
231
+ cls << Classification.new(type: "mendeley", value: bibtex["mendeley-tags"].to_s)
231
232
  end
232
233
  cls
233
234
  end
235
+
236
+ # @param bibtex [BibTeX::Entry]
237
+ # @return [Array<String>]
238
+ def fetch_keyword(bibtex)
239
+ bibtex["keywords"]&.split(", ") || []
240
+ end
234
241
  end
235
242
  end
236
243
  end
@@ -0,0 +1,30 @@
1
+ class Object
2
+ def duplicable?
3
+ true
4
+ end
5
+
6
+ def deep_dup
7
+ duplicable? ? dup : self
8
+ end
9
+ end
10
+
11
+ class Array
12
+ def deep_dup
13
+ map(&:deep_dup)
14
+ end
15
+ end
16
+
17
+ # class Hash
18
+ # def deep_dup
19
+ # hash = dup
20
+ # each_pair do |key, value|
21
+ # if key.frozen? && ::String === key
22
+ # hash[key] = value.deep_dup
23
+ # else
24
+ # hash.delete(key)
25
+ # hash[key.deep_dup] = value.deep_dup
26
+ # end
27
+ # end
28
+ # hash
29
+ # end
30
+ # end
@@ -41,7 +41,8 @@ module RelatonBib
41
41
  # @param [Nokogiri::XML::Builder] builder
42
42
  #
43
43
  def to_xml(builder)
44
- builder.docidentifier(id, type: type)
44
+ element = builder.docidentifier id
45
+ element[:type] = type if type
45
46
  end
46
47
 
47
48
  # @return [Hash]
@@ -26,6 +26,8 @@ module RelatonBib
26
26
  accesslocation_hash_to_bib(ret)
27
27
  classification_hash_to_bib(ret)
28
28
  validity_hash_to_bib(ret)
29
+ ret[:keyword] = array(ret[:keyword])
30
+ ret[:license] = array(ret[:license])
29
31
  ret
30
32
  end
31
33
 
@@ -1,5 +1,8 @@
1
1
  module RelatonBib
2
2
  class Hit
3
+ # @return [RelatonBib::HitCollection]
4
+ attr_reader :hit_collection
5
+
3
6
  # @return [Array<Hash>]
4
7
  attr_reader :hit
5
8
 
@@ -24,9 +27,20 @@ module RelatonBib
24
27
  "@title=\"#{@hit[:code]}\">"
25
28
  end
26
29
 
27
- # @return [String]
28
- def to_xml(**opts)
29
- fetch.to_xml **opts
30
+ def fetch
31
+ raise "Not implemented"
32
+ end
33
+
34
+ # @param builder [Nokogiri::XML::Builder]
35
+ def to_xml(builder = nil, **opts)
36
+ if builder
37
+ fetch.to_xml builder, **opts
38
+ else
39
+ builder = Nokogiri::XML::Builder.new(encoding: "UTF-8") do |xml|
40
+ fetch.to_xml xml, **opts
41
+ end
42
+ builder.doc.root.to_xml
43
+ end
30
44
  end
31
45
  end
32
46
  end
@@ -1,5 +1,11 @@
1
+ require "forwardable"
2
+
1
3
  module RelatonBib
2
- class HitCollection < Array
4
+ class HitCollection
5
+ extend Forwardable
6
+
7
+ def_delegators :@array, :<<, :[], :first, :empty?, :any?, :size, :each, :each_slice
8
+
3
9
  # @return [TrueClass, FalseClass]
4
10
  attr_reader :fetched
5
11
 
@@ -9,6 +15,14 @@ module RelatonBib
9
15
  # @return [String]
10
16
  attr_reader :year
11
17
 
18
+ # @param text [String] reference to search
19
+ def initialize(text, year = nil)
20
+ @array = []
21
+ @text = text
22
+ @year = year
23
+ @fetched = false
24
+ end
25
+
12
26
  # @return [RelatonIso::HitCollection]
13
27
  def fetch
14
28
  workers = WorkersPool.new 4
@@ -22,13 +36,38 @@ module RelatonBib
22
36
  self
23
37
  end
24
38
 
39
+ def to_xml(**opts)
40
+ builder = Nokogiri::XML::Builder.new(encoding: "UTF-8") do |xml|
41
+ xml.documents do
42
+ @array.each do |hit|
43
+ hit.fetch
44
+ hit.to_xml xml, **opts
45
+ end
46
+ end
47
+ end
48
+ builder.to_xml
49
+ end
50
+
51
+ def select(&block)
52
+ me = self.deep_dup
53
+ array_dup = self.instance_variable_get(:@array).deep_dup
54
+ me.instance_variable_set(:@array, array_dup)
55
+ array_dup.select!(&block)
56
+ me
57
+ end
58
+
59
+ def reduce!(sum, &block)
60
+ @array = @array.reduce sum, &block
61
+ self
62
+ end
63
+
25
64
  def to_s
26
65
  inspect
27
66
  end
28
67
 
29
68
  # @return [String]
30
69
  def inspect
31
- "<#{self.class}:#{format('%#.14x', object_id << 1)} @fetched=#{@fetched}>"
70
+ "<#{self.class}:#{format('%#.14x', object_id << 1)} @ref=#{@text} @fetched=#{@fetched}>"
32
71
  end
33
72
  end
34
73
  end
@@ -39,7 +39,7 @@ module RelatonBib
39
39
 
40
40
  builder.parent["language"] = language.join(",") if language&.any?
41
41
  builder.parent["script"] = script.join(",") if script&.any?
42
- builder.text content
42
+ builder.text content.encode(xml: :text)
43
43
  end
44
44
 
45
45
  # @return [Hash]
@@ -6,7 +6,7 @@ module RelatonBib
6
6
  # @return [Symbol] :src/:obp/:rss
7
7
  attr_reader :type
8
8
  # @retutn [URI]
9
- attr_accessor :content
9
+ attr_reader :content
10
10
 
11
11
  # @param type [String] src/obp/rss
12
12
  # @param content [String]
@@ -15,6 +15,11 @@ module RelatonBib
15
15
  @content = Addressable::URI.parse content if content
16
16
  end
17
17
 
18
+ # @parma url [String]
19
+ def content=(url)
20
+ @content = Addressable::URI.parse url
21
+ end
22
+
18
23
  # @param builder [Nokogiri::XML::Builder]
19
24
  def to_xml(builder)
20
25
  builder.uri(content.to_s, type: type)
@@ -1,3 +1,3 @@
1
1
  module RelatonBib
2
- VERSION = "0.5.0".freeze
2
+ VERSION = "0.8.0".freeze
3
3
  end
@@ -42,6 +42,8 @@ module RelatonBib
42
42
  extent: fetch_extent(bibitem),
43
43
  accesslocation: bibitem.xpath("./accesslocation").map(&:text),
44
44
  classification: fetch_classification(bibitem),
45
+ keyword: bibitem.xpath("keyword").map(&:text),
46
+ license: bibitem.xpath("license").map(&:text),
45
47
  validity: fetch_validity(bibitem),
46
48
  }
47
49
  end
@@ -168,12 +170,13 @@ module RelatonBib
168
170
  end
169
171
 
170
172
  def fetch_dates(item)
171
- item.xpath("./date").map do |d|
173
+ item.xpath("./date").reduce([]) do |a, d|
172
174
  type = d[:type].to_s.empty? ? "published" : d[:type]
173
- RelatonBib::BibliographicDate.new(
174
- type: type, on: d.at("on")&.text, from: d.at("from")&.text,
175
- to: d.at("to")&.text
176
- )
175
+ if (on = d.at("on"))
176
+ a << RelatonBib::BibliographicDate.new(type: type, on: on.text, to: d.at("to")&.text)
177
+ elsif (from = d.at("from"))
178
+ a << RelatonBib::BibliographicDate.new(type: type, from: from.text, to: d.at("to")&.text)
179
+ end
177
180
  end
178
181
  end
179
182
 
data/relaton-bib.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
 
11
11
  spec.summary = "RelatonBib: Ruby XMLDOC impementation."
12
12
  spec.description = "RelatonBib: Ruby XMLDOC impementation."
13
- spec.homepage = "https://github.com/relaton/relaton-item"
13
+ spec.homepage = "https://github.com/relaton/relaton-bib"
14
14
  spec.license = "BSD-2-Clause"
15
15
 
16
16
  # Specify which files should be added to the gem when it is released.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-bib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-11 00:00:00.000000000 Z
11
+ date: 2020-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: debase
@@ -193,7 +193,6 @@ files:
193
193
  - ".rspec"
194
194
  - ".rubocop.yml"
195
195
  - Gemfile
196
- - Gemfile.lock
197
196
  - LICENSE.txt
198
197
  - README.adoc
199
198
  - Rakefile
@@ -212,6 +211,7 @@ files:
212
211
  - lib/relaton_bib/contribution_info.rb
213
212
  - lib/relaton_bib/contributor.rb
214
213
  - lib/relaton_bib/copyright_association.rb
214
+ - lib/relaton_bib/deep_dup.rb
215
215
  - lib/relaton_bib/document_identifier.rb
216
216
  - lib/relaton_bib/document_relation.rb
217
217
  - lib/relaton_bib/document_relation_collection.rb
@@ -219,7 +219,6 @@ files:
219
219
  - lib/relaton_bib/formatted_ref.rb
220
220
  - lib/relaton_bib/formatted_string.rb
221
221
  - lib/relaton_bib/hash_converter.rb
222
- - lib/relaton_bib/hash_to_bib.rb
223
222
  - lib/relaton_bib/hit.rb
224
223
  - lib/relaton_bib/hit_collection.rb
225
224
  - lib/relaton_bib/localized_string.rb
@@ -235,7 +234,7 @@ files:
235
234
  - lib/relaton_bib/workers_pool.rb
236
235
  - lib/relaton_bib/xml_parser.rb
237
236
  - relaton-bib.gemspec
238
- homepage: https://github.com/relaton/relaton-item
237
+ homepage: https://github.com/relaton/relaton-bib
239
238
  licenses:
240
239
  - BSD-2-Clause
241
240
  metadata: {}
@@ -1,70 +0,0 @@
1
- module RelatonBib
2
- class << self
3
- def hash_to_bib(args, nested = false)
4
- return nil unless args.is_a?(Hash)
5
- ret = Marshal.load(Marshal.dump(symbolize(args))) # deep copy
6
- timestamp_hash(ret) unless nested
7
- title_hash_to_bib(ret)
8
- link_hash_to_bib(ret)
9
- language_hash_to_bib(ret)
10
- script_hash_to_bib(ret)
11
- dates_hash_to_bib(ret)
12
- docid_hash_to_bib(ret)
13
- version_hash_to_bib(ret)
14
- biblionote_hash_to_bib(ret)
15
- abstract_hash_to_bib(ret)
16
- formattedref_hash_to_bib(ret)
17
- docstatus_hash_to_bib(ret)
18
- contributors_hash_to_bib(ret)
19
- relations_hash_to_bib(ret)
20
- series_hash_to_bib(ret)
21
- medium_hash_to_bib(ret)
22
- place_hash_to_bib(ret)
23
- extent_hash_to_bib(ret)
24
- accesslocation_hash_to_bib(ret)
25
- classification_hash_to_bib(ret)
26
- validity_hash_to_bib(ret)
27
- ret
28
- end
29
-
30
- def timestamp_hash(ret)
31
- ret[:fetched] ||= Date.today.to_s
32
- end
33
-
34
- def symbolize(obj)
35
- obj.is_a? Hash and
36
- return obj.inject({}){|memo,(k,v)| memo[k.to_sym] = symbolize(v); memo}
37
- obj.is_a? Array and
38
- return obj.inject([]){|memo,v | memo << symbolize(v); memo}
39
- return obj
40
- end
41
-
42
- def array(a)
43
- return [] unless a
44
- return [].push(a) unless a.is_a?(Array)
45
- a
46
- end
47
-
48
- def localname(f, c)
49
- return nil if f.nil?
50
- f.is_a?(Hash) and lang = f[:language]
51
- lang ||= c[:name][:language]
52
- f.is_a?(Hash) and script = f[:script]
53
- script ||= c[:name][:script]
54
- f.is_a?(Hash) ?
55
- RelatonBib::LocalizedString.new(f[:content], lang, script) :
56
- RelatonBib::LocalizedString.new(f, lang, script)
57
- end
58
-
59
- def localizedstring(f)
60
- f.is_a?(Hash) ?
61
- RelatonBib::LocalizedString.new(f[:content], f[:language], f[:script]) :
62
- RelatonBib::LocalizedString.new(f)
63
- end
64
-
65
- def formattedref(f)
66
- f.is_a?(Hash) ? RelatonBib::FormattedRef.new(f) :
67
- RelatonBib::FormattedRef.new(content: f)
68
- end
69
- end
70
- end