relaton-iev 0.1.3 → 1.1.2

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: 53aaa66f833891f4c0a076e87b6cf851c4bd5963aaa6f5f3339ea6cc173343c2
4
- data.tar.gz: 7e5a255631d0896e81db01c8a80707682b7c60aef7b4b942e7b31fcabf2fce3e
3
+ metadata.gz: 171452dde039161de3d84192e3618fe2d7df53772c9250fe40a00e11d10263fe
4
+ data.tar.gz: 4d927ecb1b1afcf5302685c1119c2b1807e489a9955b893ff983ac0ca5db24be
5
5
  SHA512:
6
- metadata.gz: fb89a78e27b507e3efff673361b66fe8baa69ecea089f9b1b640f685355a683518b8c06cda1ebe13dae49f27ff4571ec5891579315179978373c5d3129133aee
7
- data.tar.gz: 20299b00f1f857f5fa0f63f029b10a491a26df3e238c9cf20b240077ff9312499aac5db95e5359c4e168ed5c1485d259584f3e3c84cbc66cd9fe11459fb707b2
6
+ metadata.gz: 9b8474c5c852ead8e7979c0a5f8d46d6cf0270e1f96e422141e1cd655fc0a0def44f1ba67a306cf66f7030da2e49e54dbd6bb15215f186093ff44d0fcffdb9e0
7
+ data.tar.gz: 570ad6aeb737744761fe7e68b8b300d48fea9f176bbf4d3397ce530e73e2b4f74219f9911691307d3357619b97bce57cc66957f5d9ca274fd333d3d4be882cee
@@ -0,0 +1,46 @@
1
+ # Auto-generated by Cimas: Do not edit it manually!
2
+ # See https://github.com/metanorma/cimas
3
+ name: rake
4
+
5
+ on:
6
+ push:
7
+ branches: [ master, main ]
8
+ tags: [ v* ]
9
+ pull_request:
10
+
11
+ jobs:
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: [ '2.7', '2.6', '2.5', '2.4' ]
20
+ os: [ ubuntu-latest, windows-latest, macos-latest ]
21
+ experimental: [ false ]
22
+ include:
23
+ - ruby: '3.0'
24
+ os: 'ubuntu-latest'
25
+ experimental: true
26
+ - ruby: '3.0'
27
+ os: 'windows-latest'
28
+ experimental: true
29
+ - ruby: '3.0'
30
+ os: 'macos-latest'
31
+ experimental: true
32
+ steps:
33
+ - uses: actions/checkout@v2
34
+ with:
35
+ submodules: true
36
+
37
+ # https://github.com/ruby-debug/debase/issues/89#issuecomment-686827382
38
+ - if: matrix.os == 'macos-latest' && matrix.ruby == '2.5'
39
+ run: echo BUNDLE_BUILD__DEBASE="--with-cflags=\"-Wno-error=implicit-function-declaration\"" >> $GITHUB_ENV
40
+
41
+ - uses: ruby/setup-ruby@v1
42
+ with:
43
+ ruby-version: ${{ matrix.ruby }}
44
+ bundler-cache: true
45
+
46
+ - run: bundle exec rake
data/.gitignore CHANGED
@@ -11,3 +11,4 @@
11
11
  # rspec failure tracking
12
12
  .rspec_status
13
13
  .rubocop-https---raw-githubusercontent-com-riboseinc-oss-guides-master-ci-rubocop-yml
14
+ Gemfile.lock
data/.rubocop.yml CHANGED
@@ -1,10 +1,12 @@
1
1
  # This project follows the Ribose OSS style guide.
2
2
  # https://github.com/riboseinc/oss-guides
3
3
  # All project-specific additions and overrides should be specified in this file.
4
-
5
4
  inherit_from:
6
5
  - https://raw.githubusercontent.com/riboseinc/oss-guides/master/ci/rubocop.yml
6
+
7
+ # local repo-specific modifications
8
+
7
9
  AllCops:
