relaton-w3c 1.14.1 → 1.14.2
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/Gemfile +5 -0
- data/grammars/basicdoc.rng +0 -1
- data/grammars/biblio.rng +12 -2
- data/lib/relaton_w3c/data_fetcher.rb +5 -1
- data/lib/relaton_w3c/data_index.rb +29 -49
- data/lib/relaton_w3c/processor.rb +7 -0
- data/lib/relaton_w3c/pubid.rb +54 -0
- data/lib/relaton_w3c/version.rb +1 -1
- data/lib/relaton_w3c/w3c_bibliography.rb +6 -4
- data/lib/relaton_w3c.rb +2 -0
- data/relaton_w3c.gemspec +1 -4
- metadata +18 -59
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3fa2cf3c72f102ca4939b69644daa84953456cf718e647043cd96821b60d76fc
|
4
|
+
data.tar.gz: 712c67760c7810fe30a915e11c9e5c50c829db4ff9dac5421b233445d19d6c04
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9974031951fd2938d8d7fa272df81a77d9c6f35be90374442c51344f0996d7488d1ec4b1b22d1af09b4b0913da65f4392bfa72344f13a3cb2d0fb4522a8ec4dc
|
7
|
+
data.tar.gz: 3f1bd4e90a671e3f3564fe80327096e7f26bc9371ffef46f2ed9e47be953e398c676ccac07d1083383fde2dce229af9fb0176b9b7d2c95e28ba4f2a520bdc69e
|
data/.github/workflows/rake.yml
CHANGED
data/Gemfile
CHANGED
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>
|
@@ -21,6 +21,7 @@ module RelatonW3c
|
|
21
21
|
dir = File.dirname(File.expand_path(__FILE__))
|
22
22
|
@group_names = YAML.load_file(File.join(dir, "workgroups.yaml"))
|
23
23
|
@index = DataIndex.create_from_file
|
24
|
+
@index1 = Relaton::Index.find_or_create :W3C, file: "index1.yaml"
|
24
25
|
end
|
25
26
|
|
26
27
|
#
|
@@ -60,6 +61,7 @@ module RelatonW3c
|
|
60
61
|
end
|
61
62
|
end
|
62
63
|
@index.sort!.save
|
64
|
+
@index1.save
|
63
65
|
end
|
64
66
|
|
65
67
|
#
|
@@ -218,7 +220,9 @@ module RelatonW3c
|
|
218
220
|
if @files.include?(file)
|
219
221
|
warn "File #{file} already exists. Document: #{bib.docnumber}" if warn_duplicate
|
220
222
|
else
|
221
|
-
|
223
|
+
pubid = PubId.parse bib.docnumber
|
224
|
+
@index.add pubid, file
|
225
|
+
@index1.add_or_update pubid.to_hash, file
|
222
226
|
@files << file
|
223
227
|
File.write file, c, encoding: "UTF-8"
|
224
228
|
end
|
@@ -16,19 +16,21 @@ module RelatonW3c
|
|
16
16
|
#
|
17
17
|
# Add document to index or update it if already exists
|
18
18
|
#
|
19
|
-
# @param [
|
19
|
+
# @param [RelatonW3c::PubId] pubid document number
|
20
20
|
# @param [String] file path to document file
|
21
21
|
#
|
22
|
-
def add(
|
23
|
-
dnparts = self.class.docnumber_to_parts docnumber
|
22
|
+
def add(pubid, file) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Metrics/MethodLength
|
23
|
+
# dnparts = self.class.docnumber_to_parts docnumber
|
24
|
+
# pubid = PubId.parse docnumber
|
24
25
|
rec = @index.detect { |i| i[:file] == file }
|
25
26
|
if rec
|
26
|
-
rec[:code] =
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
27
|
+
rec[:code] = pubid.code
|
28
|
+
pubid.stage ? rec[:stage] = pubid.stage : rec.delete(:stage)
|
29
|
+
pubid.type ? rec[:type] = pubid.type : rec.delete(:type)
|
30
|
+
pubid.date ? rec[:date] = pubid.date : rec.delete(:date)
|
31
|
+
pubid.suff ? rec[:suff] = pubid.suff : rec.delete(:suff)
|
31
32
|
else
|
33
|
+
dnparts = pubid.to_hash
|
32
34
|
dnparts[:file] = file
|
33
35
|
@index << dnparts
|
34
36
|
end
|
@@ -58,19 +60,19 @@ module RelatonW3c
|
|
58
60
|
#
|
59
61
|
# @return [String] document's filename
|
60
62
|
#
|
61
|
-
def search(ref) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
62
|
-
|
63
|
-
|
63
|
+
# def search(ref) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
64
|
+
# pubid = PubId.parse(ref)
|
65
|
+
# return if pubid.code.nil?
|
64
66
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
end
|
67
|
+
# @index.detect do |parts|
|
68
|
+
# parts[:code].match?(/^#{Regexp.escape pubid.code}/i) &&
|
69
|
+
# (pubid.stage.nil? || pubid.stage.casecmp?(parts[:stage])) &&
|
70
|
+
# (pubid.type.nil? || pubid.type.casecmp?(parts[:type]) ||
|
71
|
+
# (parts[:type].nil? && pubid.type == "TR")) &&
|
72
|
+
# (pubid.date.nil? || pubid.date == parts[:date]) &&
|
73
|
+
# (pubid.suff.nil? || pubid.suff.casecmp?(parts[:suff]))
|
74
|
+
# end&.fetch(:file)
|
75
|
+
# end
|
74
76
|
|
75
77
|
#
|
76
78
|
# Compare index items
|
@@ -120,13 +122,13 @@ module RelatonW3c
|
|
120
122
|
#
|
121
123
|
# @return [RelatonW3c::DataIndex] data index
|
122
124
|
#
|
123
|
-
def create_from_repo
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
end
|
125
|
+
# def create_from_repo
|
126
|
+
# uri = URI("#{W3cBibliography::SOURCE}index-w3c.zip").open
|
127
|
+
# resp = Zip::InputStream.new uri
|
128
|
+
# zip = resp.get_next_entry
|
129
|
+
# index = RelatonBib.parse_yaml(zip.get_input_stream.read, [Symbol])
|
130
|
+
# new index: index
|
131
|
+
# end
|
130
132
|
|
131
133
|
#
|
132
134
|
# Create index from a file
|
@@ -142,28 +144,6 @@ module RelatonW3c
|
|
142
144
|
end
|
143
145
|
new index_file: index_file, index: index
|
144
146
|
end
|
145
|
-
|
146
|
-
#
|
147
|
-
# Parse document number to parts
|
148
|
-
#
|
149
|
-
# @param [String] docnumber document number
|
150
|
-
#
|
151
|
-
# @return [Hash{Symbol=>String}] document parts
|
152
|
-
#
|
153
|
-
def docnumber_to_parts(docnumber) # rubocop:disable Metrics/MethodLength
|
154
|
-
%r{
|
155
|
-
^(?:(?:(?<stage>WD|CRD|CR|PR|PER|REC|SPSD|OBSL|RET)|(?<type>D?NOTE|TR))-)?
|
156
|
-
(?<code>\w+(?:[+-][\w.]+)*?)
|
157
|
-
(?:-(?<date>\d{8}|\d{6}|\d{4}))?
|
158
|
-
(?:/(?<suff>\w+))?$
|
159
|
-
}xi =~ docnumber
|
160
|
-
entry = { code: code }
|
161
|
-
entry[:stage] = stage if stage
|
162
|
-
entry[:type] = type if type
|
163
|
-
entry[:date] = date if date
|
164
|
-
entry[:suff] = suff if suff
|
165
|
-
entry
|
166
|
-
end
|
167
147
|
end
|
168
148
|
end
|
169
149
|
end
|
@@ -50,5 +50,12 @@ module RelatonW3c
|
|
50
50
|
def grammar_hash
|
51
51
|
@grammar_hash ||= ::RelatonW3c.grammar_hash
|
52
52
|
end
|
53
|
+
|
54
|
+
#
|
55
|
+
# Remove index file
|
56
|
+
#
|
57
|
+
def remove_index_file
|
58
|
+
Relaton::Index.find_or_create(:W3C, url: true, file: "#{W3cBibliography::INDEX}.yaml").remove_file
|
59
|
+
end
|
53
60
|
end
|
54
61
|
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module RelatonW3c
|
2
|
+
class PubId
|
3
|
+
PARTS = %i[code stage type date suff].freeze
|
4
|
+
|
5
|
+
PARTS.each { |part| attr_accessor part }
|
6
|
+
|
7
|
+
def initialize(**parts)
|
8
|
+
PARTS.each { |part| send "#{part}=", parts[part] }
|
9
|
+
end
|
10
|
+
|
11
|
+
#
|
12
|
+
# Parse document identifier.
|
13
|
+
#
|
14
|
+
# @param [String] docnumber document identifier
|
15
|
+
#
|
16
|
+
# @return [RelatonW3c::PubId] document identifier parts
|
17
|
+
#
|
18
|
+
def self.parse(docnumber) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
19
|
+
%r{
|
20
|
+
(?:^|/)(?:(?:(?<stage>WD|CRD|CR|PR|PER|REC|SPSD|OBSL|RET)|(?<type>D?NOTE|TR))[\s/-])?
|
21
|
+
(?<code>\w+(?:[+-][\w.]+)*?)
|
22
|
+
(?:-(?<date>\d{8}|\d{6}|\d{4}))?
|
23
|
+
(?:/(?<suff>\w+))?(?:$|/)
|
24
|
+
}xi =~ docnumber
|
25
|
+
entry = { code: code }
|
26
|
+
entry[:stage] = stage if stage
|
27
|
+
entry[:type] = type if type && type != "TR"
|
28
|
+
entry[:date] = date if date
|
29
|
+
entry[:suff] = suff if suff
|
30
|
+
new(**entry)
|
31
|
+
end
|
32
|
+
|
33
|
+
#
|
34
|
+
# Compare document identifiers against Hash ID representation.
|
35
|
+
#
|
36
|
+
# @param [Hash] other hash of document identifier parts
|
37
|
+
#
|
38
|
+
# @return [Boolean] true if document identifiers are same
|
39
|
+
#
|
40
|
+
def ==(other) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
41
|
+
other[:code].casecmp?(code) && other[:stage] == stage && other[:type] == type &&
|
42
|
+
(date.nil? || other[:date] == date) && (suff.nil? || other[:suff]&.casecmp?(suff))
|
43
|
+
end
|
44
|
+
|
45
|
+
#
|
46
|
+
# Convert docidentifier identifier to hash.
|
47
|
+
#
|
48
|
+
# @return [Hash] hash of docidentifier parts
|
49
|
+
#
|
50
|
+
def to_hash
|
51
|
+
PARTS.each_with_object({}) { |part, hash| hash[part] = send part if send part }
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/lib/relaton_w3c/version.rb
CHANGED
@@ -6,16 +6,18 @@ module RelatonW3c
|
|
6
6
|
# Class methods for search W3C standards.
|
7
7
|
class W3cBibliography
|
8
8
|
SOURCE = "https://raw.githubusercontent.com/relaton/relaton-data-w3c/main/"
|
9
|
+
INDEX = "index1"
|
9
10
|
|
10
11
|
class << self
|
11
12
|
# @param text [String]
|
12
13
|
# @return [RelatonW3c::W3cBibliographicItem]
|
13
14
|
def search(text) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
14
|
-
|
15
|
-
|
16
|
-
|
15
|
+
pubid = PubId.parse text.sub(/^W3C\s/, "")
|
16
|
+
index = Relaton::Index.find_or_create :W3C, url: "#{SOURCE}#{INDEX}.zip", file: "#{INDEX}.yaml"
|
17
|
+
row = index.search { |r| pubid == r[:id] }.first
|
18
|
+
return unless row
|
17
19
|
|
18
|
-
url = "#{SOURCE}#{file}"
|
20
|
+
url = "#{SOURCE}#{row[:file]}"
|
19
21
|
resp = Net::HTTP.get_response(URI.parse(url))
|
20
22
|
return unless resp.code == "200"
|
21
23
|
|
data/lib/relaton_w3c.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
require "relaton_bib"
|
2
|
+
require "relaton/index"
|
2
3
|
require "relaton_w3c/version"
|
3
4
|
require "relaton_w3c/w3c_bibliography"
|
4
5
|
require "relaton_w3c/w3c_bibliographic_item"
|
5
6
|
require "relaton_w3c/xml_parser"
|
6
7
|
require "relaton_w3c/bibxml_parser"
|
7
8
|
require "relaton_w3c/hash_converter"
|
9
|
+
require "relaton_w3c/pubid"
|
8
10
|
require "relaton_w3c/data_fetcher"
|
9
11
|
require "relaton_w3c/data_index"
|
10
12
|
|
data/relaton_w3c.gemspec
CHANGED
@@ -32,16 +32,13 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.require_paths = ["lib"]
|
33
33
|
|
34
34
|
spec.add_development_dependency "equivalent-xml", "~> 0.6"
|
35
|
-
spec.add_development_dependency "ruby-jing"
|
36
|
-
spec.add_development_dependency "simplecov"
|
37
|
-
spec.add_development_dependency "vcr"
|
38
|
-
spec.add_development_dependency "webmock"
|
39
35
|
|
40
36
|
spec.add_dependency "linkeddata", "~> 3.2.0"
|
41
37
|
spec.add_dependency "mechanize", "~> 2.8.0"
|
42
38
|
spec.add_dependency "rdf", "~> 3.2.0"
|
43
39
|
spec.add_dependency "rdf-normalize", "~> 0.5.0"
|
44
40
|
spec.add_dependency "relaton-bib", "~> 1.14.0"
|
41
|
+
spec.add_dependency "relaton-index", "~> 0.2.0"
|
45
42
|
spec.add_dependency "rubyzip", "~> 2.3.0"
|
46
43
|
spec.add_dependency "shex", "~> 0.7.0"
|
47
44
|
spec.add_dependency "sparql", "~> 3.2.0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: relaton-w3c
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.14.
|
4
|
+
version: 1.14.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: equivalent-xml
|
@@ -24,62 +24,6 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0.6'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: ruby-jing
|
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'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: simplecov
|
43
|
-
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: vcr
|
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: webmock
|
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
27
|
- !ruby/object:Gem::Dependency
|
84
28
|
name: linkeddata
|
85
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,6 +94,20 @@ dependencies:
|
|
150
94
|
- - "~>"
|
151
95
|
- !ruby/object:Gem::Version
|
152
96
|
version: 1.14.0
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: relaton-index
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 0.2.0
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.2.0
|
153
111
|
- !ruby/object:Gem::Dependency
|
154
112
|
name: rubyzip
|
155
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -225,6 +183,7 @@ files:
|
|
225
183
|
- lib/relaton_w3c/data_parser.rb
|
226
184
|
- lib/relaton_w3c/hash_converter.rb
|
227
185
|
- lib/relaton_w3c/processor.rb
|
186
|
+
- lib/relaton_w3c/pubid.rb
|
228
187
|
- lib/relaton_w3c/version.rb
|
229
188
|
- lib/relaton_w3c/w3c_bibliographic_item.rb
|
230
189
|
- lib/relaton_w3c/w3c_bibliography.rb
|
@@ -251,7 +210,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
251
210
|
- !ruby/object:Gem::Version
|
252
211
|
version: '0'
|
253
212
|
requirements: []
|
254
|
-
rubygems_version: 3.
|
213
|
+
rubygems_version: 3.3.26
|
255
214
|
signing_key:
|
256
215
|
specification_version: 4
|
257
216
|
summary: 'RelatonIso: retrieve W3C Standards for bibliographic using the IsoBibliographicItem
|