relaton-iec 1.16.3 → 1.17.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 +4 -4
- data/grammars/basicdoc.rng +18 -2
- data/grammars/biblio.rng +1 -0
- data/lib/relaton_iec/data_parser.rb +10 -8
- data/lib/relaton_iec/document_type.rb +20 -0
- data/lib/relaton_iec/hash_converter.rb +11 -10
- data/lib/relaton_iec/hit_collection.rb +1 -1
- data/lib/relaton_iec/iec_bibliographic_item.rb +3 -9
- data/lib/relaton_iec/iec_bibliography.rb +14 -9
- data/lib/relaton_iec/version.rb +1 -1
- data/lib/relaton_iec.rb +1 -0
- data/relaton_iec.gemspec +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2781711712e741e20c857da5cbd0c7f7f62eaf85fc671c016899beeb0e817af8
|
4
|
+
data.tar.gz: 13e84464bcaa91c46b9ce1565dc2b2a4ce061f525cb5daaa39fcbe9fa4b32fe0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7bd673ddef434b3b2e5eadff79a8412cc9134ccae892c13a318777cff1658d07172bedf6c1c5644b88c89808a2de40a0b025b98777d2d517bf82ca13113e2e26
|
7
|
+
data.tar.gz: d26ed19cacb261f11de2863d244db709fe0e118251535460fdfeb8a1bfbeeb3e9ac97686f5664db45b79d1440e7292be0b8bb94512b684ea666149e63f31b391
|
data/grammars/basicdoc.rng
CHANGED
@@ -346,6 +346,8 @@
|
|
346
346
|
<ref name="keyword"/>
|
347
347
|
<ref name="xref"/>
|
348
348
|
<ref name="hyperlink"/>
|
349
|
+
<ref name="index"/>
|
350
|
+
<ref name="index-xref"/>
|
349
351
|
</choice>
|
350
352
|
</oneOrMore>
|
351
353
|
</element>
|
@@ -623,6 +625,8 @@
|
|
623
625
|
<ref name="eref"/>
|
624
626
|
<ref name="xref"/>
|
625
627
|
<ref name="hyperlink"/>
|
628
|
+
<ref name="index"/>
|
629
|
+
<ref name="index-xref"/>
|
626
630
|
</choice>
|
627
631
|
</zeroOrMore>
|
628
632
|
</element>
|
@@ -636,6 +640,8 @@
|
|
636
640
|
<ref name="eref"/>
|
637
641
|
<ref name="xref"/>
|
638
642
|
<ref name="hyperlink"/>
|
643
|
+
<ref name="index"/>
|
644
|
+
<ref name="index-xref"/>
|
639
645
|
</choice>
|
640
646
|
</zeroOrMore>
|
641
647
|
</element>
|
@@ -648,6 +654,8 @@
|
|
648
654
|
<ref name="eref"/>
|
649
655
|
<ref name="xref"/>
|
650
656
|
<ref name="hyperlink"/>
|
657
|
+
<ref name="index"/>
|
658
|
+
<ref name="index-xref"/>
|
651
659
|
</choice>
|
652
660
|
</zeroOrMore>
|
653
661
|
</element>
|
@@ -655,7 +663,11 @@
|
|
655
663
|
<define name="keyword">
|
656
664
|
<element name="keyword">
|
657
665
|
<zeroOrMore>
|
658
|
-
<
|
666
|
+
<choice>
|
667
|
+
<ref name="PureTextElement"/>
|
668
|
+
<ref name="index"/>
|
669
|
+
<ref name="index-xref"/>
|
670
|
+
</choice>
|
659
671
|
</zeroOrMore>
|
660
672
|
</element>
|
661
673
|
</define>
|
@@ -676,7 +688,11 @@
|
|
676
688
|
<define name="strike">
|
677
689
|
<element name="strike">
|
678
690
|
<zeroOrMore>
|
679
|
-
<
|
691
|
+
<choice>
|
692
|
+
<ref name="PureTextElement"/>
|
693
|
+
<ref name="index"/>
|
694
|
+
<ref name="index-xref"/>
|
695
|
+
</choice>
|
680
696
|
</zeroOrMore>
|
681
697
|
</element>
|
682
698
|
</define>
|
data/grammars/biblio.rng
CHANGED
@@ -15,6 +15,14 @@ module RelatonIec
|
|
15
15
|
"CISPR" => ["International special committee on radio interference", "www.iec.ch"],
|
16
16
|
}.freeze
|
17
17
|
|
18
|
+
DOCTYPES = {
|
19
|
+
"IS" => "international-standard",
|
20
|
+
"TR" => "technical-report",
|
21
|
+
"TS" => "technical-specification",
|
22
|
+
"PAS" => "publicly-available-specification",
|
23
|
+
"SRD" => "system-reference-deliverable",
|
24
|
+
}
|
25
|
+
|
18
26
|
#
|
19
27
|
# Initialize new instance.
|
20
28
|
#
|
@@ -233,14 +241,8 @@ module RelatonIec
|
|
233
241
|
# @return [String] document type
|
234
242
|
#
|
235
243
|
def doctype
|
236
|
-
|
237
|
-
|
238
|
-
when "TR" then "technical-report"
|
239
|
-
when "TS" then "technical-specification"
|
240
|
-
when "PAS" then "publicly-available-specification"
|
241
|
-
when "SRD" then "system-reference-deliverable"
|
242
|
-
else @pub["stdType"].downcase
|
243
|
-
end
|
244
|
+
type = DOCTYPES[@pub["stdType"]] || @pub["stdType"].downcase
|
245
|
+
DocumentType.new type: type
|
244
246
|
end
|
245
247
|
|
246
248
|
#
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module RelatonIec
|
2
|
+
class DocumentType < RelatonBib::DocumentType
|
3
|
+
DOCTYPES = %w[
|
4
|
+
international-standard technical-specification technical-report
|
5
|
+
publicly-available-specification international-workshop-agreement
|
6
|
+
guide industry-technical-agreement system-reference-deliverable
|
7
|
+
].freeze
|
8
|
+
|
9
|
+
def initialize(type:, abbreviation: nil)
|
10
|
+
check_type type
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
def check_type(type)
|
15
|
+
unless DOCTYPES.include? type
|
16
|
+
Util.warn "WARNING: Invalid doctype: `#{type}`"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -1,14 +1,15 @@
|
|
1
1
|
module RelatonIec
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
2
|
+
module HashConverter
|
3
|
+
include RelatonIsoBib::HashConverter
|
4
|
+
extend self
|
5
|
+
|
6
|
+
#
|
7
|
+
# Ovverides superclass's method
|
8
|
+
#
|
9
|
+
# @param item [Hash]
|
10
|
+
# @retirn [RelatonIec::IecBibliographicItem]
|
11
|
+
def bib_item(item)
|
12
|
+
IecBibliographicItem.new(**item)
|
12
13
|
end
|
13
14
|
end
|
14
15
|
end
|
@@ -1,11 +1,5 @@
|
|
1
1
|
module RelatonIec
|
2
2
|
class IecBibliographicItem < RelatonIsoBib::IsoBibliographicItem
|
3
|
-
DOCTYPES = %w[
|
4
|
-
international-standard technical-specification technical-report
|
5
|
-
publicly-available-specification international-workshop-agreement
|
6
|
-
guide industry-technical-agreement system-reference-deliverable
|
7
|
-
].freeze
|
8
|
-
|
9
3
|
SUBDOCTYPES = %w[specification method-of-test vocabulary code-of-practice].freeze
|
10
4
|
|
11
5
|
FUNCTION = %w[emc safety enviroment quality-assurance].freeze
|
@@ -38,9 +32,9 @@ module RelatonIec
|
|
38
32
|
Util.warn "Allowed function values are: `#{FUNCTION.join('`, `')}`"
|
39
33
|
end
|
40
34
|
if args[:updates_document_type] &&
|
41
|
-
!DOCTYPES.include?(args[:updates_document_type])
|
35
|
+
!DocumentType::DOCTYPES.include?(args[:updates_document_type])
|
42
36
|
Util.warn "WARNING: Invalid updates_document_type: `#{args[:updates_document_type]}`"
|
43
|
-
Util.warn "Allowed updates_document_type values are: `#{DOCTYPES.join('`, `')}`"
|
37
|
+
Util.warn "Allowed updates_document_type values are: `#{DocumentType::DOCTYPES.join('`, `')}`"
|
44
38
|
end
|
45
39
|
@function = args.delete :function
|
46
40
|
@updates_document_type = args.delete :updates_document_type
|
@@ -77,7 +71,7 @@ module RelatonIec
|
|
77
71
|
super(**opts) do |b|
|
78
72
|
if opts[:bibdata]
|
79
73
|
ext = b.ext do
|
80
|
-
|
74
|
+
doctype&.to_xml b
|
81
75
|
b.horizontal horizontal unless horizontal.nil?
|
82
76
|
b.function function if function
|
83
77
|
editorialgroup&.to_xml b
|
@@ -177,12 +177,12 @@ module RelatonIec
|
|
177
177
|
# has a title (amendments do not).
|
178
178
|
# If no match, returns any years which caused mismatch, for error reporting
|
179
179
|
def results_filter(result, ref, year, opts)
|
180
|
-
r_code, r_year, r_amd = code_year ref
|
180
|
+
r_code, r_year, r_amd, r_consv = code_year ref
|
181
181
|
r_year ||= year
|
182
182
|
if opts[:all_parts]
|
183
183
|
ret = result.to_all_parts(r_year)
|
184
184
|
else
|
185
|
-
ret, missed_parts = match_result(result, r_code, r_year, r_amd)
|
185
|
+
ret, missed_parts = match_result(result, r_code, r_year, r_amd, r_consv)
|
186
186
|
end
|
187
187
|
{ ret: ret, years: missed_years(result, r_year), missed_parts: missed_parts }
|
188
188
|
end
|
@@ -198,23 +198,27 @@ module RelatonIec
|
|
198
198
|
# @param [String] code code of the document
|
199
199
|
# @param [String] year year of the document
|
200
200
|
# @param [String] amd amendment of the document
|
201
|
+
# @param [String] consv consolidated version of the document
|
201
202
|
#
|
202
203
|
# @return [Array<RelatonIec::IecBibliographicItem, Array, nil>] result, missed parts
|
203
204
|
#
|
204
|
-
def match_result(result, code, year, amd) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity
|
205
|
+
def match_result(result, code, year, amd, consv) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity
|
205
206
|
missed_parts = false
|
206
|
-
|
207
|
-
h_codes, h_years, h_amds = codes_years h.hit[:code]
|
207
|
+
res = result.select do |h|
|
208
|
+
h_codes, h_years, h_amds, h_consv = codes_years h.hit[:code]
|
208
209
|
match_code = h_codes.include? code
|
209
210
|
match_year = h_years.include?(year)
|
210
211
|
missed_parts ||= !match_code
|
211
|
-
match_code && (!year || match_year) && match_amd(amd, h_amds)
|
212
|
-
end
|
212
|
+
match_code && (!year || match_year) && match_amd(amd, h_amds) && h_consv.first == consv
|
213
|
+
end
|
214
|
+
hit = year ? res.first : res.max_by { |h| code_year(h.hit[:code])[1].to_i }
|
215
|
+
ret = hit&.fetch
|
213
216
|
[ret, missed_parts]
|
214
217
|
end
|
215
218
|
|
216
219
|
def match_amd(amd, h_amds)
|
217
|
-
(!amd && h_amds.empty?) || h_amds.include?(amd)
|
220
|
+
# (!amd && h_amds.empty?) || h_amds.include?(amd)
|
221
|
+
h_amds.first == amd
|
218
222
|
end
|
219
223
|
|
220
224
|
# @param ref [String]
|
@@ -225,8 +229,9 @@ module RelatonIec
|
|
225
229
|
^(?<code>\S+\s[^:/]+)
|
226
230
|
(?::(?<year>\d{4}))?
|
227
231
|
(?:/(?<amd>\w+)(?::\d{4})?)?
|
232
|
+
(?:\+(?<consv>\w+)(?::\d{4})?)?
|
228
233
|
}x =~ ref
|
229
|
-
[code, year, amd&.upcase]
|
234
|
+
[code, year, amd&.upcase, consv&.upcase]
|
230
235
|
end
|
231
236
|
|
232
237
|
# @param ref [String]
|
data/lib/relaton_iec/version.rb
CHANGED
data/lib/relaton_iec.rb
CHANGED
@@ -9,6 +9,7 @@ require "relaton_iec/hit"
|
|
9
9
|
require "relaton_iec/version"
|
10
10
|
require "relaton_iec/config"
|
11
11
|
require "relaton_iec/util"
|
12
|
+
require "relaton_iec/document_type"
|
12
13
|
require "relaton_iec/iec_bibliography"
|
13
14
|
require "relaton_iec/iec_bibliographic_item"
|
14
15
|
require "relaton_iec/xml_parser"
|
data/relaton_iec.gemspec
CHANGED
@@ -25,6 +25,6 @@ Gem::Specification.new do |spec|
|
|
25
25
|
|
26
26
|
spec.add_dependency "addressable"
|
27
27
|
spec.add_dependency "relaton-index", "~> 0.2.0"
|
28
|
-
spec.add_dependency "relaton-iso-bib", "~> 1.
|
28
|
+
spec.add_dependency "relaton-iso-bib", "~> 1.17.0"
|
29
29
|
spec.add_dependency "rubyzip"
|
30
30
|
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: 1.
|
4
|
+
version: 1.17.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-11-
|
11
|
+
date: 2023-11-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
47
|
+
version: 1.17.0
|
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: 1.
|
54
|
+
version: 1.17.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rubyzip
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -112,6 +112,7 @@ files:
|
|
112
112
|
- lib/relaton_iec/config.rb
|
113
113
|
- lib/relaton_iec/data_fetcher.rb
|
114
114
|
- lib/relaton_iec/data_parser.rb
|
115
|
+
- lib/relaton_iec/document_type.rb
|
115
116
|
- lib/relaton_iec/hash_converter.rb
|
116
117
|
- lib/relaton_iec/hit.rb
|
117
118
|
- lib/relaton_iec/hit_collection.rb
|