relaton-oasis 1.14.1 → 1.14.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|