relaton 0.1.3 → 0.1.4

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: 855dfd4001f1fbfc76c738140f38a11b84c91f3c5d82d6ea826bf8e5a2c3ffdf
4
- data.tar.gz: 70eb51f1467b58d20eac03378a08479f1082dd520502bb18d96481399e35a7a1
3
+ metadata.gz: 1fe630fa3e1b71d5015cb2585ddde54e3dfeb0b50557c9c21b8d99cf29d284f5
4
+ data.tar.gz: dc21bfb4dda47648077f5195bd3b5fdd84cab5f7b9b62a77aa79422f4057476e
5
5
  SHA512:
6
- metadata.gz: 8f4115c26d4c21c48f77466879021c791c8c92f561dff7cc0c5bb88b146902aaef92202e0ada57294c62f222003bd5f74d29182ccec748c65e0d7e68a5601dfc
7
- data.tar.gz: 195f1b6689c35453fd52ce1d4e0a2856cab28744c9c0d4cbf3290a676e80c92df3c099c893bf2b250e0c91a7c763825c66c19fe0c5eed77927a0ed6c9b6a716c
6
+ metadata.gz: 2bf91d95623237aa5d3915023d7dbe1d872988d11c44f202e7f6924443f5caca31ad232a747415f77e1a2f9aee077664983b0c373841bb669706f294b42a1117
7
+ data.tar.gz: f43db773f05d5975d04d17bcdbb4a049b8b0c73446c8332ac82d3031dec4fab267ed352ad5df09eac4fcc211ca564268144fbd3380dfee9b436e9a595c727c97
data/Gemfile.lock CHANGED
@@ -1,12 +1,12 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- relaton (0.1.2)
4
+ relaton (0.1.4)
5
5
  algoliasearch
6
6
  gbbib (~> 0.2.1)
7
- iev (~> 0.1.0)
7
+ iso-bib-item (~> 0.2.3)
8
8
  isobib (~> 0.2.0)
9
- rfcbib (~> 0.2.1)
9
+ rfcbib (~> 0.2.2)
10
10
 
11
11
  GEM
12
12
  remote: https://rubygems.org/
@@ -16,7 +16,7 @@ GEM
16
16
  json (>= 1.5.1)
17
17
  ast (2.4.0)
18
18
  byebug (9.1.0)
19
- cnccs (0.1.1)
19
+ cnccs (0.1.2)
20
20
  coderay (1.1.2)
21
21
  diff-lcs (1.3)
22
22
  docile (1.3.1)
@@ -24,8 +24,10 @@ GEM
24
24
  nokogiri (>= 1.4.3)
25
25
  ffi (1.9.25)
26
26
  formatador (0.2.5)
27
- gbbib (0.2.1)
27
+ gb-agencies (0.0.3)
28
+ gbbib (0.2.2)
28
29
  cnccs (~> 0.1.1)
30
+ gb-agencies (~> 0.0.1)
29
31
  iso-bib-item (~> 0.2)
30
32
  guard (2.14.2)
31
33
  formatador (>= 0.2.4)
@@ -42,15 +44,13 @@ GEM
42
44
  guard-compat (~> 1.1)
43
45
  rspec (>= 2.99.0, < 4.0)
44
46
  httpclient (2.8.3)
45
- iev (0.1.0)
46
- nokogiri
47
- iso-bib-item (0.2.2)
47
+ iso-bib-item (0.2.3)
48
48
  isoics (~> 0.1.6)
49
49
  nokogiri (~> 1.8.4)
50
50
  ruby_deep_clone (~> 0.8.0)
51
- isobib (0.2.0)
51
+ isobib (0.2.1)
52
52
  algoliasearch
53
- iso-bib-item (~> 0.2.0)
53
+ iso-bib-item (~> 0.2.3)
54
54
  isoics (0.1.6)
55
55
  jaro_winkler (1.5.1)
