relaton-iec 1.11.3 → 1.11.4

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: 5b06795307ed2232e78986c9ff0bfcd0012a326c9938373842791492d558a344
4
- data.tar.gz: f88a3d9ceed53b9b31974ac994479a2904c9be82e57a03728b7730c0991655fb
3
+ metadata.gz: 3693023d890f701035d9decbf0d0866909163bfaebd758e8e7c8e86072815731
4
+ data.tar.gz: 3aedcf623406e1e23311a7eaddd47b9497bd8f9c575e62904f03d4e7b3062224
5
5
  SHA512:
6
- metadata.gz: 49e1c8c651adf7df75a9befc1b75bf82d1de7194707069e20e50997656e98ac121f3526dda355fbb95593beccdcd4ce6aa1d0a9dfd220b9186871fce62d4624b
7
- data.tar.gz: ad92bc78b02e45959df21be7060777b4a60c7497e851a8218806c557d8bf0ccfd2bed6a95c672ebfb248ce38538cfa96119f58f59d645c57fa32a98525f44c90
6
+ metadata.gz: 9a9917fe56c8a33090ab809a13327cd754c238236e4c027fa0e1939bfb7fa9cb3c27c7708bf930df662bc1737ef36abfd4e00fe79bd56315d69d17073bc5d180
7
+ data.tar.gz: 4076a2815a8428db30e264ce3f2b6224103e4f93babd29913a1b363a1084c8196e8c77c328eb24aca62afd665274b451046e7424c7beda8803d38b921a97e5af
@@ -10,27 +10,4 @@ on:
10
10
 
11
11
  jobs:
12
12
  rake:
13
- name: Test on Ruby ${{ matrix.ruby }} ${{ matrix.os }}
14
- runs-on: ${{ matrix.os }}
15
- continue-on-error: ${{ matrix.experimental }}
16
- strategy:
17
- fail-fast: false
18
- matrix:
19
- ruby: [ '3.0', '2.7', '2.6', '2.5' ]
20
- os: [ ubuntu-latest, windows-latest, macos-latest ]
21
- experimental: [ false ]
22
- steps:
23
- - uses: actions/checkout@v2
24
- with:
25
- submodules: true
26
-
27
- # https://github.com/ruby-debug/debase/issues/89#issuecomment-686827382
28
- - if: matrix.os == 'macos-latest' && matrix.ruby == '2.5'
29
- run: echo BUNDLE_BUILD__DEBASE="--with-cflags=\"-Wno-error=implicit-function-declaration\"" >> $GITHUB_ENV
30
-
31
- - uses: ruby/setup-ruby@v1
32
- with:
33
- ruby-version: ${{ matrix.ruby }}
34
- bundler-cache: true
35
-
36
- - run: bundle exec rake
13
+ uses: relaton/support/.github/workflows/rake.yml@master
@@ -32,6 +32,7 @@ module RelatonIec
32
32
  parts.reject { |h| h.hit[:code] == hit.hit[:code] }.each do |hi|
33
33
  isobib = RelatonIec::IecBibliographicItem.new(
34
34
  formattedref: RelatonBib::FormattedRef.new(content: hi.hit[:code]),
35
+ docid: [RelatonBib::DocumentIdentifier.new(id: hi.hit[:code], type: "IEC", primary: true)],
35
36
  )
36
37
  all_parts_item.relation << RelatonBib::DocumentRelation.new(type: "partOf", bibitem: isobib)
37
38
  end
@@ -44,20 +45,34 @@ module RelatonIec
44
45
  # @param year [String, nil]
45
46
  # @return [Array<RelatonIec::Hit>]
46
47
  def hits(ref, year) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
47
- file = "../data/#{ref.sub(/^IEC\s/, '').gsub(' ', '_').upcase}.yaml"
48
- path = File.expand_path file, __dir__
49
- if File.exist? path
50
- hash = YAML.safe_load File.read(path, encoding: "utf-8")
51
- hit = Hit.new({ code: ref }, self)
52
- hit.fetch = IecBibliographicItem.from_hash hash
53
- return [hit]
48
+ if /61360-4\sDB|ISO[\s\/]IEC\sDIR/.match?(ref)
49
+ fetch_from_gh ref
50
+ else
51
+ from, to = nil
52
+ if year
53
+ from = Date.strptime year, "%Y"
54
+ to = from.next_year.prev_day
55
+ end
56
+ get_results ref, from, to
54
57
  end
