relaton-iev 1.1.6 → 1.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e0619c9879a41243d0c4f23f6b227065d3314052c4dc3c7c245ca04681d53f69
4
- data.tar.gz: 9494af2352544f18308a3d8d7a16fa524b64f9a580d44f902f5d9735f471ce4e
3
+ metadata.gz: 1f3f4d42e438585fbccf5e30196bb68a97a7efccbf9227dae9ff6b7f8a964d3a
4
+ data.tar.gz: e7dc5fccece8b42d5711a6dc0385ad0e3761842d01b2ec7517f2331cbccfb802
5
5
  SHA512:
6
- metadata.gz: 901939408553d30e4bca8fac9e719b2413f4edbcc0433dcc5701044d09dacb5e47f781b8147a91ee5b003bb702913eb15521f777722d9ebddd1436daba15e1ab
7
- data.tar.gz: 83cd32add7eb3ded410f2d5e3caed88e18b04fe8a42f02b7e624fd508a46ec17ba3f9071932a9adc563e222148271a193f1caa8d772e739d71f6da47706dc25f
6
+ metadata.gz: c3838e00b839100bb60c1292fe555edad2f4301818edcde68b8641427d670a18c6279150e754e0e9ff3f6bcff7521f93e755c39e837ca26384a9be55ab2bbc52
7
+ data.tar.gz: fed80996029f019cd9eb211aceaf6f0df53326f0e581ba8d65dcf6028be34811138c51e79e8fc35f16069a1ec6440a31a44436d483ff380a6d840f4ce5e1de18
@@ -10,4 +10,4 @@ on:
10
10
 
11
11
  jobs:
12
12
  rake:
13
- uses: relaton/support/.github/workflows/rake.yml@master
13
+ uses: relaton/support/.github/workflows/rake.yml@main
@@ -7,15 +7,17 @@ on:
7
7
  inputs:
8
8
  next_version:
9
9
  description: |
10
- Next release version. Possible values: x.y.z, major, minor, patch or pre|rc|etc
10
+ Next release version. Possible values: x.y.z, major, minor, patch (or pre|rc|etc).
11
+ Also, you can pass 'skip' to skip 'git tag' and do 'gem push' for the current version
11
12
  required: true
12
13
  default: 'skip'
13
- push:
14
- tags: [ v* ]
14
+ repository_dispatch:
15
+ types: [ do-release ]
16
+
15
17
 
16
18
  jobs:
17
19
  release:
18
- uses: relaton/support/.github/workflows/release.yml@master
20
+ uses: relaton/support/.github/workflows/release.yml@main
19
21
  with:
20
22
  next_version: ${{ github.event.inputs.next_version }}
21
23
  secrets:
@@ -1,3 +1,3 @@
1
1
  module RelatonIev
2
- VERSION = "1.1.6".freeze
2
+ VERSION = "1.2.1".freeze
3
3
  end
data/lib/relaton_iev.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require "relaton"
2
2
  require "relaton_iev/version"
3
3
  require "htmlentities"
4
+ require "uuidtools"
4
5
 
5
6
  module RelatonIev
6
7
  class Error < StandardError; end
@@ -21,9 +22,8 @@ module RelatonIev
21
22
  def links_iev2iec60050part(xmldoc)
22
23
  parts = Set.new
23
24
  xmldoc.xpath(IEVPATH).each do |x|
24
- m = x&.at(".//locality[@type = 'clause']/referenceFrom")&.text
25
+ m = x.at(".//locality[@type = 'clause']/referenceFrom")&.text
25
26
  &.sub(/^(\d+).*$/, "\\1") or next
26
-
27
27
  parts << m
28
28
  x["citeas"] = @c.decode(x["citeas"]).sub(/60050/, "60050-#{m}")
29
29
  x["bibitemid"] = "IEC60050-#{m}"
@@ -40,24 +40,36 @@ module RelatonIev
40
40
  # @param bibdb [Relaton::Db, NilClass]
41
41
  # @return [Nokogiri::XML::Element]
42
42
  def refs_iev2iec60050part(xml, parts, bibdb = nil)
43
+ bibdb or return ""
43
44
  new_iev = ""
44
45
  parts.sort.each do |p|
45
- hit = bibdb&.fetch("IEC 60050-#{p}", nil, keep_year: true) or next
46
+ hit = get_iev_part(bibdb, p) or next
46
47
  new_iev += refs_iev2iec60050part1(xml, p, hit)
47
- xml.xpath(IEVPATH.gsub(/60050/, "60050-#{p}")).each do |x|
48
- x["citeas"] = @c.decode(x["citeas"])
49
- .sub(/:2011$/, ":#{hit.date[0].on(:year)}")
50
- end
48
+ update_iev_refs(xml, p, hit)
51
49
  end
