relaton-bib 1.5.0 → 1.6.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/macos.yml +2 -0
- data/lib/relaton_bib.rb +12 -9
- data/lib/relaton_bib/biblio_note.rb +5 -4
- data/lib/relaton_bib/bibliographic_date.rb +34 -15
- data/lib/relaton_bib/bibliographic_item.rb +3 -3
- data/lib/relaton_bib/contribution_info.rb +5 -2
- data/lib/relaton_bib/document_identifier.rb +3 -2
- data/lib/relaton_bib/document_relation_collection.rb +1 -1
- data/lib/relaton_bib/formatted_string.rb +2 -1
- data/lib/relaton_bib/hash_converter.rb +1 -1
- data/lib/relaton_bib/hit_collection.rb +2 -1
- data/lib/relaton_bib/localized_string.rb +5 -1
- data/lib/relaton_bib/structured_identifier.rb +2 -1
- data/lib/relaton_bib/typed_title_string.rb +8 -2
- data/lib/relaton_bib/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: a7f6ef2eec280ac48d171fa25bc4c88d2df63692b5736823868f1751af971f3d
|
4
|
+
data.tar.gz: 78e4a52cb0e1d1ce66404af62d2e7f79f27634acbf84094a19e0f593affbdb5a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 226ead0669d2f060d24b541c8e0eab0d9357b0a697b96572aed3b68b539b97d9f2662f76669a7e0167eedd3fcbc1bdf8ff65e3d3135facdb1531619749095cba
|
7
|
+
data.tar.gz: 2a333a1a1ba8aa6683a6abc6f97d521c3be510cbaa7455483266e62523764cf6e04de0b909a0109c21c0c1e5aab5fc224140f97b0f2b60c66d55535e5f434c12
|
data/.github/workflows/macos.yml
CHANGED
@@ -32,6 +32,8 @@ jobs:
|
|
32
32
|
- name: Update gems
|
33
33
|
run: |
|
34
34
|
sudo gem install bundler --force
|
35
|
+
ruby -v | grep 2.5 && bundle config set build.debase --with-cflags="-Wno-error=implicit-function-declaration"
|
36
|
+
ruby -v | grep 2.5 && bundle config set build.ruby-debug-ide --with-cflags="-Wno-error=implicit-function-declaration"
|
35
37
|
bundle install --jobs 4 --retry 3
|
36
38
|
- name: Run specs
|
37
39
|
run: |
|
data/lib/relaton_bib.rb
CHANGED
@@ -13,21 +13,24 @@ module RelatonBib
|
|
13
13
|
|
14
14
|
class << self
|
15
15
|
# @param date [String, Integer, Date]
|
16
|
-
# @
|
17
|
-
|
16
|
+
# @param str [Boolean]
|
17
|
+
# @return [Date, nil]
|
18
|
+
def parse_date(date, str = true) # rubocop:disable Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity,Metrics/AbcSize
|
18
19
|
return date if date.is_a?(Date)
|
19
20
|
|
20
|
-
|
21
|
-
case sdate
|
21
|
+
case date.to_s
|
22
22
|
when /(?<date>\w+\s\d{4})/ # February 2012
|
23
|
-
Date.strptime($~[:date], "%B %Y")
|
23
|
+
d = Date.strptime($~[:date], "%B %Y")
|
24
|
+
str ? d.strftime("%Y-%m") : d
|
24
25
|
when /(?<date>\w+\s\d{1,2},\s\d{4})/ # February 11, 2012
|
25
|
-
Date.strptime($~[:date], "%B %d, %Y")
|
26
|
+
d = Date.strptime($~[:date], "%B %d, %Y")
|
27
|
+
str ? d.strftime("%Y-%m-%d") : d
|
26
28
|
when /(?<date>\d{4}-\d{2}-\d{2})/ # 2012-02-11
|
27
|
-
Date.
|
29
|
+
str ? $~[:date] : Date.strptime($~[:date], "%Y-%m-%d")
|
28
30
|
when /(?<date>\d{4}-\d{2})/ # 2012-02
|
29
|
-
Date.strptime
|
30
|
-
when /(?<date>\d{4})/
|
31
|
+
str ? $~[:date] : Date.strptime($~[:date], "%Y-%m")
|
32
|
+
when /(?<date>\d{4})/ # 2012
|
33
|
+
str ? $~[:date] : Date.strptime($~[:date], "%Y")
|
31
34
|
end
|
32
35
|
end
|
33
36
|
end
|
@@ -3,7 +3,7 @@ module RelatonBib
|
|
3
3
|
extend Forwardable
|
4
4
|
|
5
5
|
def_delegators :@array, :[], :first, :last, :empty?, :any?, :size,
|
6
|
-
:each, :map, :detect, :length
|
6
|
+
:each, :map, :reduce, :detect, :length
|
7
7
|
|
8
8
|
def initialize(notes)
|
9
9
|
@array = notes
|
@@ -62,9 +62,10 @@ module RelatonBib
|
|
62
62
|
# @return [String]
|
63
63
|
def to_asciibib(prefix = "", count = 1)
|
64
64
|
pref = prefix.empty? ? prefix : prefix + "."
|
65
|
-
|
66
|
-
out
|
67
|
-
out +=
|
65
|
+
has_attrs = !(type.nil? || type.empty?)
|
66
|
+
out = count > 1 && has_attrs ? "#{pref}biblionote::\n" : ""
|
67
|
+
out += "#{pref}biblionote.type:: #{type}\n" if type
|
68
|
+
out += super "#{pref}biblionote", 1, has_attrs
|
68
69
|
out
|
69
70
|
end
|
70
71
|
end
|
@@ -12,15 +12,6 @@ module RelatonBib
|
|
12
12
|
# @return [String]
|
13
13
|
attr_reader :type
|
14
14
|
|
15
|
-
# @return [Date]
|
16
|
-
attr_reader :from
|
17
|
-
|
18
|
-
# @return [Date]
|
19
|
-
attr_reader :to
|
20
|
-
|
21
|
-
# @return [Date]
|
22
|
-
attr_reader :on
|
23
|
-
|
24
15
|
# @param type [String] "published", "accessed", "created", "activated"
|
25
16
|
# @param on [String]
|
26
17
|
# @param from [String]
|
@@ -36,6 +27,21 @@ module RelatonBib
|
|
36
27
|
@to = RelatonBib.parse_date to
|
37
28
|
end
|
38
29
|
|
30
|
+
# @param part [Symbol] :year, :month, :day, :date
|
31
|
+
# @return [String, Date, nil]
|
32
|
+
def from(part = nil)
|
33
|
+
d = instance_variable_get "@#{__callee__}".to_sym
|
34
|
+
return d unless part && d
|
35
|
+
|
36
|
+
date = parse_date(d)
|
37
|
+
return date if part == :date
|
38
|
+
|
39
|
+
date.is_a?(Date) ? date.send(part) : date
|
40
|
+
end
|
41
|
+
|
42
|
+
alias_method :to, :from
|
43
|
+
alias_method :on, :from
|
44
|
+
|
39
45
|
# rubocop:disable Metrics/AbcSize
|
40
46
|
|
41
47
|
# @param builder [Nokogiri::XML::Builder]
|
@@ -77,14 +83,27 @@ module RelatonBib
|
|
77
83
|
private
|
78
84
|
|
79
85
|
# Formats date
|
80
|
-
# @param date [
|
81
|
-
# @param format [Symbol, nil] :full (yyyy-mm-dd), :short (yyyy-mm) or nil
|
86
|
+
# @param date [String]
|
87
|
+
# @param format [Symbol, nil] :full (yyyy-mm-dd), :short (yyyy-mm) or nil
|
82
88
|
# @return [String]
|
83
89
|
def date_format(date, format = nil)
|
84
|
-
case format
|
85
|
-
|
86
|
-
|
87
|
-
|
90
|
+
tmplt = case format
|
91
|
+
when :short then "%Y-%m"
|
92
|
+
when :full then "%Y-%m-%d"
|
93
|
+
else return date
|
94
|
+
end
|
95
|
+
d = parse_date(date)
|
96
|
+
d.is_a?(Date) ? d.strftime(tmplt) : d
|
97
|
+
end
|
98
|
+
|
99
|
+
# @param date [String]
|
100
|
+
# @return [Date]
|
101
|
+
def parse_date(date)
|
102
|
+
case date
|
103
|
+
when /^\d{4}-\d{2}-\d{2}/ then Date.parse(date) # 2012-02-11
|
104
|
+
when /^\d{4}-\d{2}/ then Date.strptime(date, "%Y-%m") # 2012-02
|
105
|
+
when /^\d{4}/ then Date.strptime(date, "%Y") # 2012
|
106
|
+
else date
|
88
107
|
end
|
89
108
|
end
|
90
109
|
end
|
@@ -292,7 +292,7 @@ module RelatonBib
|
|
292
292
|
def shortref(identifier, **opts) # rubocop:disable Metrics/CyclomaticComplexity,Metrics/AbcSize,Metrics/PerceivedComplexity
|
293
293
|
pubdate = date.select { |d| d.type == "published" }
|
294
294
|
year = if opts[:no_year] || pubdate.empty? then ""
|
295
|
-
else ":" + pubdate&.first&.on
|
295
|
+
else ":" + pubdate&.first&.on(:year).to_s
|
296
296
|
end
|
297
297
|
year += ": All Parts" if opts[:all_parts] || @all_parts
|
298
298
|
|
@@ -610,8 +610,8 @@ module RelatonBib
|
|
610
610
|
date.each do |d|
|
611
611
|
case d.type
|
612
612
|
when "published"
|
613
|
-
item.year = d.on
|
614
|
-
item.month = d.on
|
613
|
+
item.year = d.on :year
|
614
|
+
item.month = d.on :month
|
615
615
|
when "accessed" then item.urldate = d.on.to_s
|
616
616
|
end
|
617
617
|
end
|
@@ -81,8 +81,11 @@ module RelatonBib
|
|
81
81
|
attr_reader :entity
|
82
82
|
|
83
83
|
# @param entity [RelatonBib::Person, RelatonBib::Organization]
|
84
|
-
# @param role [Array<
|
85
|
-
def initialize(entity:, role: [
|
84
|
+
# @param role [Array<Hash>]
|
85
|
+
def initialize(entity:, role: [])
|
86
|
+
if role.empty?
|
87
|
+
role << { type: entity.is_a?(Person) ? "author" : "publisher" }
|
88
|
+
end
|
86
89
|
@entity = entity
|
87
90
|
@role = role.map { |r| ContributorRole.new(**r) }
|
88
91
|
end
|
@@ -71,11 +71,12 @@ module RelatonBib
|
|
71
71
|
# @return [String]
|
72
72
|
def to_asciibib(prefix = "", count = 1)
|
73
73
|
pref = prefix.empty? ? prefix : prefix + "."
|
74
|
+
return "#{pref}docid:: #{id}\n" unless type || scope
|
75
|
+
|
74
76
|
out = count > 1 ? "#{pref}docid::\n" : ""
|
75
77
|
out += "#{pref}docid.type:: #{type}\n" if type
|
76
78
|
out += "#{pref}docid.scope:: #{scope}\n" if scope
|
77
|
-
out
|
78
|
-
out
|
79
|
+
out + "#{pref}docid.id:: #{id}\n"
|
79
80
|
end
|
80
81
|
|
81
82
|
private
|
@@ -6,7 +6,7 @@ module RelatonBib
|
|
6
6
|
extend Forwardable
|
7
7
|
|
8
8
|
def_delegators :@array, :<<, :[], :first, :last, :empty?, :any?, :size,
|
9
|
-
:each, :detect, :map, :length
|
9
|
+
:each, :detect, :map, :reduce, :length
|
10
10
|
|
11
11
|
# @param relation [Array<RelatonBib::DocumentRelation, Hash>]
|
12
12
|
# @option relation [String] :type
|
@@ -44,7 +44,8 @@ module RelatonBib
|
|
44
44
|
# @param prefix [String]
|
45
45
|
# @param count [Integer] number of elements
|
46
46
|
# @return [String]
|
47
|
-
def to_asciibib(prefix = "", count = 1)
|
47
|
+
def to_asciibib(prefix = "", count = 1, has_attrs = false)
|
48
|
+
has_attrs ||= !(format.nil? || format.empty?)
|
48
49
|
pref = prefix.empty? ? prefix : prefix + "."
|
49
50
|
# out = count > 1 ? "#{prefix}::\n" : ""
|
50
51
|
out = super
|
@@ -125,7 +125,7 @@ module RelatonBib
|
|
125
125
|
|
126
126
|
ret[:docid] = array(ret[:docid])
|
127
127
|
ret[:docid]&.each_with_index do |id, i|
|
128
|
-
type = id[:type] || id[:id].match(/^\w
|
128
|
+
type = id[:type] || id[:id].match(/^\w+\s/)&.to_s
|
129
129
|
ret[:docid][i] = DocumentIdentifier.new(id: id[:id], type: type,
|
130
130
|
scope: id[:scope])
|
131
131
|
end
|
@@ -4,7 +4,8 @@ module RelatonBib
|
|
4
4
|
class HitCollection
|
5
5
|
extend Forwardable
|
6
6
|
|
7
|
-
def_delegators :@array, :<<, :[], :first, :empty?, :any?, :size, :each,
|
7
|
+
def_delegators :@array, :<<, :[], :first, :empty?, :any?, :size, :each,
|
8
|
+
:each_slice, :reduce
|
8
9
|
|
9
10
|
# @return [TrueClass, FalseClass]
|
10
11
|
attr_reader :fetched
|
@@ -77,9 +77,13 @@ module RelatonBib
|
|
77
77
|
# @param prefix [String]
|
78
78
|
# @param count [Integer] number of elements
|
79
79
|
# @return [String]
|
80
|
-
def to_asciibib(prefix = "", count = 1) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
|
80
|
+
def to_asciibib(prefix = "", count = 1, has_attrs = false) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity,Metrics/MethodLength
|
81
81
|
pref = prefix.empty? ? prefix : prefix + "."
|
82
82
|
if content.is_a? String
|
83
|
+
unless language&.any? || script&.any? || has_attrs
|
84
|
+
return "#{prefix}:: #{content}\n"
|
85
|
+
end
|
86
|
+
|
83
87
|
out = count > 1 ? "#{prefix}::\n" : ""
|
84
88
|
out += "#{pref}content:: #{content}\n"
|
85
89
|
language&.each { |l| out += "#{pref}language:: #{l}\n" }
|
@@ -3,7 +3,8 @@ module RelatonBib
|
|
3
3
|
include RelatonBib
|
4
4
|
extend Forwardable
|
5
5
|
|
6
|
-
def_delegators :@collection, :any?, :size, :[], :detect
|
6
|
+
def_delegators :@collection, :any?, :size, :[], :detect, :map, :each,
|
7
|
+
:reduce
|
7
8
|
|
8
9
|
# @param collection [Array<RelatonBib::StructuredIdentifier>]
|
9
10
|
def initialize(collection)
|
@@ -3,7 +3,7 @@ module RelatonBib
|
|
3
3
|
extend Forwardable
|
4
4
|
|
5
5
|
def_delegators :@array, :[], :first, :last, :empty?, :any?, :size,
|
6
|
-
:each, :detect, :map, :length
|
6
|
+
:each, :detect, :map, :reduce, :length
|
7
7
|
|
8
8
|
# @param title [Array<RelatonBib::TypedTitleString, Hash>]
|
9
9
|
def initialize(title = [])
|
@@ -30,6 +30,12 @@ module RelatonBib
|
|
30
30
|
TypedTitleStringCollection.new(titles.select { |t| yield t })
|
31
31
|
end
|
32
32
|
|
33
|
+
# @param init [Array, Hash]
|
34
|
+
# @return [RelatonBib::TypedTitleStringCollection]
|
35
|
+
# def reduce(init)
|
36
|
+
# self.class.new @array.reduce(init) { |m, t| yield m, t }
|
37
|
+
# end
|
38
|
+
|
33
39
|
# @param title [RelatonBib::TypedTitleString]
|
34
40
|
# @return [self]
|
35
41
|
def <<(title)
|
@@ -156,7 +162,7 @@ module RelatonBib
|
|
156
162
|
pref = prefix.empty? ? prefix : prefix + "."
|
157
163
|
out = count > 1 ? "#{pref}title::\n" : ""
|
158
164
|
out += "#{pref}title.type:: #{type}\n" if type
|
159
|
-
out += title.to_asciibib "#{pref}title"
|
165
|
+
out += title.to_asciibib "#{pref}title", 1, !(type.nil? || type.empty?)
|
160
166
|
out
|
161
167
|
end
|
162
168
|
end
|
data/lib/relaton_bib/version.rb
CHANGED
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: 1.
|
4
|
+
version: 1.6.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: 2020-
|
11
|
+
date: 2020-11-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: byebug
|