8
- TargetRubyVersion: 2.3
9
- Rails:
10
- Enabled: true
10
+ DisplayCopNames: false
11
+ StyleGuideCopsOnly: false
12
+ TargetRubyVersion: 2.4
data/Rakefile CHANGED
@@ -3,4 +3,4 @@ require "rspec/core/rake_task"
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
- task :default => :spec
6
+ task default: :spec
data/bin/rspec ADDED
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'rspec' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require "pathname"
10
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path(
11
+ "../../Gemfile", Pathname.new(__FILE__).realpath
12
+ )
13
+
14
+ require "rubygems"
15
+ require "bundler/setup"
16
+
17
+ load Gem.bin_path("rspec-core", "rspec")
data/lib/relaton_iev.rb CHANGED
@@ -5,54 +5,68 @@ module RelatonIev
5
5
  class Error < StandardError; end
6
6
 
7
7
  class << self
8
- # converts generic IEV citation to citation of IEC 60050-n
9
- # assumes IEV citations are of form
10
- # <eref type="inline" bibitemid="a" citeas="IEC 60050">
11
- # <locality type="clause"><referenceFrom>101-01-01</referenceFrom></locality></eref>
12
- #
13
- # @param xmldoc [Nokogiri::XML::Documet]
14
- # @return [Set<String>]
15
- def linksIev2iec60050part(xmldoc)
16
- parts = Set.new
17
- xmldoc.xpath("//eref[@citeas = 'IEC 60050:2011'] | "\
18
- "//origin[@citeas = 'IEC 60050:2011']").each do |x|
19
- cl = x&.at("./locality[@type = 'clause']/referenceFrom")&.text || next
20
- m = /^(\d+)/.match cl || next
21
- parts << m[0]
22
- x["citeas"] = x["citeas"].sub(/60050/, "60050-#{m[0]}")
23
- x["bibitemid"] = "IEC60050-#{m[0]}"
24
- end
25
- parts
8
+ # converts generic IEV citation to citation of IEC 60050-n
9
+ # assumes IEV citations are of form
10
+ # <eref type="inline" bibitemid="a" citeas="IEC 60050">
11
+ # <locality type="clause"><referenceFrom>101-01-01</referenceFrom></locality></eref>
12
+ #
13
+ # @param xmldoc [Nokogiri::XML::Documet]
14
+ # @return [Set<String>]
15
+ def linksIev2iec60050part(xmldoc)
16
+ parts = Set.new
17
+ xmldoc.xpath("//eref[@citeas = 'IEC 60050:2011'] | "\
18
+ "//origin[@citeas = 'IEC 60050:2011']").each do |x|
19
+ cl = x&.at(".//locality[@type = 'clause']/referenceFrom")&.text || next
20
+ m = /^(\d+)/.match cl || next
21
+ parts << m[0]
22
+ x["citeas"] = x["citeas"].sub(/60050/, "60050-#{m[0]}")
23
+ x["bibitemid"] = "IEC60050-#{m[0]}"
26
24
  end
25
+ parts
26
+ end
27
27
 
