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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 271398297c476606859e84b1d808cd07a9d6dc3a0297f212fcd91882be951e02
4
- data.tar.gz: b14587e10808e34d12e16435a1c8a54952f5c10d03ce22c188154febc3418d95
3
+ metadata.gz: 7c6f3b9c0380f97640c3e5a56a3e67226681746241690e9426689ef65e0e9345
4
+ data.tar.gz: 2b7b26ada6346de6079bcab0ea94c74c2b77e9991f466df56f724a35638de4dc
5
5
  SHA512:
6
- metadata.gz: 695e2ecd8942151fedcee25b1ed2c50fc22ee56e98c6e5189dbc35476faf9c48e378e3780840fe80d2f33cb64e05187a4153f0006d7832e117ab65222fe2dc47
7
- data.tar.gz: fa428bedddf06c4415f189666196b7efdab60e9a49273a64ee4fcfaf52b1c2e4cc45b86f7508477a8e054230d8f5c8d69e2818d3888638f7e3adf7766342a8e9
6
+ metadata.gz: fc86a45ca8524a71b770c988dd36093c026e43c42bc0a79fa0a5398187a1313bf16a4b5e78f754b648361814157c9fa704eea9b272c547697ba2a7983fa109c5
7
+ data.tar.gz: c0a82b4f9484fee0dde9a48b7cf9ba8cb7b3a949d7f76df55451fef315e8bfa8c24b5cad6eed1f7d9e419b9182694c023d1f108169b4ac0d6fca36d3b04ce7f6
@@ -5,6 +5,7 @@ name: rake
5
5
  on:
6
6
  push:
7
7
  branches: [ master, main ]
8
+ tags: [ v* ]
8
9
  pull_request:
9
10
 
10
11
  jobs:
@@ -10,8 +10,9 @@ on:
10
10
  Next release version. Possible values: x.y.z, major, minor, patch or pre|rc|etc
11
11
  required: true
12
12
  default: 'skip'
13
- push:
14
- tags: [ v* ]
13
+ repository_dispatch:
14
+ types: [ do-release ]
15
+
15
16
 
16
17
  jobs:
17
18
  release:
data/.gitignore CHANGED
@@ -6,6 +6,7 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ /vendor/
9
10
 
10
11
  # rspec failure tracking
11
12
  .rspec_status
data/.rubocop.yml CHANGED
@@ -7,6 +7,6 @@ require: rubocop-rails
7
7
  inherit_from:
8
8
  - https://raw.githubusercontent.com/riboseinc/oss-guides/master/ci/rubocop.yml
9
9
  AllCops:
10
- TargetRubyVersion: 2.5
10
+ TargetRubyVersion: 2.7
11
11
  Rails:
12
12
  Enabled: false
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 in the repository.
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
  ----
@@ -522,7 +522,6 @@
522
522
  <value>tip</value>
523
523
  <value>important</value>
524
524
  <value>caution</value>
525
- <value>statement</value>
526
525
  </choice>
527
526
  </define>
528
527
  <define name="figure">
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
- <ref name="organization"/>
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>complements</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 unless Dir.exist? 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
- # Parse document part references.
110
+ # Look for "Cite as" references.
110
111
  #
111
112
  # @return [Array<String>] document part references
112
113
  #
@@ -1,4 +1,5 @@
1
1
  module RelatonOasis
2
+ # Common methods for document and part parsers.
2
3
  module DataParserUtils
3
4
  #
4
5
  # Parse document identifier specification.
@@ -1,4 +1,5 @@
1
1
  module RelatonOasis
2
+ # Parser for OASIS part document.
2
3
  class DataPartParser
3
4
  include RelatonOasis::DataParserUtils
4
5
 
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RelatonOasis
4
- VERSION = "1.14.1"
4
+ VERSION = "1.14.3"
5
5
  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
@@ -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.5.0"
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.add_development_dependency "equivalent-xml", "~> 0.6"
35
- spec.add_development_dependency "pry-byebug"
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.1
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: 2022-12-06 00:00:00.000000000 Z
11
+ date: 2023-05-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: equivalent-xml
14
+ name: mechanize
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.6'
20
- type: :development
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: '0.6'
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: rubocop-performance
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: 5.0.0
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: '0'
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.5.0
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.1.6
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