52
50
  new_iev
53
51
  end
54
52
 
53
+ def get_iev_part(bibdb, part)
54
+ unless hit = bibdb.fetch("IEC 60050-#{part}", nil, keep_year: true)
55
+ @err << "The IEV document 60050-#{part} that has been cited " \
56
+ "does not exist"
57
+ end
58
+ hit
59
+ end
60
+
61
+ def update_iev_refs(xml, part, hit)
62
+ xml.xpath(IEVPATH.gsub(/60050/, "60050-#{part}")).each do |x|
63
+ x["citeas"] = @c.decode(x["citeas"])
64
+ .sub(/:2011$/, ":#{hit.date[0].on(:year)}")
65
+ end
66
+ end
67
+
55
68
  def refs_iev2iec60050part1(xmldoc, part, hit)
56
69
  date = hit.date[0].on(:year)
57
- return "" if already_contains_ref(xmldoc, part, date)
58
-
70
+ already_contains_ref(xmldoc, part, date) and return ""
59
71
  id = xmldoc.at("//bibitem[@id = 'IEC60050-#{part}']") ? "-1" : ""
60
- hit.to_xml.sub(/ id="[^"]+"/, %{ id="IEC60050-#{part}#{id}"})
72
+ hit.to_xml.sub(/ id="[^"]+"/, %{ id="_#{UUIDTools::UUID.random_create}" anchor="IEC60050-#{part}#{id}"})
61
73
  end
62
74
 
63
75
  def already_contains_ref(xmldoc, part, date)
@@ -68,12 +80,14 @@ module RelatonIev
68
80
 
69
81
  # @param xmldoc [Nokogiri::XML::Document]
70
82
  # @param bibdb [Relaton::Db, NilClass]
71
- # @return [Nokogiri::XML::Element]
83
+ # @return [Nokogiri::XML::Element], [String]
72
84
  def iev_cleanup(xmldoc, bibdb = nil)
73
85
  @c = HTMLEntities.new
74
- iev = xmldoc.at("//bibitem[docidentifier = 'IEC 60050:2011']") || return
86
+ @err = []
87
+ iev = xmldoc.at("//bibitem[docidentifier = 'IEC 60050:2011']") or
88
+ return [nil, @err]
75
89
  parts = links_iev2iec60050part(xmldoc)
76
- iev.replace(refs_iev2iec60050part(xmldoc, parts, bibdb))
90
+ [iev.replace(refs_iev2iec60050part(xmldoc, parts, bibdb)), @err]
77
91
  end
78
92
  end
79
93
  end
data/relaton_iev.gemspec CHANGED
@@ -33,6 +33,7 @@ Gem::Specification.new do |spec|
33
33
  spec.add_development_dependency "webmock"
34
34
 
35
35
  spec.add_dependency "htmlentities", "~> 4.3.4"
36
- spec.add_dependency "nokogiri", ">= 1.14.0"
37
- spec.add_dependency "relaton", ">= 1.6"
36
+ spec.add_dependency "nokogiri", ">= 1.13.0"
37
+ spec.add_dependency "relaton", ">= 1.15"
38
+ spec.add_dependency "uuidtools"
38
39
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-iev
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.6
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-04-10 00:00:00.000000000 Z
11
+ date: 2025-05-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry-byebug
@@ -128,28 +128,42 @@ dependencies:
128
128
  requirements:
129
129
  - - ">="
130
130
  - !ruby/object:Gem::Version
131
- version: 1.14.0
131
+ version: 1.13.0
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
- version: 1.14.0
138
+ version: 1.13.0
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: relaton
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ">="
144
144
  - !ruby/object:Gem::Version
145
- version: '1.6'
145
+ version: '1.15'
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
- version: '1.6'
152
+ version: '1.15'
153
+ - !ruby/object:Gem::Dependency
154
+ name: uuidtools
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
153
167
  description: 'RelatonIev: manipulates IEV references to IEC 60050.'
154
168
  email:
155
169
  - open.source@ribose.com
@@ -176,7 +190,7 @@ homepage: https://github.com/metanorma/relaton-iev
176
190
  licenses:
177
191
  - MIT
178
192
  metadata: {}
179
- post_install_message:
193
+ post_install_message:
180
194
  rdoc_options: []
181
195
  require_paths:
182
196
  - lib
@@ -191,8 +205,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
191
205
  - !ruby/object:Gem::Version
192
206
  version: '0'
193
207
  requirements: []
194
- rubygems_version: 3.1.6
195
- signing_key:
208
+ rubygems_version: 3.5.22
209
+ signing_key:
196
210
  specification_version: 4
197
211
  summary: 'RelatonIev: manipulates IEV references to IEC 60050.'
198
212
  test_files: []