relaton-iec 1.14.4 → 1.16.0

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: 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
  - - ">="