relaton-iec 1.14.4 → 1.16.0

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: 7830e8be677e5014f3d20ad93e21a603ca91e9e5e091ec479cafb60819ca550d
4
- data.tar.gz: 4689ce387b5c991f4d8ca0461c4eeb37a5f76df03e979d715d0c574c12602305
3
+ metadata.gz: 407e0b683664d9b9e59bcbf2dadbbcc3b3289df9d16354cf7704b27529169020
4
+ data.tar.gz: dc55bf895de7f08f93f9430c348d562903567df12f5e93c1a7916082c4742ed5
5
5
  SHA512:
6
- metadata.gz: 5e1d2ad522df02eb85df1b8e84f24d44e7de3e476019ddcc8b65db5b3105b699b6213bef67e6e543039c48ed62fb6806a434b1feb35618059cdc9aa0a78009f4
7
- data.tar.gz: 97963e6ce622bf1c6ee27847e935339d4582689658cb31f6d875d11aa8049680b1237e73bfa8c1f52ccdbcd03bc218e5b79ffd27afed7524a6e9461ac2d5bf72
6
+ metadata.gz: f4d1c322f0fd0d0f4a5d21c6cebd43f1f8556d34cd096f547da2c16e8f4a437294be845812b35fa1880c0d790092ae13926bd65fbb9d6a24d6c53263417fb3b4
7
+ data.tar.gz: ff11597b0da5425a9c402d2da4926200703636b7d88a305299e6d59897e0835f1f68ca2b65f01f94e8f6ff4950e726957bd52ce5624ec712ab67c8f2a794e229
@@ -7,7 +7,8 @@ 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
14
  repository_dispatch:
data/.gitignore CHANGED
@@ -7,6 +7,7 @@
7
7
  /spec/reports/
8
8
  /tmp/
9
9
  .vscode/
10
+ /vendor/
10
11
  .rubocop-https---raw-githubusercontent-com-riboseinc-oss-guides-master-ci-rubocop-yml
11
12
 
12
13
  # rspec failure tracking
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
@@ -5,7 +5,10 @@ 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
+ gem "equivalent-xml", "~> 0.6"
8
9
  gem "pry-byebug"
10
+ gem "rake", "~> 13.0"
11
+ gem "rspec", "~> 3.0"
9
12
  gem "ruby-jing"
10
13
  gem "simplecov"
11
14
  gem "vcr"
data/grammars/biblio.rng CHANGED
@@ -1283,7 +1283,7 @@
1283
1283
  <value>mergedInto</value>
1284
1284
  <value>splits</value>
1285
1285
  <value>splitInto</value>
1286
- <value>instance</value>
1286
+ <value>instanceOf</value>
1287
1287
  <value>hasInstance</value>
1288
1288
  <value>exemplarOf</value>
1289
1289
  <value>hasExemplar</value>
@@ -238,7 +238,7 @@ module RelatonIec
238
238
  when "TR" then "technical-report"
239
239
  when "TS" then "technical-specification"
240
240
  when "PAS" then "publicly-available-specification"
241
- when "SRD" then "system-reference-delivrabble"
241
+ when "SRD" then "system-reference-deliverable"
242
242
  else @pub["stdType"].downcase
243
243
  end
244
244
  end
@@ -6,7 +6,7 @@ module RelatonIec
6
6
  guide industry-technical-agreement system-reference-deliverable
7
7
  ].freeze
8
8
 
9
- DOCSUBTYPES = %w[specification method-of-test vocabulary code-of-practice].freeze
9
+ SUBDOCTYPES = %w[specification method-of-test vocabulary code-of-practice].freeze
10
10
 
11
11
  FUNCTION = %w[emc safety enviroment quality-assurance].freeze
12
12
 
@@ -39,9 +39,9 @@ module RelatonIec
39
39
  end
40
40
  if args[:updates_document_type] &&
41
41
  !DOCTYPES.include?(args[:updates_document_type])
42
- warn "[relaton-iec] WARNING: invalid updates_document_type "\
42
+ warn "[relaton-iec] WARNING: invalid updates_document_type " \
43
43
  "\"#{args[:updates_document_type]}\""
44
- warn "[relaton-iec] allowed updates_document_type values are: "\
44
+ warn "[relaton-iec] allowed updates_document_type values are: " \
45
45
  "#{DOCTYPES.join(', ')}"
46
46
  end
47
47
  @function = args.delete :function
@@ -41,34 +41,97 @@ module RelatonIec
41
41
 
42
42
  private
43
43
 
44
+ # @param pubid [String]
45
+ # @param year [String]
46
+ # @param missed_years [Array<String>]
47
+ def warn_missing_years(pubid, year, missed_years)
48
+ id = ref_with_year(pubid, year)
49
+ warn "[relaton-iec] (\"#{id}\") TIP: " \
50
+ "No match for edition year #{year}, " \
51
+ "but matches exist for #{missed_years.uniq.join(', ')}."
52
+ end
53
+
44
54
  # @param code [String]
