relaton-iec 2.1.1 → 2.2.0.pre.alpha.1
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/CLAUDE.md +1 -1
- data/Gemfile +7 -0
- data/README.adoc +1 -1
- data/Rakefile +2 -2
- data/lib/relaton/iec/bibliography.rb +17 -12
- data/lib/relaton/iec/data_fetcher.rb +2 -5
- data/lib/relaton/iec/hit_collection.rb +60 -18
- data/lib/relaton/iec/model/docidentifier.rb +38 -8
- data/lib/relaton/iec/version.rb +1 -1
- data/lib/relaton/iec.rb +2 -2
- data/relaton-iec.gemspec +5 -5
- metadata +12 -18
- data/.rubocop.yml +0 -12
- data/grammars/basicdoc.rng +0 -2140
- data/grammars/biblio-standoc.rng +0 -268
- data/grammars/biblio.rng +0 -2125
- data/grammars/relaton-iec-compile.rng +0 -11
- data/grammars/relaton-iec.rng +0 -223
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dcfb7bd2592c2c1245175ddd175426e8f559fe055e6d116bf896009baec5da94
|
|
4
|
+
data.tar.gz: 0eef5839d2cbb8fcc085048393a9e0900954fd7c7860770c16497829b6740655
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: eed54a4f4c67ddc98eb5d6d9d0548b48ff626e6a9168c639ddbffc9bb80393bbc6f8d3eaa46f9894cff31606f5ea4179a80bc0b77f3a6bccc85b3b9c27f63ae9
|
|
7
|
+
data.tar.gz: eef855a8bb64881e2e425822584bb84b6511cb48977890cdb6ed396a7692d24318fd7e3a3ad064c43353b7c2b78e71b2771cef6340c05db6c9931050506c87e4
|
data/CLAUDE.md
CHANGED
|
@@ -9,5 +9,5 @@
|
|
|
9
9
|
## Testing
|
|
10
10
|
|
|
11
11
|
- **Framework:** RSpec with VCR cassettes and WebMock
|
|
12
|
-
- **Index fixture:** `spec/fixtures/index-
|
|
12
|
+
- **Index fixture:** `spec/fixtures/index-v2.zip` is pre-loaded into `Relaton::Index` pool in `before(:suite)` (configured in `spec/support/webmock.rb`). Run `rake spec:update_index` to refresh from relaton-data-iec. The fixture is the lean pubid-v2 `to_hash` index (`_type`-tagged rows); rows are deserialized via `Pubid::Iec::Identifier.from_hash` and validated by round-trip in relaton-index (no `id_keys` allowlist).
|
|
13
13
|
- **VCR cassettes:** `spec/vcr_cassettes/` — index download requests are ignored by VCR (handled by fixture).
|
data/Gemfile
CHANGED
|
@@ -5,6 +5,13 @@ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
|
|
5
5
|
# Specify your gem's dependencies in relaton_iec.gemspec
|
|
6
6
|
gemspec
|
|
7
7
|
|
|
8
|
+
# Use local monorepo sibling gems where available.
|
|
9
|
+
Dir["../*/"].each do |dir|
|
|
10
|
+
name = File.basename(dir)
|
|
11
|
+
next if name == File.basename(__dir__)
|
|
12
|
+
next unless File.exist?(File.join(dir, "#{name}.gemspec"))
|
|
13
|
+
gem name, path: dir
|
|
14
|
+
end
|
|
8
15
|
|
|
9
16
|
gem "equivalent-xml", "~> 0.6"
|
|
10
17
|
gem "pry-byebug"
|
data/README.adoc
CHANGED
|
@@ -286,7 +286,7 @@ Relaton::Iec uses the relaton-logger gem for logging. By default, it logs to STD
|
|
|
286
286
|
|
|
287
287
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
|
288
288
|
|
|
289
|
-
To update the index test fixture (used by tests), run `rake spec:update_index`. This downloads the latest `index-
|
|
289
|
+
To update the index test fixture (used by tests), run `rake spec:update_index`. This downloads the latest `index-v2.zip` from the https://github.com/relaton/relaton-data-iec[relaton-data-iec] repository.
|
|
290
290
|
|
|
291
291
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
|
292
292
|
|
data/Rakefile
CHANGED
|
@@ -11,8 +11,8 @@ namespace :spec do
|
|
|
11
11
|
require "net/http"
|
|
12
12
|
require "uri"
|
|
13
13
|
|
|
14
|
-
url = "https://raw.githubusercontent.com/relaton/relaton-data-iec/v2/index-
|
|
15
|
-
dest = File.join(__dir__, "spec", "fixtures", "index-
|
|
14
|
+
url = "https://raw.githubusercontent.com/relaton/relaton-data-iec/v2/index-v2.zip"
|
|
15
|
+
dest = File.join(__dir__, "spec", "fixtures", "index-v2.zip")
|
|
16
16
|
|
|
17
17
|
puts "Downloading \#{url} ..."
|
|
18
18
|
uri = URI.parse(url)
|
|
@@ -35,12 +35,14 @@ module Relaton
|
|
|
35
35
|
return iev if ref.casecmp("IEV").zero?
|
|
36
36
|
|
|
37
37
|
pubid = ::Pubid::Iec::Identifier.parse ref.upcase
|
|
38
|
-
|
|
38
|
+
if year
|
|
39
|
+
pubid.date = ::Pubid::Components::Date.new(year: year.to_s)
|
|
40
|
+
end
|
|
39
41
|
|
|
40
42
|
ret = iecbib_get(pubid, opts)
|
|
41
43
|
return nil if ret.nil?
|
|
42
44
|
|
|
43
|
-
ret = ret.to_most_recent_reference unless pubid.year || opts[:keep_year] ||
|
|
45
|
+
ret = ret.to_most_recent_reference unless pubid.date&.year || opts[:keep_year] ||
|
|
44
46
|
opts[:publication_date_before] || opts[:publication_date_after]
|
|
45
47
|
ret
|
|
46
48
|
end
|
|
@@ -90,11 +92,13 @@ module Relaton
|
|
|
90
92
|
# @return [Relaton::Iec::ItemData, nil]
|
|
91
93
|
def iecbib_get(pubid, opts) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
|
|
92
94
|
Util.info "Fetching from Relaton repository ...", key: pubid.to_s
|
|
93
|
-
|
|
95
|
+
# pubid 2.x splits multi-level numbers ("61326-2-6") into part +
|
|
96
|
+
# subpart, so all-parts matching must ignore subpart too.
|
|
97
|
+
exclude = opts[:all_parts] ? %i[year part subpart] : %i[year]
|
|
94
98
|
result = search(pubid, exclude: exclude) || return
|
|
95
99
|
|
|
96
100
|
if opts[:all_parts]
|
|
97
|
-
ret = result.to_all_parts(pubid.year&.to_s, opts)
|
|
101
|
+
ret = result.to_all_parts(pubid.date&.year&.to_s, opts)
|
|
98
102
|
Util.info "Found: `#{ret&.docidentifier&.first&.content}`", key: pubid.to_s if ret
|
|
99
103
|
return ret
|
|
100
104
|
end
|
|
@@ -112,19 +116,20 @@ module Relaton
|
|
|
112
116
|
# @param opts [Hash]
|
|
113
117
|
# @return [Relaton::Iec::ItemData, nil]
|
|
114
118
|
def find_match(result, pubid, opts = {}) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity
|
|
115
|
-
|
|
116
|
-
|
|
119
|
+
pubid_year = pubid.date&.year
|
|
120
|
+
if pubid_year
|
|
121
|
+
hit = result.detect { |h| h.hit[:id].date&.year == pubid_year }
|
|
117
122
|
return fetch_and_check_date(hit, pubid, opts) if hit
|
|
118
123
|
elsif opts[:publication_date_before] || opts[:publication_date_after]
|
|
119
|
-
candidates = result.select { |h| year_in_range?(h.hit[:id].year.to_i, opts) }
|
|
120
|
-
candidates = candidates.sort_by { |h| -h.hit[:id].year.to_i }
|
|
124
|
+
candidates = result.select { |h| year_in_range?(h.hit[:id].date&.year.to_i, opts) }
|
|
125
|
+
candidates = candidates.sort_by { |h| -h.hit[:id].date&.year.to_i }
|
|
121
126
|
candidates.each do |h|
|
|
122
127
|
ret = fetch_and_check_date(h, pubid, opts)
|
|
123
128
|
return ret if ret
|
|
124
129
|
end
|
|
125
130
|
return nil
|
|
126
131
|
else
|
|
127
|
-
hit = result.max_by { |h| h.hit[:id].year.to_i }
|
|
132
|
+
hit = result.max_by { |h| h.hit[:id].date&.year.to_i }
|
|
128
133
|
return unless hit
|
|
129
134
|
|
|
130
135
|
ret = hit.item
|
|
@@ -243,9 +248,9 @@ module Relaton
|
|
|
243
248
|
Util.info "Not found.", key: pubid.to_s
|
|
244
249
|
|
|
245
250
|
# Year mismatch: hits exist but not for the requested year
|
|
246
|
-
if pubid.year && result.any?
|
|
247
|
-
years = result.map { |h| h.hit[:id].year&.to_s }.compact.uniq.sort
|
|
248
|
-
Util.info "TIP: No match for edition year `#{pubid.year}`, " \
|
|
251
|
+
if pubid.date&.year && result.any?
|
|
252
|
+
years = result.map { |h| h.hit[:id].date&.year&.to_s }.compact.uniq.sort
|
|
253
|
+
Util.info "TIP: No match for edition year `#{pubid.date&.year}`, " \
|
|
249
254
|
"but matches exist for `#{years.join('`, `')}`.", key: pubid.to_s
|
|
250
255
|
return
|
|
251
256
|
end
|
|
@@ -28,10 +28,6 @@ module Relaton
|
|
|
28
28
|
index.save
|
|
29
29
|
save_last_change
|
|
30
30
|
report_errors
|
|
31
|
-
rescue StandardError => e
|
|
32
|
-
Util.error do
|
|
33
|
-
"#{e.message}\n#{e.backtrace.join("\n")}"
|
|
34
|
-
end
|
|
35
31
|
end
|
|
36
32
|
|
|
37
33
|
private
|
|
@@ -198,7 +194,8 @@ module Relaton
|
|
|
198
194
|
pubid = parse_pubid(did.to_s)
|
|
199
195
|
index.add_or_update pubid, file if pubid
|
|
200
196
|
end
|
|
201
|
-
|
|
197
|
+
ts = pub["lastChangeTimestamp"]
|
|
198
|
+
@last_change_max = ts if ts && last_change_max < ts
|
|
202
199
|
File.write file, serialize(bib), encoding: "UTF-8"
|
|
203
200
|
end
|
|
204
201
|
|
|
@@ -17,16 +17,17 @@ module Relaton
|
|
|
17
17
|
|
|
18
18
|
# @return [Relaton::Iec::ItemData, nil]
|
|
19
19
|
def to_all_parts(r_year, opts = {}) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
|
|
20
|
-
parts = @array.select { |h| h.part && (!r_year || h.hit[:id]&.year&.to_s == r_year) }
|
|
20
|
+
parts = @array.select { |h| h.part && (!r_year || h.hit[:id]&.date&.year&.to_s == r_year) }
|
|
21
21
|
if opts[:publication_date_before] || opts[:publication_date_after]
|
|
22
|
-
parts = parts.select { |h| Bibliography.send(:year_in_range?, h.hit[:id].year.to_i, opts) }
|
|
22
|
+
parts = parts.select { |h| Bibliography.send(:year_in_range?, h.hit[:id].date&.year.to_i, opts) }
|
|
23
23
|
end
|
|
24
24
|
hit = parts.min_by { |h| h.part.to_i }
|
|
25
25
|
return @array.first&.item unless hit
|
|
26
26
|
|
|
27
27
|
bibitem = hit.item
|
|
28
28
|
all_parts_item = bibitem.to_all_parts
|
|
29
|
-
parts.reject { |h| h.hit[:id] == hit.hit[:id] }
|
|
29
|
+
others = parts.reject { |h| h.hit[:id] == hit.hit[:id] }
|
|
30
|
+
others.sort_by { |h| part_sort_key(h.hit[:id]) }.each do |hi|
|
|
30
31
|
code = hi.hit[:id].to_s
|
|
31
32
|
bib = ItemData.new(
|
|
32
33
|
formattedref: Bib::Formattedref.new(content: code),
|
|
@@ -39,16 +40,18 @@ module Relaton
|
|
|
39
40
|
|
|
40
41
|
private
|
|
41
42
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
# Ascending sort key for part ordering, e.g. 61326-2-1 < 61326-2-6.
|
|
44
|
+
# part/subpart are pubid Code components; coerce via to_s, missing → 0.
|
|
45
|
+
def part_sort_key(pubid)
|
|
46
|
+
sub = pubid.respond_to?(:subpart) ? pubid.subpart : nil
|
|
47
|
+
[pubid.part.to_s.to_i, sub.to_s.to_i]
|
|
48
|
+
end
|
|
45
49
|
|
|
46
50
|
def index
|
|
47
51
|
@index ||= Relaton::Index.find_or_create(
|
|
48
52
|
:IEC,
|
|
49
53
|
url: "#{Hit::GHURL}#{INDEXFILE}.zip",
|
|
50
54
|
file: "#{INDEXFILE}.yaml",
|
|
51
|
-
id_keys: VALID_ID_KEYS,
|
|
52
55
|
pubid_class: ::Pubid::Iec::Identifier
|
|
53
56
|
)
|
|
54
57
|
end
|
|
@@ -62,21 +65,60 @@ module Relaton
|
|
|
62
65
|
part.to_s.split("-").map(&:to_i)
|
|
63
66
|
end
|
|
64
67
|
|
|
65
|
-
#
|
|
68
|
+
# Keys pubid re-emits at a default value after `from_hash` but omits on a
|
|
69
|
+
# fresh `parse` (a lutaml render_default asymmetry: a deserialized
|
|
70
|
+
# attribute loses its using_default flag, so render_default: false no
|
|
71
|
+
# longer suppresses it). Equality must ignore them so a deserialized index
|
|
72
|
+
# row compares equal to the freshly-parsed query. Values are the
|
|
73
|
+
# stringified defaults (see #stringify).
|
|
74
|
+
LEAKING_DEFAULTS = { "publisher" => "IEC", "all_parts" => "false", "database" => "false" }.freeze
|
|
75
|
+
|
|
76
|
+
# Map a flat exclude symbol to the lean to_hash key it removes (at every
|
|
77
|
+
# nesting level). :type removes the polymorphic `_type` discriminator.
|
|
78
|
+
EXCLUDE_KEYS = { year: "year", part: "part", subpart: "subpart", type: "_type" }.freeze
|
|
79
|
+
|
|
80
|
+
# Compare pubids for matching, excluding specified fields.
|
|
66
81
|
# @param row_pubid [Pubid::Iec::Identifier] pubid from index row
|
|
67
82
|
# @return [Boolean]
|
|
68
83
|
def pubid_matches?(row_pubid, exclude)
|
|
69
84
|
return false unless row_pubid
|
|
70
85
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
86
|
+
canonical_id(@ref, exclude) == canonical_id(row_pubid, exclude)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# Build-path-independent comparison key: the lean `to_hash` with keys and
|
|
90
|
+
# scalars stringified, leaking defaults dropped, and excluded fields
|
|
91
|
+
# removed at every nesting level. More robust than comparing attribute
|
|
92
|
+
# objects, whose derived `type`/`stage` differ between a parsed identifier
|
|
93
|
+
# (component object) and a deserialized one (nil/symbol) — at the top level
|
|
94
|
+
# and inside `base_identifier`.
|
|
95
|
+
def canonical_id(pubid, exclude)
|
|
96
|
+
drop = exclude.filter_map { |e| EXCLUDE_KEYS[e] }
|
|
97
|
+
prune(stringify(pubid.to_hash), drop)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# Stringify hash keys and scalar values so comparison ignores YAML scalar
|
|
101
|
+
# typing (1 vs "1") and string/symbol key differences.
|
|
102
|
+
def stringify(value)
|
|
103
|
+
case value
|
|
104
|
+
when Hash then value.to_h { |k, v| [k.to_s, stringify(v)] }
|
|
105
|
+
when Array then value.map { |v| stringify(v) }
|
|
106
|
+
when nil then nil
|
|
107
|
+
else value.to_s
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# Recursively drop nil values, leaking defaults, and excluded keys.
|
|
112
|
+
def prune(value, drop)
|
|
113
|
+
case value
|
|
114
|
+
when Hash
|
|
115
|
+
value.each_with_object({}) do |(k, v), h|
|
|
116
|
+
next if v.nil? || drop.include?(k) || LEAKING_DEFAULTS[k] == v
|
|
117
|
+
|
|
118
|
+
h[k] = prune(v, drop)
|
|
119
|
+
end
|
|
120
|
+
when Array then value.map { |v| prune(v, drop) }
|
|
121
|
+
else value
|
|
80
122
|
end
|
|
81
123
|
end
|
|
82
124
|
|
|
@@ -86,7 +128,7 @@ module Relaton
|
|
|
86
128
|
index.search(@ref) do |row|
|
|
87
129
|
pubid_matches?(row[:id], exclude)
|
|
88
130
|
end.sort_by do |row|
|
|
89
|
-
[row[:id].year.to_i, *part_sort_key(row[:id].part)]
|
|
131
|
+
[row[:id].date&.year.to_i, *part_sort_key(row[:id].part)]
|
|
90
132
|
end.map do |row|
|
|
91
133
|
Hit.new(row, self)
|
|
92
134
|
end
|
|
@@ -20,7 +20,7 @@ module Relaton
|
|
|
20
20
|
|
|
21
21
|
parsed =
|
|
22
22
|
case value
|
|
23
|
-
when ::Pubid::Iec::
|
|
23
|
+
when ::Pubid::Iec::Identifier then value
|
|
24
24
|
when String
|
|
25
25
|
begin
|
|
26
26
|
::Pubid::Iec::Identifier.parse(value)
|
|
@@ -69,14 +69,16 @@ module Relaton
|
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
def remove_date!
|
|
72
|
-
remove_attr!(:
|
|
72
|
+
remove_attr!(:date)
|
|
73
73
|
end
|
|
74
74
|
|
|
75
75
|
private
|
|
76
76
|
|
|
77
77
|
def render_pubid(pubid)
|
|
78
78
|
case type
|
|
79
|
-
|
|
79
|
+
# pubid owns the legacy positional IEC URN format (and the all-parts
|
|
80
|
+
# ":::ser" series form); render through it.
|
|
81
|
+
when "URN" then pubid.to_urn.to_s
|
|
80
82
|
else pubid.to_s
|
|
81
83
|
end
|
|
82
84
|
end
|
|
@@ -84,15 +86,43 @@ module Relaton
|
|
|
84
86
|
def remove_attr!(attr)
|
|
85
87
|
return unless @pubid
|
|
86
88
|
|
|
87
|
-
|
|
88
|
-
base
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
# For supplements (Amendment/Corrigendum, which carry their own
|
|
90
|
+
# date/version as an addition to the base), preserve the
|
|
91
|
+
# supplement's own attrs and only clear the base chain — e.g.
|
|
92
|
+
# "IEC 60027-1:1992/AMD1:1997" should drop the base year but keep
|
|
93
|
+
# the amendment year. For wrappers (VapIdentifier, ConsolidatedIdentifier),
|
|
94
|
+
# clear the outer attr too — they re-state the base year and need it
|
|
95
|
+
# gone everywhere.
|
|
96
|
+
unless @pubid.is_a?(::Pubid::Iec::SupplementIdentifier)
|
|
97
|
+
clear_attr_on(@pubid, attr)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
node = @pubid.base_identifier
|
|
101
|
+
while node
|
|
102
|
+
clear_attr_on(node, attr)
|
|
103
|
+
# ConsolidatedIdentifier carries a sibling collection of bundled
|
|
104
|
+
# identifiers; clear the attr on each non-supplement entry too.
|
|
105
|
+
if node.respond_to?(:identifiers) && node.identifiers
|
|
106
|
+
node.identifiers.each do |id|
|
|
107
|
+
next if id.is_a?(::Pubid::Iec::SupplementIdentifier)
|
|
108
|
+
|
|
109
|
+
clear_attr_on(id, attr)
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
node = node.base_identifier
|
|
92
113
|
end
|
|
93
114
|
refresh_content!
|
|
94
115
|
end
|
|
95
116
|
|
|
117
|
+
# Clear one attribute on a single pubid; for :part also clear the
|
|
118
|
+
# paired :subpart (pubid 2.x splits "16-1-1" into part="1" + subpart="1").
|
|
119
|
+
def clear_attr_on(pubid, attr)
|
|
120
|
+
pubid.send("#{attr}=", nil) if pubid.respond_to?("#{attr}=")
|
|
121
|
+
return unless attr == :part && pubid.respond_to?(:subpart=)
|
|
122
|
+
|
|
123
|
+
pubid.subpart = nil
|
|
124
|
+
end
|
|
125
|
+
|
|
96
126
|
def refresh_content!
|
|
97
127
|
send(:original_content=, to_s)
|
|
98
128
|
end
|
data/lib/relaton/iec/version.rb
CHANGED
data/lib/relaton/iec.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require "digest/md5"
|
|
2
2
|
require "net/http"
|
|
3
3
|
require "nokogiri"
|
|
4
|
-
require "pubid
|
|
4
|
+
require "pubid"
|
|
5
5
|
require "zip"
|
|
6
6
|
require "relaton/index"
|
|
7
7
|
require "relaton/iso"
|
|
@@ -20,7 +20,7 @@ require_relative "iec/model/bibdata"
|
|
|
20
20
|
|
|
21
21
|
module Relaton
|
|
22
22
|
module Iec
|
|
23
|
-
INDEXFILE = "index-
|
|
23
|
+
INDEXFILE = "index-v2".freeze
|
|
24
24
|
|
|
25
25
|
class << self
|
|
26
26
|
# Returns hash of XML reammar
|
data/relaton-iec.gemspec
CHANGED
|
@@ -21,13 +21,13 @@ Gem::Specification.new do |spec|
|
|
|
21
21
|
spec.bindir = "exe"
|
|
22
22
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
23
23
|
spec.require_paths = ["lib"]
|
|
24
|
-
spec.required_ruby_version = Gem::Requirement.new(">= 3.
|
|
24
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 3.3.0")
|
|
25
25
|
|
|
26
26
|
spec.add_dependency "addressable"
|
|
27
27
|
spec.add_dependency "base64"
|
|
28
|
-
spec.add_dependency "pubid
|
|
29
|
-
spec.add_dependency "relaton-core", "~>
|
|
30
|
-
spec.add_dependency "relaton-index", "~>
|
|
31
|
-
spec.add_dependency "relaton-iso", "~> 2.
|
|
28
|
+
spec.add_dependency "pubid", "~> 2.0.0.pre.alpha.3"
|
|
29
|
+
spec.add_dependency "relaton-core", "~> 2.2.0.pre.alpha.1"
|
|
30
|
+
spec.add_dependency "relaton-index", "~> 2.2.0.pre.alpha.1"
|
|
31
|
+
spec.add_dependency "relaton-iso", "~> 2.2.0.pre.alpha.1"
|
|
32
32
|
spec.add_dependency "rubyzip"
|
|
33
33
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: relaton-iec
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.2.0.pre.alpha.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-06-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: addressable
|
|
@@ -39,61 +39,61 @@ dependencies:
|
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '0'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: pubid
|
|
42
|
+
name: pubid
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
45
|
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version:
|
|
47
|
+
version: 2.0.0.pre.alpha.3
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version:
|
|
54
|
+
version: 2.0.0.pre.alpha.3
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: relaton-core
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
59
|
- - "~>"
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version:
|
|
61
|
+
version: 2.2.0.pre.alpha.1
|
|
62
62
|
type: :runtime
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
66
|
- - "~>"
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version:
|
|
68
|
+
version: 2.2.0.pre.alpha.1
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: relaton-index
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
|
73
73
|
- - "~>"
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
|
-
version:
|
|
75
|
+
version: 2.2.0.pre.alpha.1
|
|
76
76
|
type: :runtime
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
80
|
- - "~>"
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
|
-
version:
|
|
82
|
+
version: 2.2.0.pre.alpha.1
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
84
|
name: relaton-iso
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
86
86
|
requirements:
|
|
87
87
|
- - "~>"
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: 2.
|
|
89
|
+
version: 2.2.0.pre.alpha.1
|
|
90
90
|
type: :runtime
|
|
91
91
|
prerelease: false
|
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
93
|
requirements:
|
|
94
94
|
- - "~>"
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: 2.
|
|
96
|
+
version: 2.2.0.pre.alpha.1
|
|
97
97
|
- !ruby/object:Gem::Dependency
|
|
98
98
|
name: rubyzip
|
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -120,7 +120,6 @@ files:
|
|
|
120
120
|
- ".github/workflows/release.yml"
|
|
121
121
|
- ".gitignore"
|
|
122
122
|
- ".rspec"
|
|
123
|
-
- ".rubocop.yml"
|
|
124
123
|
- CLAUDE.md
|
|
125
124
|
- Gemfile
|
|
126
125
|
- LICENSE.txt
|
|
@@ -129,11 +128,6 @@ files:
|
|
|
129
128
|
- bin/console
|
|
130
129
|
- bin/rspec
|
|
131
130
|
- bin/setup
|
|
132
|
-
- grammars/basicdoc.rng
|
|
133
|
-
- grammars/biblio-standoc.rng
|
|
134
|
-
- grammars/biblio.rng
|
|
135
|
-
- grammars/relaton-iec-compile.rng
|
|
136
|
-
- grammars/relaton-iec.rng
|
|
137
131
|
- lib/relaton/iec.rb
|
|
138
132
|
- lib/relaton/iec/bibliography.rb
|
|
139
133
|
- lib/relaton/iec/data_fetcher.rb
|
|
@@ -167,7 +161,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
167
161
|
requirements:
|
|
168
162
|
- - ">="
|
|
169
163
|
- !ruby/object:Gem::Version
|
|
170
|
-
version: 3.
|
|
164
|
+
version: 3.3.0
|
|
171
165
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
172
166
|
requirements:
|
|
173
167
|
- - ">="
|
data/.rubocop.yml
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
# This project follows the Ribose OSS style guide.
|
|
2
|
-
# https://github.com/riboseinc/oss-guides
|
|
3
|
-
# All project-specific additions and overrides should be specified in this file.
|
|
4
|
-
|
|
5
|
-
require: rubocop-rails
|
|
6
|
-
|
|
7
|
-
inherit_from:
|
|
8
|
-
- https://raw.githubusercontent.com/riboseinc/oss-guides/master/ci/rubocop.yml
|
|
9
|
-
AllCops:
|
|
10
|
-
TargetRubyVersion: 3.2
|
|
11
|
-
Rails:
|
|
12
|
-
Enabled: false
|