28
- # replace generic IEV reference with references to all extracted
29
- # IEV parts
30
- #
31
- # @param xmodoc [Nokogiri::XML::Document]
32
- # @param parts [Set<String>]
33
- # @param iev [Nokogiri::XML::Element]
34
- # @param bibdb [Relaton::Db, NilClass]
35
- # @return [Nokogiri::XML::Element]
36
- def refsIev2iec60050part(xmldoc, parts, iev, bibdb = nil)
37
- new_iev = ""
38
- parts.sort.each do |p|
39
- hit = bibdb&.fetch("IEC 60050-#{p}", nil, keep_year: true) || next
40
- new_iev += hit.to_xml.sub(/ id="[^"]+"/, %{ id="IEC60050-#{p}"})
41
- date = hit.date[0].on.year
42
- xmldoc.xpath("//*[@citeas = 'IEC 60050-#{p}:2011']").each do |x|
43
- x["citeas"] = x["citeas"].sub(/:2011$/, ":#{date}")
44
- end
28
+ # replace generic IEV reference with references to all extracted
29
+ # IEV parts
30
+ #
31
+ # @param xmodoc [Nokogiri::XML::Document]
32
+ # @param parts [Set<String>]
33
+ # @param iev [Nokogiri::XML::Element]
34
+ # @param bibdb [Relaton::Db, NilClass]
35
+ # @return [Nokogiri::XML::Element]
36
+ def refsIev2iec60050part(xmldoc, parts, iev, bibdb = nil)
37
+ new_iev = ""
38
+ parts.sort.each do |p|
39
+ hit = bibdb&.fetch("IEC 60050-#{p}", nil, keep_year: true) || next
40
+ date = hit.date[0].on(:year)
41
+ new_iev += refsIev2iec60050part1(xmldoc, p, hit)
42
+ xmldoc.xpath("//*[@citeas = 'IEC 60050-#{p}:2011']").each do |x|
43
+ x["citeas"] = x["citeas"].sub(/:2011$/, ":#{date}")
45
44
  end
46
- iev.replace(new_iev)
47
45
  end
46
+ iev.replace(new_iev)
47
+ end
48
48
 
49
- # @param xmldoc [Nokogiri::XML::Document]
50
- # @param bibdb [Relaton::Db, NilClass]
51
- # @return [Nokogiri::XML::Element]
52
- def iev_cleanup(xmldoc, bibdb = nil)
53
- iev = xmldoc.at("//bibitem[docidentifier = 'IEC 60050:2011']") || return
54
- parts = linksIev2iec60050part(xmldoc)
55
- refsIev2iec60050part(xmldoc, parts, iev, bibdb)
56
- end
49
+ def refsIev2iec60050part1(xmldoc, part, hit)
50
+ date = hit.date[0].on(:year)
51
+ return "" if already_contains_ref(xmldoc, part, date)
52
+
53
+ id = xmldoc.at("//bibitem[@id = 'IEC60050-#{part}']") ? "-1" : ""
54
+ hit.to_xml.sub(/ id="[^"]+"/, %{ id="IEC60050-#{part}#{id}"})
55
+ end
56
+
57
+ def already_contains_ref(xmldoc, part, date)
58
+ xmldoc.at("//bibliography//bibitem[not(ancestor::bibitem)]/"\
59
+ "docidentifier[@type = 'IEC']"\
60
+ "[text() = 'IEC 60050-#{part}:#{date}']")
61
+ end
62
+
63
+ # @param xmldoc [Nokogiri::XML::Document]
64
+ # @param bibdb [Relaton::Db, NilClass]
65
+ # @return [Nokogiri::XML::Element]
66
+ def iev_cleanup(xmldoc, bibdb = nil)
67
+ iev = xmldoc.at("//bibitem[docidentifier = 'IEC 60050:2011']") || return
68
+ parts = linksIev2iec60050part(xmldoc)
69
+ refsIev2iec60050part(xmldoc, parts, iev, bibdb)
70
+ end
57
71
  end
58
72
  end
@@ -1,3 +1,3 @@
1
1
  module RelatonIev
2
- VERSION = "0.1.3".freeze
2
+ VERSION = "1.1.2".freeze
3
3
  end
data/relaton_iev.gemspec CHANGED
@@ -14,22 +14,24 @@ Gem::Specification.new do |spec|
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
17
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
+ `git ls-files -z`.split("\x0")
18
+ .reject { |f| f.match(%r{^(test|spec|features)/}) }
18
19
  end
19
20
  spec.bindir = "exe"
20
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
22
  spec.require_paths = ["lib"]
22
23
  spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
23
24
 
24
- spec.add_development_dependency "debase"
25
+ # spec.add_development_dependency "debase"
25
26
  spec.add_development_dependency "pry-byebug"