55
- from, to = nil
56
- if year
57
- from = Date.strptime year, "%Y"
58
- to = from.next_year.prev_day
59
- end
60
- get_results ref, from, to
58
+ # file = "../data/#{ref.sub(/^IEC\s/, '').gsub(/[\s\/]/, '_').upcase}.yaml"
59
+ # path = File.expand_path file, __dir__
60
+ # if File.exist? path
61
+ # hash = YAML.safe_load File.read(path, encoding: "utf-8")
62
+ # hit = Hit.new({ code: ref }, self)
63
+ # hit.fetch = IecBibliographicItem.from_hash hash
64
+ # return [hit]
65
+ # end
66
+ end
67
+
68
+ def fetch_from_gh(ref)
69
+ file = ref.sub(/^IEC\s/, "").gsub(/[\s\/]/, "_").upcase
70
+ url = "https://raw.githubusercontent.com/relaton/relaton-data-iec/main/data/#{file}.yaml"
71
+ resp = Net::HTTP.get URI(url)
72
+ hash = YAML.safe_load resp
73
+ hit = Hit.new({ code: ref }, self)
74
+ hit.fetch = IecBibliographicItem.from_hash hash
75
+ [hit]
61
76
  end
62
77
 
63
78
  # @param ref [String]
@@ -90,33 +90,43 @@ module RelatonIec
90
90
  # @param year [String, nil]
91
91
  # @return [RelatonIec::HitCollection]
92
92
  def search_filter(ref, year) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
93
- %r{
94
- ^(?<code>\S+[^\d]*\s\d+(?:-\w+)*(?:\s[A-Z]+)?)
95
- (?::(?<year1>\d{4}))?
96
- (?<bundle>\+[^\s/]+)?
97
- (?:/(?<corr>AMD\s\d+))?
98
- }x =~ ref.upcase
99
- year ||= year1
100
- corr&.sub! " ", ""
93
+ rp1 = ref_parts ref.upcase
94
+ year ||= rp1[:year]
95
+ corr = rp1[:corr]&.sub " ", ""
101
96
  warn "[relaton-iec] (\"#{ref}\") fetching..."
102
- result = search(code, year)
103
- if result.empty? && /(?<=-)(?<part>[\w-]+)/ =~ code
97
+ result = search(rp1[:code], year)
98
+ code = result.text.dup
99
+ if result.empty? && /(?<=\d-)(?<part>[\w-]+)/ =~ rp1[:code]
104
100
  # try to search packaged standard
