relaton-oasis 1.14.1 → 1.14.3
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/rake.yml +1 -0
- data/.github/workflows/release.yml +3 -2
- data/.gitignore +1 -0
- data/.rubocop.yml +1 -1
- data/Gemfile +8 -1
- data/README.adoc +1 -1
- data/grammars/basicdoc.rng +0 -1
- data/grammars/biblio.rng +12 -2
- data/lib/relaton_oasis/data_fetcher.rb +4 -1
- data/lib/relaton_oasis/data_parser.rb +2 -1
- data/lib/relaton_oasis/data_parser_utils.rb +1 -0
- data/lib/relaton_oasis/data_part_parser.rb +1 -0
- data/lib/relaton_oasis/index.rb +75 -0
- data/lib/relaton_oasis/version.rb +1 -1
- data/lib/relaton_oasis.rb +1 -0
- data/relaton_oasis.gemspec +3 -11
- metadata +13 -110
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7c6f3b9c0380f97640c3e5a56a3e67226681746241690e9426689ef65e0e9345
|
4
|
+
data.tar.gz: 2b7b26ada6346de6079bcab0ea94c74c2b77e9991f466df56f724a35638de4dc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc86a45ca8524a71b770c988dd36093c026e43c42bc0a79fa0a5398187a1313bf16a4b5e78f754b648361814157c9fa704eea9b272c547697ba2a7983fa109c5
|
7
|
+
data.tar.gz: c0a82b4f9484fee0dde9a48b7cf9ba8cb7b3a949d7f76df55451fef315e8bfa8c24b5cad6eed1f7d9e419b9182694c023d1f108169b4ac0d6fca36d3b04ce7f6
|
data/.github/workflows/rake.yml
CHANGED
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
data/Gemfile
CHANGED
@@ -6,7 +6,14 @@ source "https://rubygems.org"
|
|
6
6
|
gemspec
|
7
7
|
|
8
8
|
gem "rake", "~> 13.0"
|
9
|
-
|
10
9
|
gem "rspec", "~> 3.0"
|
11
10
|
|
11
|
+
gem "equivalent-xml", "~> 0.6"
|
12
|
+
gem "pry-byebug"
|
12
13
|
gem "rubocop", "~> 1.7"
|
14
|
+
gem "rubocop-performance"
|
15
|
+
gem "rubocop-rails"
|
16
|
+
gem "ruby-jing"
|
17
|
+
gem "simplecov"
|
18
|
+
gem "vcr", "~> 5.0.0"
|
19
|
+
gem "webmock"
|
data/README.adoc
CHANGED
@@ -32,7 +32,7 @@ Or install it yourself as:
|
|
32
32
|
|
33
33
|
=== Get standard using reference.
|
34
34
|
|
35
|
-
All the OASIS documents are parsed from https://www.oasis-open.org/standards/ and stored in a GitHub repository https://github.com/relaton/relaton-data-oasis. You can find all possible references
|
35
|
+
All the OASIS documents are parsed from https://www.oasis-open.org/standards/ and stored in a GitHub repository https://github.com/relaton/relaton-data-oasis. You can find all possible references on the index page https://relaton.github.io/relaton-data-oasis/.
|
36
36
|
|
37
37
|
[source,ruby]
|
38
38
|
----
|
data/grammars/basicdoc.rng
CHANGED
data/grammars/biblio.rng
CHANGED
@@ -216,6 +216,9 @@
|
|
216
216
|
<optional>
|
217
217
|
<ref name="fullname"/>
|
218
218
|
</optional>
|
219
|
+
<zeroOrMore>
|
220
|
+
<ref name="credential"/>
|
221
|
+
</zeroOrMore>
|
219
222
|
<zeroOrMore>
|
220
223
|
<ref name="affiliation"/>
|
221
224
|
</zeroOrMore>
|
@@ -232,6 +235,11 @@
|
|
232
235
|
<ref name="FullNameType"/>
|
233
236
|
</element>
|
234
237
|
</define>
|
238
|
+
<define name="credential">
|
239
|
+
<element name="credential">
|
240
|
+
<text/>
|
241
|
+
</element>
|
242
|
+
</define>
|
235
243
|
<define name="FullNameType">
|
236
244
|
<choice>
|
237
245
|
<group>
|
@@ -305,7 +313,9 @@
|
|
305
313
|
<zeroOrMore>
|
306
314
|
<ref name="affiliationdescription"/>
|
307
315
|
</zeroOrMore>
|
308
|
-
<
|
316
|
+
<optional>
|
317
|
+
<ref name="organization"/>
|
318
|
+
</optional>
|
309
319
|
</element>
|
310
320
|
</define>
|
311
321
|
<define name="affiliationname">
|
@@ -1316,7 +1326,7 @@
|
|
1316
1326
|
<value>commentaryOf</value>
|
1317
1327
|
<value>hasCommentary</value>
|
1318
1328
|
<value>related</value>
|
1319
|
-
<value>
|
1329
|
+
<value>hasComplement</value>
|
1320
1330
|
<value>complementOf</value>
|
1321
1331
|
<value>obsoletes</value>
|
1322
1332
|
<value>obsoletedBy</value>
|
@@ -11,6 +11,7 @@ module RelatonOasis
|
|
11
11
|
@format = format
|
12
12
|
@ext = @format.sub(/^bib|^rfc/, "")
|
13
13
|
@files = []
|
14
|
+
@index = Index.new
|
14
15
|
end
|
15
16
|
|
16
17
|
#
|
@@ -22,7 +23,7 @@ module RelatonOasis
|
|
22
23
|
def self.fetch(output: "data", format: "yaml")
|
23
24
|
t1 = Time.now
|
24
25
|
puts "Started at: #{t1}"
|
25
|
-
FileUtils.mkdir_p output
|
26
|
+
FileUtils.mkdir_p output
|
26
27
|
new(output, format).fetch
|
27
28
|
t2 = Time.now
|
28
29
|
puts "Stopped at: #{t2}"
|
@@ -40,6 +41,7 @@ module RelatonOasis
|
|
40
41
|
save_doc DataParser.new(item).parse
|
41
42
|
fetch_parts item
|
42
43
|
end
|
44
|
+
@index.save
|
43
45
|
end
|
44
46
|
|
45
47
|
#
|
@@ -72,6 +74,7 @@ module RelatonOasis
|
|
72
74
|
warn "File #{file} already exists. Document: #{doc.docnumber}"
|
73
75
|
else
|
74
76
|
@files << file
|
77
|
+
@index[doc] = file
|
75
78
|
end
|
76
79
|
File.write file, c, encoding: "UTF-8"
|
77
80
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
module RelatonOasis
|
2
|
+
# Parser for OASIS document.
|
2
3
|
class DataParser
|
3
4
|
include RelatonOasis::DataParserUtils
|
4
5
|
|
@@ -106,7 +107,7 @@ module RelatonOasis
|
|
106
107
|
end
|
107
108
|
|
108
109
|
#
|
109
|
-
#
|
110
|
+
# Look for "Cite as" references.
|
110
111
|
#
|
111
112
|
# @return [Array<String>] document part references
|
112
113
|
#
|
@@ -0,0 +1,75 @@
|
|
1
|
+
module RelatonOasis
|
2
|
+
# Index of OASIS documents.
|
3
|
+
class Index
|
4
|
+
#
|
5
|
+
# Initialize a new Index
|
6
|
+
#
|
7
|
+
def initialize(file = "index.yaml")
|
8
|
+
@file = file
|
9
|
+
read
|
10
|
+
end
|
11
|
+
|
12
|
+
#
|
13
|
+
# Read index from file or fetch from GitHub.
|
14
|
+
#
|
15
|
+
# @return [RelatonOasis::Index, nil] index
|
16
|
+
#
|
17
|
+
def self.create_or_fetch
|
18
|
+
file = File.join Dir.home, ".relaton", "oasis", "index.yaml"
|
19
|
+
unless File.exist?(file) && File.ctime(file) > Time.now - 86_400
|
20
|
+
url = "https://raw.githubusercontent.com/relaton/relaton-data-oasis/main/index.yaml"
|
21
|
+
idx = Net::HTTP.get URI url
|
22
|
+
File.write file, idx, encoding: "UTF-8"
|
23
|
+
end
|
24
|
+
new file
|
25
|
+
rescue StandardError => e
|
26
|
+
warn "Failed to fetch index: #{e.message}"
|
27
|
+
end
|
28
|
+
|
29
|
+
#
|
30
|
+
# Put document's record to index.
|
31
|
+
#
|
32
|
+
# @param [RelatonOasis::OasisBibliographicItem] doc document
|
33
|
+
# @param [String] file file name
|
34
|
+
#
|
35
|
+
def []=(doc, file) # rubocop:disable Metrics/AbcSize
|
36
|
+
rec = self[doc.docidentifier[0].id]
|
37
|
+
rec ||= begin
|
38
|
+
@index << { id: doc.docidentifier[0].id }
|
39
|
+
@index.last
|
40
|
+
end
|
41
|
+
rec[:title] = doc.title[0].title.content
|
42
|
+
rec[:file] = file
|
43
|
+
end
|
44
|
+
|
45
|
+
#
|
46
|
+
# Fetch document's record from index.
|
47
|
+
#
|
48
|
+
# @param [String] id document identifier
|
49
|
+
#
|
50
|
+
# @return [Hash] document's record
|
51
|
+
#
|
52
|
+
def [](id)
|
53
|
+
@index.detect { |i| i[:id] == id }
|
54
|
+
end
|
55
|
+
|
56
|
+
#
|
57
|
+
# Save index to file.
|
58
|
+
#
|
59
|
+
def save
|
60
|
+
File.open @file, "w:UTF-8" do |f|
|
61
|
+
f.puts "---\n"
|
62
|
+
@index.each do |i|
|
63
|
+
f.puts "- id: '#{i[:id]}'\n title: '#{i[:title]}'\n file: '#{i[:file]}'\n"
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
#
|
69
|
+
# Read from file or create empty index.
|
70
|
+
#
|
71
|
+
def read
|
72
|
+
@index = File.exist?(@file) ? YAML.load_file(@file, symbolize_names: true) : []
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
data/lib/relaton_oasis.rb
CHANGED
@@ -11,6 +11,7 @@ require_relative "relaton_oasis/data_fetcher"
|
|
11
11
|
require_relative "relaton_oasis/data_parser_utils"
|
12
12
|
require_relative "relaton_oasis/data_parser"
|
13
13
|
require_relative "relaton_oasis/data_part_parser"
|
14
|
+
require_relative "relaton_oasis/index"
|
14
15
|
|
15
16
|
module RelatonOasis
|
16
17
|
class Error < StandardError; end
|
data/relaton_oasis.gemspec
CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
|
|
14
14
|
"using the BibliographicItem model"
|
15
15
|
spec.homepage = "https://github.com/metanorma/relaton-oasis"
|
16
16
|
spec.license = "BSD-2-Clause"
|
17
|
-
spec.required_ruby_version = ">= 2.
|
17
|
+
spec.required_ruby_version = ">= 2.7.0"
|
18
18
|
|
19
19
|
# spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
|
20
20
|
|
@@ -31,16 +31,8 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
32
32
|
spec.require_paths = ["lib"]
|
33
33
|
|
34
|
-
spec.
|
35
|
-
spec.
|
36
|
-
spec.add_development_dependency "rubocop-performance"
|
37
|
-
spec.add_development_dependency "rubocop-rails"
|
38
|
-
spec.add_development_dependency "ruby-jing"
|
39
|
-
spec.add_development_dependency "simplecov"
|
40
|
-
spec.add_development_dependency "vcr", "~> 5.0.0"
|
41
|
-
spec.add_development_dependency "webmock"
|
42
|
-
|
43
|
-
spec.add_dependency "mechanize"
|
34
|
+
spec.add_dependency "mechanize", "~> 2.8.0"
|
35
|
+
spec.add_dependency "multi_json", "~> 1.15.0"
|
44
36
|
spec.add_dependency "relaton-bib", "~> 1.14.0"
|
45
37
|
|
46
38
|
# For more information and examples about making a new gem, checkout our
|
metadata
CHANGED
@@ -1,141 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: relaton-oasis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.14.
|
4
|
+
version: 1.14.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-05-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: mechanize
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
-
type: :
|
19
|
+
version: 2.8.0
|
20
|
+
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: pry-byebug
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
26
|
+
version: 2.8.0
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
28
|
+
name: multi_json
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rubocop-rails
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: ruby-jing
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: simplecov
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: vcr
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: 5.0.0
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
30
|
requirements:
|
108
31
|
- - "~>"
|
109
32
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: webmock
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ">="
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - ">="
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: mechanize
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - ">="
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
33
|
+
version: 1.15.0
|
132
34
|
type: :runtime
|
133
35
|
prerelease: false
|
134
36
|
version_requirements: !ruby/object:Gem::Requirement
|
135
37
|
requirements:
|
136
|
-
- - "
|
38
|
+
- - "~>"
|
137
39
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
40
|
+
version: 1.15.0
|
139
41
|
- !ruby/object:Gem::Dependency
|
140
42
|
name: relaton-bib
|
141
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -181,6 +83,7 @@ files:
|
|
181
83
|
- lib/relaton_oasis/data_parser_utils.rb
|
182
84
|
- lib/relaton_oasis/data_part_parser.rb
|
183
85
|
- lib/relaton_oasis/hash_converter.rb
|
86
|
+
- lib/relaton_oasis/index.rb
|
184
87
|
- lib/relaton_oasis/oasis_bibliographic_item.rb
|
185
88
|
- lib/relaton_oasis/oasis_bibliography.rb
|
186
89
|
- lib/relaton_oasis/processor.rb
|
@@ -201,14 +104,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
201
104
|
requirements:
|
202
105
|
- - ">="
|
203
106
|
- !ruby/object:Gem::Version
|
204
|
-
version: 2.
|
107
|
+
version: 2.7.0
|
205
108
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
206
109
|
requirements:
|
207
110
|
- - ">="
|
208
111
|
- !ruby/object:Gem::Version
|
209
112
|
version: '0'
|
210
113
|
requirements: []
|
211
|
-
rubygems_version: 3.
|
114
|
+
rubygems_version: 3.3.26
|
212
115
|
signing_key:
|
213
116
|
specification_version: 4
|
214
117
|
summary: 'RelatonOasis: retrieve OASIS Standards for bibliographic use using the BibliographicItem
|