26
27
  spec.add_development_dependency "rake", "~> 10.0"
27
28
  spec.add_development_dependency "rspec", "~> 3.0"
28
- spec.add_development_dependency "ruby-debug-ide"
29
+ # spec.add_development_dependency "ruby-debug-ide"
30
+ spec.add_development_dependency "equivalent-xml", "~> 0.6"
29
31
  spec.add_development_dependency "simplecov"
30
32
  spec.add_development_dependency "vcr"
31
33
  spec.add_development_dependency "webmock"
32
- spec.add_development_dependency "equivalent-xml", "~> 0.6"
33
34
 
34
- spec.add_dependency "relaton", "~> 0.7"
35
+ spec.add_dependency "nokogiri", "~> 1.11.0"
36
+ spec.add_dependency "relaton", ">= 1.6"
35
37
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-iev
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 1.1.2
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: 2020-01-12 00:00:00.000000000 Z
11
+ date: 2021-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: debase
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: pry-byebug
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -67,19 +53,19 @@ dependencies:
67
53
  - !ruby/object:Gem::Version
68
54
  version: '3.0'
69
55
  - !ruby/object:Gem::Dependency
70
- name: ruby-debug-ide
56
+ name: equivalent-xml
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
- - - ">="
59
+ - - "~>"
74
60
  - !ruby/object:Gem::Version
75
- version: '0'
61
+ version: '0.6'
76
62
  type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
- - - ">="
66
+ - - "~>"
81
67
  - !ruby/object:Gem::Version
82
- version: '0'
68
+ version: '0.6'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: simplecov
85
71
  requirement: !ruby/object:Gem::Requirement
@@ -123,33 +109,33 @@ dependencies:
123
109
  - !ruby/object:Gem::Version
124
110
  version: '0'
125
111
  - !ruby/object:Gem::Dependency
126
- name: equivalent-xml
112
+ name: nokogiri
127
113
  requirement: !ruby/object:Gem::Requirement
128
114
  requirements:
129
115
  - - "~>"
130
116
  - !ruby/object:Gem::Version
131
- version: '0.6'
132
- type: :development
117
+ version: 1.11.0
118
+ type: :runtime
133
119
  prerelease: false
134
120
  version_requirements: !ruby/object:Gem::Requirement
135
121
  requirements:
136
122
  - - "~>"
137
123
  - !ruby/object:Gem::Version
138
- version: '0.6'
124
+ version: 1.11.0
139
125
  - !ruby/object:Gem::Dependency
140
126
  name: relaton
141
127
  requirement: !ruby/object:Gem::Requirement
142
128
  requirements:
143
- - - "~>"
129
+ - - ">="
144
130
  - !ruby/object:Gem::Version
145
- version: '0.7'
131
+ version: '1.6'
146
132
  type: :runtime
147
133
  prerelease: false
148
134
  version_requirements: !ruby/object:Gem::Requirement
149
135
  requirements:
150
- - - "~>"
136
+ - - ">="
151
137
  - !ruby/object:Gem::Version
152
- version: '0.7'
138
+ version: '1.6'
153
139
  description: 'RelatonIev: manipulates IEV references to IEC 60050.'
154
140
  email:
155
141
  - open.source@ribose.com
@@ -157,9 +143,7 @@ executables: []
157
143
  extensions: []
158
144
  extra_rdoc_files: []
159
145
  files:
160
- - ".github/workflows/macos.yml"
161
- - ".github/workflows/ubuntu.yml"
162
- - ".github/workflows/windows.yml"
146
+ - ".github/workflows/rake.yml"
163
147
  - ".gitignore"
164
148
  - ".rspec"
165
149
  - ".rubocop.yml"
@@ -168,6 +152,7 @@ files:
168
152
  - README.adoc
169
153
  - Rakefile
170
154
  - bin/console