45
55
  # @param year [String]
46
56
  # @param missed_years [Array<String>]
47
57
  def fetch_ref_err(code, year, missed_years) # rubocop:disable Metrics/MethodLength
48
- id = year ? "#{code}:#{year}" : code
49
- warn "[relaton-iec] WARNING: no match found online for #{id}. " \
50
- "The code must be exactly like it is on the standards website."
51
- unless missed_years.empty?
52
- warn "[relaton-iec] (There was no match for #{year}, though there " \
53
- "were matches found for #{missed_years.join(', ')}.)"
58
+ id = ref_with_year(code, year)
59
+
60
+ warn "[relaton-iec] (\"#{id}\") " \
61
+ "Not found. "\
62
+ "The identifier must be exactly as shown on the IEC Webstore."
63
+
64
+ if year && missed_years.any?
65
+ warn_missing_years(code, year, missed_years)
54
66
  end
55
- if /\d-\d/.match? code
56
- warn "[relaton-iec] The provided document part may not exist, or " \
57
- "the document may no longer be published in parts."
67
+
68
+ # TODO: change this to pubid-iec
69
+ has_part = /\d-\d/.match?(code)
70
+ if has_part
71
+ warn "[relaton-iec] (\"#{id}\") TIP: " \
72
+ "If it cannot be found, the document may no longer be published in parts."
73
+
58
74
  else
59
- warn "[relaton-iec] If you wanted to cite all document parts for " \
60
- "the reference, use \"#{code} (all parts)\".\nIf the document " \
61
- "is not a standard, use its document type abbreviation (TS, " \
62
- "TR, PAS, Guide)."
75
+ warn "[relaton-iec] (\"#{id}\") TIP: " \
76
+ "If you wish to cite all document parts for the reference, " \
77
+ "use (\"#{code} (all parts)\")."
78
+ end
79
+
80
+ # TODO: streamline after integration with pubid-iec
81
+ doctypes = %w(TS TR PAS SRD TEC STTR WP Guide OD CS CA)
82
+ selected_doctype = doctypes.select do |t|
83
+ code.include?("#{t} ")
84
+ end
85
+ unless selected_doctype
86
+ warn "[relaton-iec] (\"#{id}\") TIP: " \
87
+ "If the document is not an International Standard, use its " \
88
+ "deliverable type abbreviation (#{doctypes.join(", ")})."
63
89
  end
90
+
64
91
  nil
65
92
  end
66
93
 
67
94
  # @param ref [String]
95
+ # @param year [String]
96
+ # @return [String]
97
+ def ref_with_year(ref, year)
98
+ year ? [ref, year].join(":") : ref
99
+ end
100
+
101
+ # @param ref [String]
102
+ # @param year [String, nil]
103
+ # @return [RelatonIec::HitCollection]
104
+ # def search_filter(ref, year) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
105
+ # rp1 = ref_parts ref.upcase
106
+ # year ||= rp1[:year]
107
+ # corr = rp1[:corr]&.sub " ", ""
108
+ # warn "[relaton-iec] (\"#{ref_with_year(ref, year)}\") Fetching from IEC..."
109
+ # result = search(rp1[:code], year)
110
+ # code = result.text.dup
111
+ # if result.empty? && /(?<=\d-)(?<part>[\w-]+)/ =~ rp1[:code]
112
+ # # try to search packaged standard
113
+ # result = search rp1[:code], year, part
114
+ # pkg_std = result.any?
115
+ # end
116
+ # result = search rp1[:code] if result.empty?
117
+ # if pkg_std
118
+ # code.sub!(/(?<=\d-)#{part}/, part[0])
119
+ # else
120
+ # code.sub!(/-[-\d]+/, "")
121
+ # end
122
+ # result.select do |i|
123
+ # rp2 = ref_parts i.hit[:code]
124
+ # code2 = if pkg_std
125
+ # rp2[:code].sub(/(?<=\d-\d)\d+/, "")
126
+ # else
127
+ # rp2[:code].sub(/-[-\d]+/, "")
128
+ # end
129
+ # code == code2 && rp1[:bundle] == rp2[:bundle] && corr == rp2[:corr]
130
+ # end
68
131
  # @return [RelatonIec::HitCollection]
69
- def search_filter(ref)
132
+ def search_filter(ref, year)
70
133
  code = ref.split(":").first
71
- warn "[relaton-iec] (\"#{ref}\") fetching..."
134
+ warn "[relaton-iec] (\"#{ref_with_year(ref, year)}\") Fetching from IEC..."
72
135
  search(code)
73
136
  end
74
137
 
@@ -184,21 +247,29 @@ module RelatonIec
184
247
  # @param year [String, nil]
185
248
  # @param opts [Hash]