56
56
  json (2.1.0)
@@ -82,7 +82,7 @@ GEM
82
82
  rb-fsevent (0.10.3)
83
83
  rb-inotify (0.9.10)
84
84
  ffi (>= 0.5.0, < 2)
85
- rfcbib (0.2.1)
85
+ rfcbib (0.2.2)
86
86
  iso-bib-item (~> 0.2.0)
87
87
  rspec (3.7.0)
88
88
  rspec-core (~> 3.7.0)
@@ -97,7 +97,7 @@ GEM
97
97
  diff-lcs (>= 1.2.0, < 2.0)
98
98
  rspec-support (~> 3.7.0)
99
99
  rspec-support (3.7.1)
100
- rubocop (0.58.1)
100
+ rubocop (0.58.2)
101
101
  jaro_winkler (~> 1.5.1)
102
102
  parallel (~> 1.10)
103
103
  parser (>= 2.5, != 2.5.1.1)
data/lib/relaton/db.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "pstore"
2
+ require "iso_bib_item"
2
3
  require_relative "registry"
3
4
 
4
5
  module Relaton
@@ -11,7 +12,7 @@ module Relaton
11
12
  # @param local_cache [String] filename of local DB
12
13
  def initialize(global_cache, local_cache)
13
14
  @db = open_cache_biblio(global_cache)
14
- @local_db = open_cache_biblio(local_cache)
15
+ @local_db = open_cache_biblio(local_cache, global: false)
15
16
  @db_name = global_cache
16
17
  @local_db_name = local_cache
17
18
  register_gems
@@ -66,17 +67,13 @@ module Relaton
66
67
  @db.transaction do
67
68
  Nokogiri::XML::Builder.new(encoding: "UTF-8") do |xml|
68
69
  xml.documents do
69
- @db.roots.each { |key| @db[key]&.fetch("bib")&.to_xml(xml, {}) }
70
+ @db.roots.reject { |key| key == :version }.
71
+ each { |key| @db[key]&.fetch("bib")&.to_xml(xml, {}) }
70
72
  end
71
73
  end.to_xml
72
74
  end
73
75
  end
74
76
 
75
- # def save
76
- # save_cache_biblio(@db, @db_name)
77
- # save_cache_biblio(@local_db, @local_db_name)
78
- # end
79
-
80
77
  private
81
78
 
82
79
  def standard_class(code)
@@ -144,15 +141,37 @@ module Relaton
144
141
  end
145
142
 
146
143
  # @param filename [String] DB filename
147
- # @return [Hash]
148
- def open_cache_biblio(filename)
144
+ # @param global [TrueClass, FalseClass]
145
+ # @return [PStore]
146
+ def open_cache_biblio(filename, global: true)
149
147
  return nil if filename.nil?
150
- PStore.new filename
151
- # biblio = {}
152
- # return {} unless !filename.nil? && Pathname.new(filename).file?
153
- # File.open(filename, "r") { |f| biblio = JSON.parse(f.read) }
154
- # biblio.each { |_k, v| v["bib"] && (v["bib"] = from_xml(v["bib"])) }
155
- # biblio
148
+ db = PStore.new filename
149
+ if File.exist? filename
150
+ if global
151
+ unless check_cache_version(db)
152
+ File.delete filename
153
+ warn "Global cache version is obsolete and cleared."
154
+ end
155
+ set_cache_version db
156
+ elsif check_cache_version(db) then db
157
+ else
158
+ warn "Local cache version is obsolete."
159
+ nil
160
+ end
161
+ else
162
+ set_cache_version db
163
+ end
164
+ end
165
+
166
+ def check_cache_version(cache_db)
167
+ cache_db.transaction { cache_db[:version] == VERSION }
168
+ end
169
+
170
+ def set_cache_version(cache_db)
171
+ unless File.exist? cache_db.path
172
+ cache_db.transaction { cache_db[:version] = VERSION }
173
+ end
174
+ cache_db
156
175
  end
