relaton-bib 0.7.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 +4 -4
- data/.github/workflows/macos.yml +16 -7
- data/.github/workflows/ubuntu.yml +16 -7
- data/.github/workflows/windows.yml +16 -7
- data/lib/relaton_bib.rb +1 -0
- data/lib/relaton_bib/deep_dup.rb +30 -0
- data/lib/relaton_bib/hit.rb +17 -3
- data/lib/relaton_bib/hit_collection.rb +41 -2
- data/lib/relaton_bib/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d8b311616840c90e25325574979fe74ec6253ef5d23c0873545255ff3dce033
|
4
|
+
data.tar.gz: b144ea5a04e375c1a97ccc06891e0660b790048394a65e272f54ffda8d8c2edb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 81c5c5906f25a7f2289f9393efce6233ba11c7d8a0ffa0dfa1b7b863d69413756a6df679e5e0222fc744b3450bb6610499cbabe89da8b75dbaa00c1d9502080b
|
7
|
+
data.tar.gz: 31a66938522b61ca282a674106023d65c6250d0636f477b1dbed979427092a2f5aa3f6f8863331190b101a0eb56aa8e96dafed023c17a37f3c0459b148b2e413
|
data/.github/workflows/macos.yml
CHANGED
@@ -1,20 +1,29 @@
|
|
1
|
-
# Auto-generated
|
2
|
-
#
|
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:
|
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@
|
16
|
-
|
17
|
-
|
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
|
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
|
2
|
-
#
|
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:
|
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@
|
16
|
-
|
17
|
-
|
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
|
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
|
2
|
-
#
|
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:
|
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@
|
16
|
-
|
17
|
-
|
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
|
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
@@ -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
|
data/lib/relaton_bib/hit.rb
CHANGED
@@ -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
|
-
|
28
|
-
|
29
|
-
|
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
|
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
|
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: 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-02-
|
11
|
+
date: 2020-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: debase
|
@@ -211,6 +211,7 @@ files:
|
|
211
211
|
- lib/relaton_bib/contribution_info.rb
|
212
212
|
- lib/relaton_bib/contributor.rb
|
213
213
|
- lib/relaton_bib/copyright_association.rb
|
214
|
+
- lib/relaton_bib/deep_dup.rb
|
214
215
|
- lib/relaton_bib/document_identifier.rb
|
215
216
|
- lib/relaton_bib/document_relation.rb
|
216
217
|
- lib/relaton_bib/document_relation_collection.rb
|