186
249
  # @return [RelatonIec::IecBibliographicItem, nil]
187
- def iecbib_get(ref, year, opts) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
188
- result = search_filter(ref) || return
189
- ret = results_filter(result, ref, year, opts)
190
- if ret[:ret]
191
- if ret[:missed_parts] && !opts[:all_parts]
192
- warn "[relaton-iec] WARNING: #{ref} found as #{ret[:ret].docidentifier.first.id} " \
193
- "but also contain parts. If you wanted to cite all document " \
194
- "parts for the reference, use \"#{ref} (all parts)\""
195
- else
196
- warn "[relaton-iec] (\"#{ref}\") found #{ret[:ret].docidentifier.first.id}"
197
- end
198
- ret[:ret]
250
+ def iecbib_get(code, year, opts) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
251
+ result = search_filter(code, year) || return
252
+ ret = results_filter(result, code, year, opts)
253
+
254
+ return fetch_ref_err(code, year, ret[:years]) unless ret[:ret]
255
+
256
+ id = ref_with_year(code, year)
257
+ docid = ret[:ret].docidentifier.first.id
258
+
259
+ if id == docid
260
+ warn "[relaton-iec] (\"#{id}\") Found exact match."
199
261
  else
200
- fetch_ref_err(ref, year, ret[:years])
262
+ warn "[relaton-iec] (\"#{id}\") Found (\"#{docid}\")."
201
263
  end
264
+
265
+ if ret[:missed_parts]
266
+ warn "[relaton-iec] (\"#{id}\") TIP: " \
267
+ "\"#{code}\" also contains other parts, " \
268
+ "if you want to cite all parts, use "\
269
+ "(\"#{code} (all parts)\")."
270
+ end
271
+
272
+ ret[:ret]
202
273
  end
203
274
  end
204
275
  end
@@ -48,7 +48,7 @@ module RelatonIec
48
48
  #
49
49
  # Last change date
50
50
  #
51
- # @return [String] <description>
51
+ # @return [String, nil] last change date or nil if index is empty
52
52
  #
53
53
  def last_change
54
54
  return unless @index.any?
@@ -1,3 +1,3 @@
1
1
  module RelatonIec
2
- VERSION = "1.14.4".freeze
2
+ VERSION = "1.16.0".freeze
3
3
  end
@@ -27,7 +27,7 @@ module RelatonIec
27
27
  # @param item_hash [Hash]
28
28
  # @return [RelatonIec::IecBibliographicItem]
29
29
  def bib_item(item_hash)
30
- IecBibliographicItem.new **item_hash
30
+ IecBibliographicItem.new(**item_hash)
31
31
  end
32
32
  end
33
33
  end
data/relaton_iec.gemspec CHANGED
@@ -21,14 +21,10 @@ 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(">= 2.5.0")
25
-
26
- spec.add_development_dependency "equivalent-xml", "~> 0.6"
27
- spec.add_development_dependency "rake", "~> 13.0"
28
- spec.add_development_dependency "rspec", "~> 3.0"
24
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
29
25
 
30
26
  spec.add_dependency "addressable"
31
27
  spec.add_dependency "relaton-index", "~> 0.2.0"
32
- spec.add_dependency "relaton-iso-bib", "~> 1.14.0"
28
+ spec.add_dependency "relaton-iso-bib", "~> 1.16.0"
33
29
  spec.add_dependency "rubyzip"
34
30
  end
metadata CHANGED
@@ -1,57 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-iec
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.14.4
4
+ version: 1.16.0
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-05-16 00:00:00.000000000 Z
11
+ date: 2023-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: equivalent-xml
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '0.6'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '0.6'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '13.0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '13.0'
41
- - !ruby/object:Gem::Dependency
42
- name: rspec
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '3.0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '3.0'
55
13
  - !ruby/object:Gem::Dependency
56
14
  name: addressable
57
15
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +44,14 @@ dependencies:
86
44
  requirements:
87
45
  - - "~>"
88
46
  - !ruby/object:Gem::Version
89
- version: 1.14.0
47
+ version: 1.16.0
90
48
  type: :runtime
91
49
  prerelease: false
92
50
  version_requirements: !ruby/object:Gem::Requirement
93
51
  requirements:
94
52
  - - "~>"
95
53
  - !ruby/object:Gem::Version
96
- version: 1.14.0
54
+ version: 1.16.0
97
55
  - !ruby/object:Gem::Dependency
98
56
  name: rubyzip
99
57
  requirement: !ruby/object:Gem::Requirement
@@ -177,7 +135,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
177
135
  requirements:
178
136
  - - ">="
179
137
  - !ruby/object:Gem::Version
180
- version: 2.5.0
138
+ version: 2.7.0
181
139
  required_rubygems_version: !ruby/object:Gem::Requirement
182
140
  requirements:
183
141
  - - ">="