157
176
 
158
177
  # @param enstry [String] entry in XML format
@@ -1,3 +1,3 @@
1
1
  module Relaton
2
- VERSION = "0.1.3".freeze
2
+ VERSION = "0.1.4".freeze
3
3
  end
data/relaton.gemspec CHANGED
@@ -29,9 +29,9 @@ Gem::Specification.new do |spec|
29
29
 
30
30
  spec.add_dependency "algoliasearch"
31
31
  spec.add_dependency "gbbib", "~> 0.2.1"
32
- spec.add_dependency "iev", "~> 0.1.0"
33
32
  spec.add_dependency "isobib", "~> 0.2.0"
34
- spec.add_dependency "rfcbib", "~> 0.2.1"
33
+ spec.add_dependency "rfcbib", "~> 0.2.2"
34
+ spec.add_dependency 'iso-bib-item', '~> 0.2.3'
35
35
 
36
36
  spec.add_development_dependency "bundler", "~> 1.15"
37
37
  spec.add_development_dependency "byebug", "~> 9.1"
@@ -1,27 +1,28 @@
1
1
  require "spec_helper"
2
2
 
3
3
  RSpec.describe Relaton::Db do
4
- let!(:db) { Relaton::Db.new("testcache", "testcache2") }
4
+ # let!(:db) { Relaton::Db.new("testcache", "testcache2") }
5
5
 
6
6
  before :each do
7
7
  system "rm testcache testcache2"
8
+ @db = Relaton::Db.new "testcache", "testcache2"
8
9
  end
9
10
 
10
11
  it "rejects an illegal reference prefix" do
11
- expect { db.fetch("XYZ XYZ", nil, {}) }.to output(/does not have a recognised prefix/).to_stderr
12
+ expect { @db.fetch("XYZ XYZ", nil, {}) }.to output(/does not have a recognised prefix/).to_stderr
12
13
  testcache = PStore.new "testcache"
13
14
  testcache.transaction do
14
- expect(testcache.roots.size).to eq 0
15
+ expect(testcache.roots.size).to eq 1
15
16
  end
16
17
  testcache = PStore.new "testcache2"
17
18
  testcache.transaction do
18
- expect(testcache.roots.size).to eq 0
19
+ expect(testcache.roots.size).to eq 1
19
20
  end
20
21
  end
21
22
 
22
23
  it "gets an ISO reference and caches it" do
23
24
  stub_bib Isobib::IsoBibliography
24
- bib = db.fetch("ISO 19115-1", nil, {})
25
+ bib = @db.fetch("ISO 19115-1", nil, {})
25
26
  expect(bib).to be_instance_of IsoBibItem::IsoBibliographicItem
26
27
  expect(bib.to_xml).to include "<bibitem type=\"international-standard\" id=\"ISO19115-1\">"
27
28
  expect(File.exist?("testcache")).to be true
@@ -38,7 +39,7 @@ RSpec.describe Relaton::Db do
38
39
 
39
40
  it "deals with a non-existant ISO reference" do
40
41
  stub_bib Isobib::IsoBibliography
41
- bib = db.fetch("ISO 111111119115-1", nil, {})
42
+ bib = @db.fetch("ISO 111111119115-1", nil, {})
42
43
  expect(bib).to be_nil
43
44
  expect(File.exist?("testcache")).to be true
44
45
  expect(File.exist?("testcache2")).to be true
@@ -56,22 +57,22 @@ RSpec.describe Relaton::Db do
56
57
 
57
58
  it "list all elements as a serialization" do
58
59
  stub_bib Isobib::IsoBibliography, 2
59
- db.fetch "ISO 19115-1", nil, {}
60
- db.fetch "ISO 19115-2", nil, {}
60
+ @db.fetch "ISO 19115-1", nil, {}
61
+ @db.fetch "ISO 19115-2", nil, {}
61
62
  file = "spec/support/list_entries.xml"
