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 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