relaton 0.5.5 → 0.5.6
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/.rspec +3 -0
- data/Gemfile.lock +14 -14
- data/lib/relaton/db.rb +40 -27
- data/lib/relaton/db_cache.rb +6 -5
- data/lib/relaton/registry.rb +1 -1
- data/lib/relaton/static_cache/iso/iso_iec_dir_1.yml +33 -0
- data/lib/relaton/static_cache/iso/iso_iec_dir_1_iec_sup.yml +32 -0
- data/lib/relaton/static_cache/iso/iso_iec_dir_1_iso_sup.yml +39 -0
- data/lib/relaton/static_cache/iso/iso_iec_dir_2_iec.yml +32 -0
- data/lib/relaton/static_cache/iso/iso_iec_dir_2_iso.yml +39 -0
- data/lib/relaton/static_cache/iso/iso_iec_dir_iec_sup.yml +32 -0
- data/lib/relaton/static_cache/iso/iso_iec_dir_jtc_1_sup.yml +32 -0
- data/lib/relaton/static_cache/version +1 -0
- data/lib/relaton/version.rb +1 -1
- data/relaton/cache/version +1 -1
- data/spec/relaton/db_cache_spec.rb +0 -3
- data/spec/relaton/db_spec.rb +56 -2
- data/spec/relaton/processor_spec.rb +27 -0
- data/spec/relaton/regirtry_spec.rb +21 -0
- data/spec/{relaton/relaton_spec.rb → relaton_spec.rb} +1 -29
- data/spec/spec_helper.rb +1 -0
- metadata +14 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 333eee1b308d8d037986579ebf16c9c4cd74be03
|
4
|
+
data.tar.gz: 69aaadc86f93645ee19a31a76bccb1e63315f4e1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7d7aa5f35ade21aeb17e360cf396eaba3705de1253f251cc70a79775d555b12a7f3ac19b5b4035eb8a6516d4a44680107650d3a1d9aeea3cae46682aa9b48d09
|
7
|
+
data.tar.gz: 55979c2c2f8183ef75224a3d6112a8f8737610667be7718794ce1f345f29dc7ff73185caf4970c9e3114e59d67458b606c41af7e9077eeb22b6899c1b39381fa
|
data/.rspec
ADDED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
relaton (0.5.
|
4
|
+
relaton (0.5.6)
|
5
5
|
relaton-gb (~> 0.6.0)
|
6
6
|
relaton-iec (~> 0.4.0)
|
7
7
|
relaton-ietf (~> 0.6.0)
|
@@ -17,7 +17,7 @@ GEM
|
|
17
17
|
public_suffix (>= 2.0.2, < 5.0)
|
18
18
|
ast (2.4.0)
|
19
19
|
byebug (10.0.2)
|
20
|
-
cnccs (0.1.
|
20
|
+
cnccs (0.1.4)
|
21
21
|
coderay (1.1.2)
|
22
22
|
crack (0.4.3)
|
23
23
|
safe_yaml (~> 1.0.0)
|
@@ -28,11 +28,11 @@ GEM
|
|
28
28
|
docile (1.3.2)
|
29
29
|
equivalent-xml (0.6.0)
|
30
30
|
nokogiri (>= 1.4.3)
|
31
|
-
faraday (0.
|
31
|
+
faraday (0.17.0)
|
32
32
|
multipart-post (>= 1.2, < 3)
|
33
33
|
ffi (1.11.1)
|
34
34
|
formatador (0.2.5)
|
35
|
-
gb-agencies (0.0.
|
35
|
+
gb-agencies (0.0.6)
|
36
36
|
guard (2.15.0)
|
37
37
|
formatador (>= 0.2.4)
|
38
38
|
listen (>= 2.7, < 4.0)
|
@@ -48,7 +48,7 @@ GEM
|
|
48
48
|
guard-compat (~> 1.1)
|
49
49
|
rspec (>= 2.99.0, < 4.0)
|
50
50
|
hashdiff (0.4.0)
|
51
|
-
isoics (0.1.
|
51
|
+
isoics (0.1.8)
|
52
52
|
json (2.2.0)
|
53
53
|
listen (3.1.5)
|
54
54
|
rb-fsevent (~> 0.9, >= 0.9.4)
|
@@ -80,31 +80,31 @@ GEM
|
|
80
80
|
rb-fsevent (0.10.3)
|
81
81
|
rb-inotify (0.10.0)
|
82
82
|
ffi (~> 1.0)
|
83
|
-
relaton-bib (0.3.
|
83
|
+
relaton-bib (0.3.9)
|
84
84
|
addressable
|
85
85
|
nokogiri
|
86
|
-
relaton-gb (0.6.
|
86
|
+
relaton-gb (0.6.5)
|
87
87
|
cnccs (~> 0.1.1)
|
88
88
|
gb-agencies (~> 0.0.1)
|
89
89
|
relaton-iso-bib (~> 0.3.0)
|
90
|
-
relaton-iec (0.4.
|
90
|
+
relaton-iec (0.4.8)
|
91
91
|
addressable
|
92
92
|
relaton-iso-bib (~> 0.3.0)
|
93
|
-
relaton-ietf (0.6.
|
93
|
+
relaton-ietf (0.6.6)
|
94
94
|
relaton-bib (~> 0.3.0)
|
95
|
-
relaton-iso (0.6.
|
95
|
+
relaton-iso (0.6.7)
|
96
96
|
relaton-iec (~> 0.4.0)
|
97
97
|
relaton-iso-bib (~> 0.3.0)
|
98
|
-
relaton-iso-bib (0.3.
|
98
|
+
relaton-iso-bib (0.3.9)
|
99
99
|
isoics (~> 0.1.6)
|
100
100
|
relaton-bib (~> 0.3.0)
|
101
101
|
ruby_deep_clone (~> 0.8.0)
|
102
|
-
relaton-itu (0.3.
|
102
|
+
relaton-itu (0.3.5)
|
103
103
|
relaton-iso-bib (~> 0.3.0)
|
104
|
-
relaton-nist (0.3.
|
104
|
+
relaton-nist (0.3.6)
|
105
105
|
relaton-bib (~> 0.3.0)
|
106
106
|
rubyzip
|
107
|
-
relaton-ogc (0.1.
|
107
|
+
relaton-ogc (0.1.2)
|
108
108
|
faraday
|
109
109
|
relaton-iso-bib (~> 0.3.0)
|
110
110
|
rspec (3.8.0)
|
data/lib/relaton/db.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require "yaml"
|
2
2
|
require_relative "registry"
|
3
3
|
require_relative "db_cache"
|
4
4
|
|
@@ -11,10 +11,12 @@ module Relaton
|
|
11
11
|
def initialize(global_cache, local_cache)
|
12
12
|
@registry = Relaton::Registry.instance
|
13
13
|
# @registry.register_gems
|
14
|
-
@db = open_cache_biblio(global_cache)
|
15
|
-
@local_db = open_cache_biblio(local_cache,
|
14
|
+
@db = open_cache_biblio(global_cache, type: :global)
|
15
|
+
@local_db = open_cache_biblio(local_cache, type: :local)
|
16
16
|
@db_name = global_cache
|
17
17
|
@local_db_name = local_cache
|
18
|
+
static_db_name = File.expand_path "../relaton/static_cache", __dir__
|
19
|
+
@static_db = open_cache_biblio static_db_name
|
18
20
|
end
|
19
21
|
|
20
22
|
# The class of reference requested is determined by the prefix of the code:
|
@@ -26,7 +28,7 @@ module Relaton
|
|
26
28
|
# RelatonItu::ItuBibliographicItem, RelatonIetf::IetfBibliographicItem,
|
27
29
|
# RelatonNist::NistBibliongraphicItem, RelatonGb::GbbibliographicItem]
|
28
30
|
def fetch(code, year = nil, opts = {})
|
29
|
-
stdclass = standard_class(code)
|
31
|
+
stdclass = standard_class(code) || return
|
30
32
|
check_bibliocache(code, year, opts, stdclass)
|
31
33
|
end
|
32
34
|
|
@@ -96,7 +98,6 @@ module Relaton
|
|
96
98
|
m << v.prefix
|
97
99
|
end
|
98
100
|
warn "#{code} does not have a recognised prefix: #{allowed.join(', ')}"
|
99
|
-
nil
|
100
101
|
end
|
101
102
|
|
102
103
|
# TODO: i18n
|
@@ -105,7 +106,7 @@ module Relaton
|
|
105
106
|
# @param year [String]
|
106
107
|
# @param opts [Hash]
|
107
108
|
# @param stdClass [Symbol]
|
108
|
-
# @return [Array]
|
109
|
+
# @return [Array<String>] docid and code
|
109
110
|
def std_id(code, year, opts, stdclass)
|
110
111
|
prefix, code = strip_id_wrapper(code, stdclass)
|
111
112
|
ret = code
|
@@ -126,10 +127,11 @@ module Relaton
|
|
126
127
|
|
127
128
|
# @param entry [String] XML string
|
128
129
|
# @param stdclass [Symbol]
|
130
|
+
# @param id [String] docid
|
129
131
|
# @return [NilClass, RelatonIsoBib::IsoBibliographicItem,
|
130
132
|
# RelatonItu::ItuBibliographicItem, RelatonIetf::IetfBibliographicItem,
|
131
133
|
# RelatonNist::NistBibliongraphicItem, RelatonGb::GbbibliographicItem]
|
132
|
-
def bib_retval(entry, stdclass)
|
134
|
+
def bib_retval(entry, stdclass, id)
|
133
135
|
entry =~ /^not_found/ ? nil : @registry.processors[stdclass].from_xml(entry)
|
134
136
|
end
|
135
137
|
|
@@ -142,39 +144,51 @@ module Relaton
|
|
142
144
|
# RelatonNist::NistBibliongraphicItem, RelatonGb::GbbibliographicItem]
|
143
145
|
def check_bibliocache(code, year, opts, stdclass)
|
144
146
|
id, searchcode = std_id(code, year, opts, stdclass)
|
147
|
+
yaml = @static_db[id]
|
148
|
+
return @registry.processors[stdclass].hash_to_bib YAML.safe_load(yaml) if yaml
|
149
|
+
|
145
150
|
db = @local_db || @db
|
146
151
|
altdb = @local_db && @db ? @db : nil
|
147
|
-
|
152
|
+
bibentry = new_bib_entry(searchcode, year, opts, stdclass, db: db, id: id)
|
153
|
+
return bib_retval(bibentry, stdclass, id) if db.nil?
|
148
154
|
|
149
155
|
db.delete(id) unless db.valid_entry?(id, year)
|
150
156
|
if altdb
|
151
157
|
# db[id] ||= altdb[id]
|
152
158
|
db.clone_entry id, altdb
|
153
|
-
db[id] ||=
|
159
|
+
db[id] ||= bibentry
|
154
160
|
altdb.clone_entry(id, db) if !altdb.valid_entry?(id, year)
|
155
161
|
else
|
156
|
-
db[id] ||=
|
162
|
+
db[id] ||= bibentry
|
157
163
|
end
|
158
|
-
bib_retval(db[id], stdclass)
|
164
|
+
bib_retval(db[id], stdclass, id)
|
159
165
|
end
|
160
166
|
|
161
167
|
# @param code [String]
|
162
168
|
# @param year [String]
|
163
169
|
# @param opts [Hash]
|
164
170
|
# @param stdclass [Symbol]
|
171
|
+
# @param db [Relaton::DbCache,`NilClass]
|
172
|
+
# @param id [String] docid
|
165
173
|
# @return [String]
|
166
|
-
def new_bib_entry(code, year, opts, stdclass,
|
174
|
+
def new_bib_entry(code, year, opts, stdclass, **args)
|
167
175
|
bib = @registry.processors[stdclass].get(code, year, opts)
|
168
176
|
bib_id = bib&.docidentifier&.first&.id&.sub(%r{(?<=\d)-(?=\d{4})}, ":")
|
169
|
-
|
177
|
+
|
178
|
+
# when docid doesn't match bib's id then return a reference to bib's id
|
179
|
+
if args[:db] && args[:id] && bib_id && args[:id] !~ %r{\(#{bib_id}\)}
|
170
180
|
bid = std_id(bib.docidentifier.first.id, nil, {}, stdclass).first
|
171
|
-
db[bid] ||= bib_entry bib
|
181
|
+
args[:db][bid] ||= bib_entry bib
|
172
182
|
"redirection #{bid}"
|
173
183
|
else
|
174
184
|
bib_entry bib
|
175
185
|
end
|
176
186
|
end
|
177
187
|
|
188
|
+
# @param bib [RelatonGb::GbBibliongraphicItem, RelatonIsoBib::IsoBibliographicItem,
|
189
|
+
# RelatonIetf::IetfBibliographicItem, RelatonItu::ItuBibliographicItem,
|
190
|
+
# RelatonNist::NistBibliongraphicItem, RelatonOgc::OgcBibliographicItem]
|
191
|
+
# @return [String] XML or "not_found mm-dd-yyyy"
|
178
192
|
def bib_entry(bib)
|
179
193
|
if bib.respond_to? :to_xml
|
180
194
|
bib.to_xml(bibdata: true)
|
@@ -184,22 +198,21 @@ module Relaton
|
|
184
198
|
end
|
185
199
|
|
186
200
|
# @param dir [String] DB directory
|
187
|
-
# @param
|
188
|
-
# @return [
|
189
|
-
def open_cache_biblio(dir,
|
201
|
+
# @param type [Symbol]
|
202
|
+
# @return [Relaton::DbCache, NilClass]
|
203
|
+
def open_cache_biblio(dir, type: :static)
|
190
204
|
return nil if dir.nil?
|
191
205
|
|
192
|
-
db = DbCache.new dir
|
193
|
-
if
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
206
|
+
db = DbCache.new dir, type == :static ? "yml" : "xml"
|
207
|
+
return db if db.check_version?
|
208
|
+
|
209
|
+
case type
|
210
|
+
when :global
|
211
|
+
FileUtils.rm_rf(Dir.glob(dir + "/*"), secure: true)
|
212
|
+
warn "Global cache version is obsolete and cleared."
|
198
213
|
db.set_version
|
199
|
-
|
200
|
-
else
|
201
|
-
warn "Local cache version is obsolete."
|
202
|
-
nil
|
214
|
+
when :static then warn "Static cache version is obsolete."
|
215
|
+
else warn "Local cache version is obsolete."
|
203
216
|
end
|
204
217
|
end
|
205
218
|
end
|
data/lib/relaton/db_cache.rb
CHANGED
@@ -6,8 +6,9 @@ module Relaton
|
|
6
6
|
attr_reader :dir
|
7
7
|
|
8
8
|
# @param dir [String] DB directory
|
9
|
-
def initialize(dir)
|
9
|
+
def initialize(dir, ext = "xml")
|
10
10
|
@dir = dir
|
11
|
+
@ext = ext
|
11
12
|
FileUtils::mkdir_p @dir
|
12
13
|
file_version = "#{@dir}/version"
|
13
14
|
set_version unless File.exist? file_version
|
@@ -80,7 +81,7 @@ module Relaton
|
|
80
81
|
# @return [TrueClass, FalseClass]
|
81
82
|
def check_version?
|
82
83
|
v = File.read @dir + "/version", encoding: "utf-8"
|
83
|
-
v == VERSION
|
84
|
+
v.strip == VERSION
|
84
85
|
end
|
85
86
|
|
86
87
|
# Set version of the DB to the gem version.
|
@@ -131,11 +132,11 @@ module Relaton
|
|
131
132
|
def filename(key)
|
132
133
|
prefcode = key.downcase.match /^(?<prefix>[^\(]+)\((?<code>[^\)]+)/
|
133
134
|
fn = if prefcode
|
134
|
-
"#{
|
135
|
+
"#{prefcode[:prefix]}/#{prefcode[:code].gsub(/[-:\s\/]/, '_')}"
|
135
136
|
else
|
136
|
-
|
137
|
+
key.gsub(/[-:\s]/, "_")
|
137
138
|
end
|
138
|
-
fn.sub(/_
|
139
|
+
"#{@dir}/#{fn.sub(/(,|_$)/, '')}.#{@ext}"
|
139
140
|
end
|
140
141
|
|
141
142
|
# Return item's subdir
|
data/lib/relaton/registry.rb
CHANGED
@@ -0,0 +1,33 @@
|
|
1
|
+
title:
|
2
|
+
- type: title-main
|
3
|
+
content: Procedures for the technical work
|
4
|
+
language: en
|
5
|
+
script: Latn
|
6
|
+
|
7
|
+
link:
|
8
|
+
- type: obp
|
9
|
+
content: https://www.iec.ch/members_experts/refdocs/iec/isoiecdir1%7Bed15.0%7Den.pdf
|
10
|
+
|
11
|
+
type: international-standard
|
12
|
+
|
13
|
+
docid:
|
14
|
+
id: ISO/IEC DIR 1
|
15
|
+
type: ISO
|
16
|
+
|
17
|
+
date:
|
18
|
+
type: published
|
19
|
+
value: '2019-05-01'
|
20
|
+
|
21
|
+
edition: "15"
|
22
|
+
|
23
|
+
language:
|
24
|
+
- en
|
25
|
+
|
26
|
+
script: Latn
|
27
|
+
|
28
|
+
copyright:
|
29
|
+
owner:
|
30
|
+
name: International Electrotechnical Commission
|
31
|
+
abbreviation: IEC
|
32
|
+
url: iec.ch
|
33
|
+
from: '2019'
|
@@ -0,0 +1,32 @@
|
|
1
|
+
title:
|
2
|
+
- type: title-main
|
3
|
+
content: Procedures for the technical work – Procedures specific to IEC
|
4
|
+
language: en
|
5
|
+
script: Latn
|
6
|
+
|
7
|
+
link:
|
8
|
+
- type: obp
|
9
|
+
content: https://www.iec.ch/members_experts/refdocs/iec/isoiecdir1-consolidatediecsup%7bed15.0.RLV%7den.pdf
|
10
|
+
|
11
|
+
type: international-standard
|
12
|
+
|
13
|
+
docid:
|
14
|
+
id: ISO/IEC DIR 1 IEC SUP
|
15
|
+
type: ISO
|
16
|
+
|
17
|
+
date:
|
18
|
+
type: published
|
19
|
+
value: '2019-05-01'
|
20
|
+
|
21
|
+
edition: "15"
|
22
|
+
|
23
|
+
language: en
|
24
|
+
|
25
|
+
script: Latn
|
26
|
+
|
27
|
+
copyright:
|
28
|
+
owner:
|
29
|
+
name: International Electrotechnical Commission
|
30
|
+
abbreviation: IEC
|
31
|
+
url: iec.ch
|
32
|
+
from: '2019'
|
@@ -0,0 +1,39 @@
|
|
1
|
+
title:
|
2
|
+
- type: title-main
|
3
|
+
content: Consolidated ISO Supplement -- Procedures specific to ISO
|
4
|
+
language: en
|
5
|
+
script: Latn
|
6
|
+
- type: title-main
|
7
|
+
content: Supplément ISO consolidé — Procédures spécifiques à l’ISO
|
8
|
+
language: fr
|
9
|
+
script: Latn
|
10
|
+
|
11
|
+
link:
|
12
|
+
- type: src
|
13
|
+
content: https://www.iso.org/sites/directives/current/consolidated/index.xhtml
|
14
|
+
- type: obp
|
15
|
+
content: https://isotc.iso.org/livelink/livelink/fetch/2000/2122/4230450/4230452/ISO_IEC_Directives_Part_1_and_Consolidated_ISO_Supplement_%2D_2019_%2810th_Edition%29_%2D_PDF.pdf?nodeid=20447676&vernum=-2
|
16
|
+
|
17
|
+
type: international-standard
|
18
|
+
|
19
|
+
docid:
|
20
|
+
id: ISO/IEC DIR 1 ISO SUP
|
21
|
+
type: ISO
|
22
|
+
|
23
|
+
date:
|
24
|
+
type: published
|
25
|
+
value: '2019-01-01'
|
26
|
+
|
27
|
+
edition: "10"
|
28
|
+
|
29
|
+
language:
|
30
|
+
- en
|
31
|
+
|
32
|
+
script: Latn
|
33
|
+
|
34
|
+
copyright:
|
35
|
+
owner:
|
36
|
+
name: International Organization for Standardization
|
37
|
+
abbreviation: ISO
|
38
|
+
url: www.iso.org
|
39
|
+
from: '2019'
|
@@ -0,0 +1,32 @@
|
|
1
|
+
title:
|
2
|
+
- type: title-main
|
3
|
+
content: Principles and rules for the structure and drafting of ISO and IEC documents
|
4
|
+
language: en
|
5
|
+
script: Latn
|
6
|
+
|
7
|
+
link:
|
8
|
+
- type: obp
|
9
|
+
content: https://www.iec.ch/members_experts/refdocs/iec/isoiecdir2%7Bed8.0.RLV%7Den.pdf
|
10
|
+
|
11
|
+
type: international-standard
|
12
|
+
|
13
|
+
docid:
|
14
|
+
id: ISO/IEC DIR 2 IEC
|
15
|
+
type: ISO
|
16
|
+
|
17
|
+
date:
|
18
|
+
type: published
|
19
|
+
value: '2018-05-01'
|
20
|
+
|
21
|
+
edition: "8"
|
22
|
+
|
23
|
+
language: en
|
24
|
+
|
25
|
+
script: Latn
|
26
|
+
|
27
|
+
copyright:
|
28
|
+
owner:
|
29
|
+
name: International Electrotechnical Commission
|
30
|
+
abbreviation: IEC
|
31
|
+
url: iec.ch
|
32
|
+
from: '2019'
|
@@ -0,0 +1,39 @@
|
|
1
|
+
title:
|
2
|
+
- type: title-main
|
3
|
+
content: Principles and rules for the structure and drafting of ISO and IEC documents
|
4
|
+
language: en
|
5
|
+
script: Latn
|
6
|
+
- type: title-main
|
7
|
+
content: Principes et règles de structure et de rédaction des documents
|
8
|
+
language: fr
|
9
|
+
script: Latn
|
10
|
+
|
11
|
+
link:
|
12
|
+
- type: src
|
13
|
+
content: https://www.iso.org/sites/directives/current/part2/index.xhtml
|
14
|
+
- type: obp
|
15
|
+
content: https://isotc.iso.org/livelink/livelink/fetch/2000/2122/4230450/4230456/ISO_IEC_Directives%2C_Part_2%2C_Principles_and_rules_for_the_structure_and_drafting_of_ISO_and_IEC_documents_-_2018_%288th_edition%29_-_PDF.pdf?nodeid=19685788&vernum=-2
|
16
|
+
|
17
|
+
type: international-standard
|
18
|
+
|
19
|
+
docid:
|
20
|
+
id: ISO/IEC DIR 2 ISO
|
21
|
+
type: ISO
|
22
|
+
|
23
|
+
date:
|
24
|
+
type: published
|
25
|
+
value: '2018-01-01'
|
26
|
+
|
27
|
+
edition: "8"
|
28
|
+
|
29
|
+
language:
|
30
|
+
- en
|
31
|
+
|
32
|
+
script: Latn
|
33
|
+
|
34
|
+
copyright:
|
35
|
+
owner:
|
36
|
+
name: International Organization for Standardization
|
37
|
+
abbreviation: ISO
|
38
|
+
url: www.iso.org
|
39
|
+
from: '2019'
|
@@ -0,0 +1,32 @@
|
|
1
|
+
title:
|
2
|
+
- type: title-main
|
3
|
+
content: Procedures specific to IEC
|
4
|
+
language: en
|
5
|
+
script: Latn
|
6
|
+
|
7
|
+
link:
|
8
|
+
- type: obp
|
9
|
+
content: https://www.iec.ch/members_experts/refdocs/iec/isoiecdir1-iecsup%7bed13.0%7den.pdf
|
10
|
+
|
11
|
+
type: international-standard
|
12
|
+
|
13
|
+
docid:
|
14
|
+
id: ISO/IEC DIR IEC SUP
|
15
|
+
type: ISO
|
16
|
+
|
17
|
+
date:
|
18
|
+
type: published
|
19
|
+
value: '2019-05-01'
|
20
|
+
|
21
|
+
edition: "13"
|
22
|
+
|
23
|
+
language: en
|
24
|
+
|
25
|
+
script: Latn
|
26
|
+
|
27
|
+
copyright:
|
28
|
+
owner:
|
29
|
+
name: International Electrotechnical Commission
|
30
|
+
abbreviation: IEC
|
31
|
+
url: iec.ch
|
32
|
+
from: '2019'
|
@@ -0,0 +1,32 @@
|
|
1
|
+
title:
|
2
|
+
- type: title-main
|
3
|
+
content: Procedures specific to JTC 1
|
4
|
+
language: en
|
5
|
+
script: Latn
|
6
|
+
|
7
|
+
link:
|
8
|
+
- type: obp
|
9
|
+
content: https://www.iec.ch/members_experts/refdocs/iec/Consolidated_JTC_1_Supplement_2018.pdf
|
10
|
+
|
11
|
+
type: international-standard
|
12
|
+
|
13
|
+
docid:
|
14
|
+
id: ISO/IEC DIR JTC 1 SUP
|
15
|
+
type: ISO
|
16
|
+
|
17
|
+
date:
|
18
|
+
type: published
|
19
|
+
value: '2018-05-01'
|
20
|
+
|
21
|
+
edition: "14"
|
22
|
+
|
23
|
+
language: en
|
24
|
+
|
25
|
+
script: Latn
|
26
|
+
|
27
|
+
copyright:
|
28
|
+
owner:
|
29
|
+
name: International Electrotechnical Commission
|
30
|
+
abbreviation: IEC
|
31
|
+
url: iec.ch
|
32
|
+
from: '2019'
|
@@ -0,0 +1 @@
|
|
1
|
+
0.5.6
|
data/lib/relaton/version.rb
CHANGED
data/relaton/cache/version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.6
|
data/spec/relaton/db_spec.rb
CHANGED
@@ -1,16 +1,70 @@
|
|
1
1
|
RSpec.describe Relaton::Db do
|
2
|
+
before(:each) { FileUtils.rm_rf %w[testcache testcache2] }
|
3
|
+
|
2
4
|
it "returns docid type" do
|
3
|
-
FileUtils.rm_rf %w(testcache testcache2)
|
4
5
|
db = Relaton::Db.new "testcache", "testcache2"
|
5
6
|
expect(db.docid_type("CN(GB/T 1.1)")).to eq ["Chinese Standard", "GB/T 1.1"]
|
6
7
|
end
|
7
8
|
|
8
9
|
it "fetch when no local db" do
|
9
|
-
FileUtils.rm_rf %w(testcache testcache2)
|
10
10
|
db = Relaton::Db.new "testcache", nil
|
11
11
|
VCR.use_cassette "iso_19115_1" do
|
12
12
|
bib = db.fetch("ISO 19115-1", nil, {})
|
13
13
|
expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
|
14
14
|
end
|
15
15
|
end
|
16
|
+
|
17
|
+
it "fetch std" do
|
18
|
+
db = Relaton::Db.new "testcache", nil
|
19
|
+
VCR.use_cassette "iso_19115_1" do
|
20
|
+
bib = db.fetch_std("ISO 19115-1", nil, :relaton_iso, {})
|
21
|
+
expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context "fetch documents form static cache" do
|
26
|
+
let(:db) { db = Relaton::Db.new nil, nil }
|
27
|
+
|
28
|
+
it "fetches ISO/IEC DIR 1 IEC SUP" do
|
29
|
+
bib = db.fetch "ISO/IEC DIR 1 IEC SUP"
|
30
|
+
expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
|
31
|
+
expect(bib.docidentifier.first.id).to eq "ISO/IEC DIR 1 IEC SUP"
|
32
|
+
end
|
33
|
+
|
34
|
+
it "fetches ISO/IEC DIR 1 ISO SUP" do
|
35
|
+
bib = db.fetch "ISO/IEC DIR 1 ISO SUP"
|
36
|
+
expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
|
37
|
+
expect(bib.docidentifier.first.id).to eq "ISO/IEC DIR 1 ISO SUP"
|
38
|
+
end
|
39
|
+
|
40
|
+
it "fetches ISO/IEC DIR 1" do
|
41
|
+
bib = db.fetch "ISO/IEC DIR 1"
|
42
|
+
expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
|
43
|
+
expect(bib.docidentifier.first.id).to eq "ISO/IEC DIR 1"
|
44
|
+
end
|
45
|
+
|
46
|
+
it "fetches ISO/IEC DIR 2 IEC" do
|
47
|
+
bib = db.fetch "ISO/IEC DIR 2 IEC"
|
48
|
+
expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
|
49
|
+
expect(bib.docidentifier.first.id).to eq "ISO/IEC DIR 2 IEC"
|
50
|
+
end
|
51
|
+
|
52
|
+
it "fetches ISO/IEC DIR 2 ISO" do
|
53
|
+
bib = db.fetch "ISO/IEC DIR 2 ISO"
|
54
|
+
expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
|
55
|
+
expect(bib.docidentifier.first.id).to eq "ISO/IEC DIR 2 ISO"
|
56
|
+
end
|
57
|
+
|
58
|
+
it "fetches ISO/IEC DIR IEC SUP" do
|
59
|
+
bib = db.fetch "ISO/IEC DIR IEC SUP"
|
60
|
+
expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
|
61
|
+
expect(bib.docidentifier.first.id).to eq "ISO/IEC DIR IEC SUP"
|
62
|
+
end
|
63
|
+
|
64
|
+
it "fetches ISO/IEC DIR JTC 1 SUP" do
|
65
|
+
bib = db.fetch "ISO/IEC DIR JTC 1 SUP"
|
66
|
+
expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
|
67
|
+
expect(bib.docidentifier.first.id).to eq "ISO/IEC DIR JTC 1 SUP"
|
68
|
+
end
|
69
|
+
end
|
16
70
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Relaton
|
2
|
+
class TestProcessor < Relaton::Processor
|
3
|
+
def initialize; end
|
4
|
+
end
|
5
|
+
end
|
6
|
+
|
7
|
+
RSpec.describe Relaton::Processor do
|
8
|
+
it "initialize should be implemented" do
|
9
|
+
expect { Relaton::Processor.new }.to raise_error StandardError
|
10
|
+
end
|
11
|
+
|
12
|
+
context "instance of processor" do
|
13
|
+
subject { Relaton::TestProcessor.new }
|
14
|
+
|
15
|
+
it "get method should be implemented" do
|
16
|
+
expect { subject.get "code", nil, {} }.to raise_error StandardError
|
17
|
+
end
|
18
|
+
|
19
|
+
it "from_xml method should be implemented" do
|
20
|
+
expect { subject.from_xml "" }.to raise_error StandardError
|
21
|
+
end
|
22
|
+
|
23
|
+
it "hash_to_bib method should be implemented" do
|
24
|
+
expect { subject.hash_to_bib({}) }.to raise_error StandardError
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
RSpec.describe Relaton::Registry do
|
2
|
+
it "outputs backend not present" do
|
3
|
+
stub_const "Relaton::Registry::SUPPORTED_GEMS", ["not_supported_gem"]
|
4
|
+
expect { Relaton::Registry.clone.instance }.to output(
|
5
|
+
/backend not_supported_gem not present/,
|
6
|
+
).to_stdout
|
7
|
+
end
|
8
|
+
|
9
|
+
it "finds processor" do
|
10
|
+
expect(Relaton::Registry.instance.find_processor("relaton_iso")).
|
11
|
+
to be_instance_of RelatonIso::Processor
|
12
|
+
end
|
13
|
+
|
14
|
+
it "returns supported processors" do
|
15
|
+
expect(Relaton::Registry.instance.supported_processors).to include :relaton_iso
|
16
|
+
end
|
17
|
+
|
18
|
+
it "finds processor by type" do
|
19
|
+
expect(Relaton::Registry.instance.by_type("ISO")).to be_instance_of RelatonIso::Processor
|
20
|
+
end
|
21
|
+
end
|
@@ -1,6 +1,3 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
require "fileutils"
|
3
|
-
|
4
1
|
RSpec.describe Relaton::Db do
|
5
2
|
# let!(:db) { Relaton::Db.new("testcache", "testcache2") }
|
6
3
|
|
@@ -32,7 +29,7 @@ RSpec.describe Relaton::Db do
|
|
32
29
|
VCR.use_cassette "19133_2005" do
|
33
30
|
bib = @db.fetch("ISO 19133:2005")
|
34
31
|
expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
|
35
|
-
expect(bib.to_xml).to include
|
32
|
+
expect(bib.to_xml).to include '<bibitem id="ISO19133-2005" type="standard">'
|
36
33
|
testcache = Relaton::DbCache.new "testcache"
|
37
34
|
expect(testcache.valid_entry?("ISO(ISO 19133:2005)", "2019")).to eq Date.today.year.to_s
|
38
35
|
end
|
@@ -150,29 +147,4 @@ RSpec.describe Relaton::Db do
|
|
150
147
|
testcache = db.instance_variable_get :@local_db
|
151
148
|
expect(testcache).to be_nil
|
152
149
|
end
|
153
|
-
|
154
|
-
private
|
155
|
-
|
156
|
-
# @param count [Integer] number of stubbing
|
157
|
-
def stub_bib(bib_type, count = 1)
|
158
|
-
expect(bib_type).to receive(:get).and_wrap_original do |m, *args|
|
159
|
-
get_resp m, *args
|
160
|
-
end.exactly(count).times
|
161
|
-
end
|
162
|
-
|
163
|
-
def get_resp(method, *args)
|
164
|
-
expect_args args
|
165
|
-
file = "spec/support/" + args[0].downcase.gsub(/[\/\s-]/, "_")
|
166
|
-
file += "_#{args[1]}" if args[1]
|
167
|
-
file += ".xml"
|
168
|
-
File.write file, method.call(*args)&.to_xml, encoding: "utf-8" unless File.exist? file
|
169
|
-
File.read file, encoding: "utf-8"
|
170
|
-
end
|
171
|
-
|
172
|
-
def expect_args(args)
|
173
|
-
expect(args.size).to eq 3
|
174
|
-
expect(args[0]).to be_instance_of String
|
175
|
-
expect(args[1]).to be_instance_of(NilClass).or be_instance_of String
|
176
|
-
expect(args[2]).to be_instance_of Hash
|
177
|
-
end
|
178
150
|
end
|
data/spec/spec_helper.rb
CHANGED
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.5.
|
4
|
+
version: 0.5.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-10-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: relaton-gb
|
@@ -332,6 +332,7 @@ extra_rdoc_files: []
|
|
332
332
|
files:
|
333
333
|
- ".gitignore"
|
334
334
|
- ".hound.yml"
|
335
|
+
- ".rspec"
|
335
336
|
- ".rubocop.yml"
|
336
337
|
- ".travis.yml"
|
337
338
|
- Gemfile
|
@@ -349,12 +350,22 @@ files:
|
|
349
350
|
- lib/relaton/db_cache.rb
|
350
351
|
- lib/relaton/processor.rb
|
351
352
|
- lib/relaton/registry.rb
|
353
|
+
- lib/relaton/static_cache/iso/iso_iec_dir_1.yml
|
354
|
+
- lib/relaton/static_cache/iso/iso_iec_dir_1_iec_sup.yml
|
355
|
+
- lib/relaton/static_cache/iso/iso_iec_dir_1_iso_sup.yml
|
356
|
+
- lib/relaton/static_cache/iso/iso_iec_dir_2_iec.yml
|
357
|
+
- lib/relaton/static_cache/iso/iso_iec_dir_2_iso.yml
|
358
|
+
- lib/relaton/static_cache/iso/iso_iec_dir_iec_sup.yml
|
359
|
+
- lib/relaton/static_cache/iso/iso_iec_dir_jtc_1_sup.yml
|
360
|
+
- lib/relaton/static_cache/version
|
352
361
|
- lib/relaton/version.rb
|
353
362
|
- relaton.gemspec
|
354
363
|
- relaton/cache/version
|
355
364
|
- spec/relaton/db_cache_spec.rb
|
356
365
|
- spec/relaton/db_spec.rb
|
357
|
-
- spec/relaton/
|
366
|
+
- spec/relaton/processor_spec.rb
|
367
|
+
- spec/relaton/regirtry_spec.rb
|
368
|
+
- spec/relaton_spec.rb
|
358
369
|
- spec/spec_helper.rb
|
359
370
|
- spec/support/gb_t_20223_2006.xml
|
360
371
|
- spec/support/iso_111111119115_1.xml
|