62
- File.write file, db.to_xml unless File.exist? file
63
- expect(db.to_xml).to eq File.read file
63
+ File.write file, @db.to_xml unless File.exist? file
64
+ expect(@db.to_xml).to eq File.read file
64
65
  end
65
66
 
66
67
  it "save/load entry" do
67
- db.save_entry "test key", value: "test value"
68
- expect(db.load_entry("test key")[:value]).to eq "test value"
69
- expect(db.load_entry("not existed key")).to be_nil
68
+ @db.save_entry "test key", value: "test value"
69
+ expect(@db.load_entry("test key")[:value]).to eq "test value"
70
+ expect(@db.load_entry("not existed key")).to be_nil
70
71
  end
71
72
 
72
73
  it "get GB reference and cache it" do
73
74
  stub_bib Gbbib::GbBibliography
74
- bib = db.fetch "GB Standard GB/T 20223", "2006", {}
75
+ bib = @db.fetch "GB Standard GB/T 20223", "2006", {}
75
76
  expect(bib).to be_instance_of Gbbib::GbBibliographicItem
76
77
  expect(bib.to_xml).to include "<bibitem type=\"standard\" id=\"GB/T20223\">"
77
78
  expect(File.exist?("testcache")).to be true
@@ -85,10 +86,10 @@ RSpec.describe Relaton::Db do
85
86
  expect(testcache["GB Standard GB/T 20223:2006"]["bib"].to_xml).to include "<bibitem type=\"standard\" id=\"GB/T20223\">"
86
87
  end
87
88
  end
88
-
89
+
89
90
  it "get RFC reference and cache it" do
90
91
  stub_bib RfcBib::RfcBibliography
91
- bib = db.fetch "RFC 8341", nil, {}
92
+ bib = @db.fetch "RFC 8341", nil, {}
92
93
  expect(bib).to be_instance_of IsoBibItem::BibliographicItem
93
94
  expect(bib.to_xml).to include "<bibitem id=\"RFC8341\">"
94
95
  expect(File.exist?("testcache")).to be true
@@ -103,6 +104,20 @@ RSpec.describe Relaton::Db do
103
104
  end
104
105
  end
105
106
 
107
+ it "shoul clear global cache if version is changed" do
108
+ @db.save_entry "test_key", value: "test_value"
109
+ expect(File.exist?("testcache")).to be_truthy
110
+ expect(File.exist?("testcache2")).to be_truthy
111
+ stub_const "Relaton::VERSION", "new_version"
112
+ db = Relaton::Db.new "testcache", "testcache2"
113
+ testcache = db.instance_variable_get :@db
114
+ testcache.transaction do
115
+ expect(testcache.root?("test_key")).to be_falsey
116
+ end
117
+ testcache = db.instance_variable_get :@local_db
118
+ expect(testcache).to be_nil
119
+ end
120
+
106
121
  private
107
122
 
108
123
  # @param count [Integer] number of stubbing
Binary file
Binary file
Binary file
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-23 00:00:00.000000000 Z
11
+ date: 2018-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: algoliasearch
@@ -39,47 +39,47 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.2.1
41
41
  - !ruby/object:Gem::Dependency
42
- name: iev
42
+ name: isobib
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.1.0
47
+ version: 0.2.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.1.0
54
+ version: 0.2.0
55
55
  - !ruby/object:Gem::Dependency
56
- name: isobib
56
+ name: rfcbib
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.2.0
61
+ version: 0.2.2
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.2.0
68
+ version: 0.2.2
69
69
  - !ruby/object:Gem::Dependency
70
- name: rfcbib
70
+ name: iso-bib-item
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.2.1
75
+ version: 0.2.3
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.2.1
82
+ version: 0.2.3
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: bundler
85
85
  requirement: !ruby/object:Gem::Requirement