105
- result = search code, year, part
101
+ result = search rp1[:code], year, part
102
+ pkg_std = result.any?
103
+ end
104
+ result = search rp1[:code] if result.empty?
105
+ if pkg_std
106
+ code.sub!(/(?<=\d-)#{part}/, part[0])
107
+ else
108
+ code.sub!(/-[-\d]+/, "")
106
109
  end
107
- result = search code if result.empty?
108
- code = result.text.dup
109
- code&.sub!(/(?:-\w+)+(?:\s[A-Z]+)?/, "")
110
110
  result.select do |i|
111
- %r{
112
- ^(?<code2>\S+[^\d]*\s\d+)(?:-\w+)*(?:\s[A-Z]+)?(?::\d{4})?
113
- (?<bundle2>\+[^\s/]+)?
114
- (?:/(?<corr2>AMD\d+))?
115
- }x =~ i.hit[:code]
116
- code == code2 && bundle == bundle2 && corr == corr2
111
+ rp2 = ref_parts i.hit[:code]
112
+ code2 = if pkg_std
113
+ rp2[:code].sub(/(?<=\d-\d)\d+/, "")
114
+ else
115
+ rp2[:code].sub(/-[-\d]+/, "")
116
+ end
117
+ code == code2 && rp1[:bundle] == rp2[:bundle] && corr == rp2[:corr]
117
118
  end
118
119
  end
119
120
 
121
+ def ref_parts(ref)
122
+ %r{
123
+ ^(?<code>[^\d]+(?:\d+(?:-\w+)*)?(?:\s?[A-Z]+)?(?:\sSUP)?)
124
+ (?::(?<year>\d{4}))?
125
+ (?<bundle>\+[^\s/]+)?
126
+ (?:/(?<corr>AMD\s?\d+))?
127
+ }x.match ref
128
+ end
129
+
120
130
  def iev(code = "IEC 60050")
121
131
  RelatonIsoBib::XMLParser.from_xml(<<~"XML")
122
132
  <bibitem>
@@ -195,10 +195,12 @@ module RelatonIec
195
195
  when "withdrawn" then "obsoletes"
196
196
  else r_type
197
197
  end
198
- fref = RelatonBib::FormattedRef.new(
199
- content: r.at("FULL_NAME").text, format: "text/plain",
198
+ ref = r.at("FULL_NAME").text
199
+ fref = RelatonBib::FormattedRef.new content: ref, format: "text/plain"
200
+ bibitem = IecBibliographicItem.new(
201
+ formattedref: fref,
202
+ docid: [RelatonBib::DocumentIdentifier.new(id: ref, type: "IEC", primary: true)],
200
203
  )
201
- bibitem = IecBibliographicItem.new(formattedref: fref)
202
204
  { type: type, bibitem: bibitem }
203
205
  end
204
206
  end
@@ -1,3 +1,3 @@
1
1
  module RelatonIec
2
- VERSION = "1.11.3".freeze
2
+ VERSION = "1.11.4".freeze
3
3
  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.11.3
4
+ version: 1.11.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-04-27 00:00:00.000000000 Z
11
+ date: 2022-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: equivalent-xml
@@ -175,7 +175,6 @@ files:
175
175
  - grammars/isodoc.rng
176
176
  - grammars/isostandard.rng
177
177
  - grammars/reqt.rng
178
- - lib/data/61360-4_DB.yaml
179
178
  - lib/relaton_iec.rb
180
179
  - lib/relaton_iec/basic_block/alignment.rb
181
180
  - lib/relaton_iec/basic_block/basic_block.rb
@@ -1,63 +0,0 @@
1
- id: IEC61360-4DB
2
- title:
3
- - type: title-intro
4
- content: IEC/SC 3D
5
- langage:
6
- - en
7
- script:
8
- - Latn
9
- format: text/plain
10
- - type: title-main
11
- content: Common Data Dictionary (CDD - V2.0015.0001)
12
- langage:
13
- - en
14
- script:
15
- - Latn
16
- format: text/plain
17
- - type: main
18
- content: IEC/SC 3D - Common Data Dictionary (CDD - V2.0015.0001)
19
- langage:
20
- - en
21
- script:
22
- - Latn
23
- format: text/plain
24
- link:
25
- - content: https://cdd.iec.ch
26
- type: src
27
- type: standard
28
- docid:
29
- - id: IEC 61360-4 DB
30
- type: IEC
31
- primary: true
32
- contributor:
33
- - organization:
34
- name:
35
- - International Electrotechnical Commission
36
- abbreviation: IEC
37
- url: www.iec.ch
38
- role:
39
- - publisher
40
- edition: V2.0015.0001
41
- language:
42
- - en
43
- script:
44
- - Latn
45
- abstract:
46
- - content: |
47
- Business processes in all domains and especially in electric/ electronic industries are increasingly being conducted electronically;
48
- a situation which applies to internal processes as well as to the interaction with external partners.
49
- To support the necessary information transfer the use of common concepts based on information/classification models is inevitable.
50
-
51
- Concepts specified on a global basis support error-free information sharing. In addition, the dictionaries of concepts may be used as
52
- reference collections for setting up master data repositories for product data that serve as company internal information backbones.
53
- Thus, costly interpretation and conversion errors may be minimized.
54
-
55
- From the market side, pressure is increasingly being exerted to supply product data in electronic form using commonly agreed concepts
56
- and as this pressure grows, it will have a considerable impact on all business processes. For this reason, a seamless exchange of
57
- product data, i.e., an exchange that is free from media discontinuities requires a unified, joint approach both for exchanging product
58
- data internally within a company or for exchanging product data with suppliers or customers.
59
- language:
60
- - en
61
- script:
62
- - Latn
63
- format: text/plain