relaton-bib 0.5.2 → 0.6.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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8ef89450c5deeab8305d50a98218ad8c6b8425904cfdc8918542fed5ee2790e5
|
4
|
+
data.tar.gz: 60dccc2abedbb9f0bc940552d363c67d65b9c31c4bff4bde2d7e99ef3bc9a9a5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5015108cf9f8e97cd39de74eb6db49886aafd43beb048c7a0dadd1013a5de31b565cd6bdd400cfcf068de4b421e593007962cfafbf82262e6f30a7a156e8fc8
|
7
|
+
data.tar.gz: 1bc31977d22338c4491d1b45472746dec975e7b4ead6732437b6e206cb3f52e17ba8070a20ff84fd8cc7b6c69d5d2a4958ce4e1be958bb4ec4ab84495daddf5e
|
@@ -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
|
@@ -222,6 +226,7 @@ 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) }
|
225
230
|
end
|
226
231
|
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
227
232
|
# rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
@@ -303,6 +308,7 @@ module RelatonBib
|
|
303
308
|
hash["classification"] = single_element_array(classification) if classification&.any?
|
304
309
|
hash["validity"] = validity.to_hash if validity
|
305
310
|
hash["fetched"] = fetched.to_s if fetched
|
311
|
+
hash["keyword"] = single_element_array(keyword) if keyword&.any?
|
306
312
|
hash
|
307
313
|
end
|
308
314
|
|
@@ -323,6 +329,7 @@ module RelatonBib
|
|
323
329
|
bibtex_date item
|
324
330
|
bibtex_series item
|
325
331
|
bibtex_classification item
|
332
|
+
item.keywords = keyword.map(&:content).join(", ") if keyword.any?
|
326
333
|
bibtex_docidentifier item
|
327
334
|
item.timestamp = fetched.to_s if fetched
|
328
335
|
bibtex_link item
|
@@ -455,7 +462,7 @@ module RelatonBib
|
|
455
462
|
classification.each do |c|
|
456
463
|
case c.type
|
457
464
|
when "type" then item["type"] = c.value
|
458
|
-
when "keyword" then item.keywords = c.value
|
465
|
+
# when "keyword" then item.keywords = c.value
|
459
466
|
when "mendeley" then item["mendeley-tags"] = c.value
|
460
467
|
end
|
461
468
|
end
|
@@ -520,6 +527,7 @@ module RelatonBib
|
|
520
527
|
extent.each { |e| builder.extent { e.to_xml builder } }
|
521
528
|
accesslocation.each { |al| builder.accesslocation al }
|
522
529
|
classification.each { |cls| cls.to_xml builder }
|
530
|
+
keyword.each { |kw| builder.keyword { kw.to_xml(builder) } }
|
523
531
|
validity&.to_xml builder
|
524
532
|
if block_given?
|
525
533
|
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
|
-
|
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
|
data/lib/relaton_bib/version.rb
CHANGED
@@ -42,6 +42,7 @@ module RelatonBib
|
|
42
42
|
extent: fetch_extent(bibitem),
|
43
43
|
accesslocation: bibitem.xpath("./accesslocation").map(&:text),
|
44
44
|
classification: fetch_classification(bibitem),
|
45
|
+
keyword: fetch_keyword(bibitem),
|
45
46
|
validity: fetch_validity(bibitem),
|
46
47
|
}
|
47
48
|
end
|
@@ -124,6 +125,10 @@ module RelatonBib
|
|
124
125
|
end
|
125
126
|
end
|
126
127
|
|
128
|
+
def fetch_keyword(item)
|
129
|
+
item.xpath("keyword").map &:text
|
130
|
+
end
|
131
|
+
|
127
132
|
def fetch_validity(item)
|
128
133
|
vl = item.at("./validity")
|
129
134
|
return unless vl
|
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.
|
4
|
+
version: 0.6.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-02-
|
11
|
+
date: 2020-02-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: debase
|
@@ -218,7 +218,6 @@ files:
|
|
218
218
|
- lib/relaton_bib/formatted_ref.rb
|
219
219
|
- lib/relaton_bib/formatted_string.rb
|
220
220
|
- lib/relaton_bib/hash_converter.rb
|
221
|
-
- lib/relaton_bib/hash_to_bib.rb
|
222
221
|
- lib/relaton_bib/hit.rb
|
223
222
|
- lib/relaton_bib/hit_collection.rb
|
224
223
|
- lib/relaton_bib/localized_string.rb
|
@@ -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
|