155
+ - bin/rspec
171
156
  - bin/setup
172
157
  - lib/relaton_iev.rb
173
158
  - lib/relaton_iev/version.rb
@@ -176,7 +161,7 @@ homepage: https://github.com/metanorma/relaton-iev
176
161
  licenses:
177
162
  - MIT
178
163
  metadata: {}
179
- post_install_message:
164
+ post_install_message:
180
165
  rdoc_options: []
181
166
  require_paths:
182
167
  - lib
@@ -191,9 +176,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
191
176
  - !ruby/object:Gem::Version
192
177
  version: '0'
193
178
  requirements: []
194
- rubyforge_project:
195
- rubygems_version: 2.7.6
196
- signing_key:
179
+ rubygems_version: 3.1.4
180
+ signing_key:
197
181
  specification_version: 4
198
182
  summary: 'RelatonIev: manipulates IEV references to IEC 60050.'
199
183
  test_files: []
@@ -1,27 +0,0 @@
1
- # Auto-generated !!! Do not edit it manually
2
- # use ci-master https://github.com/metanorma/metanorma-build-scripts
3
- name: macos
4
-
5
- on: [push]
6
-
7
- jobs:
8
- test-macos:
9
- name: Test on Ruby ${{ matrix.ruby }} macOS
10
- runs-on: macos-latest
11
- strategy:
12
- matrix:
13
- ruby: [ '2.6', '2.5', '2.4' ]
14
- steps:
15
- - uses: actions/checkout@master
16
- - name: Use Ruby
17
- uses: actions/setup-ruby@v1
18
- with:
19
- ruby-version: ${{ matrix.ruby }}
20
- architecture: 'x64'
21
- - name: Update gems
22
- run: |
23
- sudo gem install bundler -v "~> 2" --force
24
- bundle install --jobs 4 --retry 3
25
- - name: Run specs
26
- run: |
27
- bundle exec rake
@@ -1,27 +0,0 @@
1
- # Auto-generated !!! Do not edit it manually
2
- # use ci-master https://github.com/metanorma/metanorma-build-scripts
3
- name: ubuntu
4
-
5
- on: [push]
6
-
7
- jobs:
8
- test-linux:
9
- name: Test on Ruby ${{ matrix.ruby }} Ubuntu
10
- runs-on: ubuntu-latest
11
- strategy:
12
- matrix:
13
- ruby: [ '2.6', '2.5', '2.4' ]
14
- steps:
15
- - uses: actions/checkout@master
16
- - name: Use Ruby
17
- uses: actions/setup-ruby@v1
18
- with:
19
- ruby-version: ${{ matrix.ruby }}
20
- architecture: 'x64'
21
- - name: Update gems
22
- run: |
23
- gem install bundler -v "~> 2"
24
- bundle install --jobs 4 --retry 3
25
- - name: Run specs
26
- run: |
27
- bundle exec rake
@@ -1,30 +0,0 @@
1
- # Auto-generated !!! Do not edit it manually
2
- # use ci-master https://github.com/metanorma/metanorma-build-scripts
3
- name: windows
4
-
5
- on: [push]
6
-
7
- jobs:
8
- test-windows:
9
- name: Test on Ruby ${{ matrix.ruby }} Windows
10
- runs-on: windows-latest
11
- strategy:
12
- matrix:
13
- ruby: [ '2.6', '2.5', '2.4' ]
14
- steps:
15
- - uses: actions/checkout@master
16
- - name: Use Ruby
17
- uses: actions/setup-ruby@v1
18
- with:
19
- ruby-version: ${{ matrix.ruby }}
20
- architecture: 'x64'
21
- - name: Update gems
22
- shell: pwsh
23
- run: |
24
- gem install bundler -v "~> 2"
25
- bundle config --local path vendor/bundle
26
- bundle update
27
- bundle install --jobs 4 --retry 3
28
- - name: Run specs
29
- run: |
30
- bundle exec rake