dwc-archive 1.1.2 → 1.1.6

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: f91a9aa06150210f94bd69bb408dc21340feb21294c958f1fe0b03eeda4dab57
4
- data.tar.gz: eb6c0d368729f09aa91ddc7a131545b1fa1cdfcab5c09a9326e05bcd6e55cdea
3
+ metadata.gz: 024cdcbe976462942f15dee141a48d4dc0595ccfb1b4013ace4b88fd742ec6a6
4
+ data.tar.gz: 29aff6c8699d82f74513874a90cbfe796b2db8f1c94134500cbc154bf3dd61d8
5
5
  SHA512:
6
- metadata.gz: 99a1903bd90f161180c59934a5533c55c3c838aeecd0a37476b7b240004c798ea9149a1511eac8ac3a434df1c2e5d5940bb0b6f125f0f7949decf62bcd78900a
7
- data.tar.gz: 5922fca1a5e0a26ede79e9b3ee4d4a3255c9f1403b7ec71a9f5ce1b929f1dfc71abde50c82541a76a09899be9710e557f1850003f5ec04aa6c81e53f55933fd1
6
+ metadata.gz: 794cb8f3092f0005970421f68fba890553f825f9ef77902f3460fe16240a5438ec8fd277aa95eccae9335072dad5c42a25df87a326d5abd7f53f6271b411271c
7
+ data.tar.gz: fe2491aabacc15866880c54767f7b874b0c7c01c894947a671c3f0a7b10a1785a806731067100c426b39f80ec1d300e7298c7d0a4b8d30e7d2cab73847859622
@@ -0,0 +1,35 @@
1
+ # This workflow uses actions that are not certified by GitHub.
2
+ # They are provided by a third-party and are governed by
3
+ # separate terms of service, privacy policy, and support
4
+ # documentation.
5
+ # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6
+ # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7
+
8
+ name: build
9
+
10
+ on:
11
+ push:
12
+ branches: [ master ]
13
+ pull_request:
14
+ branches: [ master ]
15
+
16
+ jobs:
17
+ test:
18
+
19
+ runs-on: ubuntu-latest
20
+ strategy:
21
+ matrix:
22
+ ruby-version: ['2.6', '2.7', '3.0']
23
+
24
+ steps:
25
+ - uses: actions/checkout@v2
26
+ - name: Set up Ruby
27
+ # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
28
+ # change this to (see https://github.com/ruby/setup-ruby#versioning):
29
+ # uses: ruby/setup-ruby@v1
30
+ uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
31
+ with:
32
+ ruby-version: ${{ matrix.ruby-version }}
33
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
34
+ - name: Run tests
35
+ run: bundle exec rake
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.7.1
1
+ 3.0.2
data/dwc-archive.gemspec CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |gem|
22
22
  gem.require_paths = ["lib"]
23
23
 
24
24
  # gem.add_runtime_dependency "minitar", "~> 0.6"
25
- gem.add_runtime_dependency "biodiversity", "~> 5"
25
+ gem.add_runtime_dependency "biodiversity", "~> 5.5.2"
26
26
  gem.add_runtime_dependency "nokogiri", "~> 1.11"
27
27
 
28
28
  gem.add_development_dependency "bundler", "~> 2.2"
@@ -1,11 +1,9 @@
1
- # encoding: utf-8
2
1
  class DarwinCore
3
2
  # This module abstracts information for reading csv file to be used
4
3
  # in several classes which need such functionality
5
4
  module Ingester
6
- attr_reader :data, :properties, :encoding, :fields_separator, :size
7
- attr_reader :file_path, :fields, :line_separator, :quote_character,
8
- :ignore_headers
5
+ attr_reader :data, :properties, :encoding, :fields_separator, :size, :file_path, :fields, :line_separator,
6
+ :quote_character, :ignore_headers
9
7
 
10
8
  def size
11
9
  @size ||= init_size
@@ -16,16 +14,19 @@ class DarwinCore
16
14
  res = []
17
15
  errors = []
18
16
  args = define_csv_args
19
- min_size = @fields.map { |f| f[:index].to_i || 0 }.sort[-1] + 1
20
- csv = CSV.new(open(@file_path), args)
17
+ min_size = @fields.map { |f| f[:index].to_i || 0 }.max + 1
18
+ csv = CSV.new(open(@file_path), **args)
21
19
  csv.each_with_index do |r, i|
22
20
  next if @ignore_headers && i == 0
21
+
23
22
  min_size > r.size ? errors << r : process_csv_row(res, errors, r)
24
23
  next if i == 0 || i % batch_size != 0
24
+
25
25
  DarwinCore.logger_write(@dwc.object_id,
26
26
  format("Ingested %s records from %s",
27
27
  i, name))
28
28
  next unless block_given?
29
+
29
30
  yield [res, errors]
30
31
  res = []
31
32
  errors = []
@@ -70,12 +71,14 @@ class DarwinCore
70
71
 
71
72
  def init_encoding
72
73
  @encoding = @properties[:encoding] || "UTF-8"
73
- accepted_encoding = ["utf-8", "utf8", "utf-16", "utf16"].
74
+ accepted_encoding = %w[utf-8 utf8 utf-16 utf16].
74
75
  include?(@encoding.downcase)
75
- fail(
76
- DarwinCore::EncodingError,
77
- "No support for encodings other than utf-8 or utf-16 at the moment"
78
- ) unless accepted_encoding
76
+ unless accepted_encoding
77
+ raise(
78
+ DarwinCore::EncodingError,
79
+ "No support for encodings other than utf-8 or utf-16 at the moment"
80
+ )
81
+ end
79
82
  end
80
83
 
81
84
  def init_file_path
@@ -83,14 +86,16 @@ class DarwinCore
83
86
  @data[:attributes][:location] ||
84
87
  @data[:files][:location]
85
88
  @file_path = File.join(@path, file)
86
- fail DarwinCore::FileNotFoundError, "No file data" unless @file_path
89
+ raise DarwinCore::FileNotFoundError, "No file data" unless @file_path
87
90
  end
88
91
 
89
92
  def init_fields
90
93
  @data[:field] = [data[:field]] if data[:field].class != Array
91
94
  @fields = @data[:field].map { |f| f[:attributes] }
92
- fail DarwinCore::InvalidArchiveError,
93
- "No data fields are found" if @fields.empty?
95
+ if @fields.empty?
96
+ raise DarwinCore::InvalidArchiveError,
97
+ "No data fields are found"
98
+ end
94
99
  end
95
100
 
96
101
  def init_field_separator
@@ -100,7 +105,7 @@ class DarwinCore
100
105
  end
101
106
 
102
107
  def init_size
103
- `wc -l #{@file_path}`.match(/^\s*([\d]+)\s/)[1].to_i
108
+ `wc -l #{@file_path}`.match(/^\s*(\d+)\s/)[1].to_i
104
109
  end
105
110
  end
106
111
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Version constant of the class
4
4
  class DarwinCore
5
- VERSION = "1.1.2"
5
+ VERSION = "1.1.6"
6
6
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "set"
4
+
3
5
  describe DarwinCore do
4
6
  subject { DarwinCore }
5
7
  let(:file_dir) { File.expand_path("../files", __dir__) }
@@ -228,7 +230,8 @@ describe DarwinCore do
228
230
  let(:file_path) { File.join(file_dir, "data.tar.gz") }
229
231
  let(:normalized) { dwca.normalize_classification }
230
232
  let(:encodings) do
231
- normalized.each_with_object(Set.new) do |taxon, e|
233
+ set = Set.new
234
+ normalized.each_with_object(set) do |taxon, e|
232
235
  taxon[1].classification_path.each { |p| e << p.encoding }
233
236
  end
234
237
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dwc-archive
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitry Mozzherin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-19 00:00:00.000000000 Z
11
+ date: 2021-11-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: biodiversity
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '5'
19
+ version: 5.5.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '5'
26
+ version: 5.5.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: nokogiri
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -174,11 +174,11 @@ extensions: []
174
174
  extra_rdoc_files: []
175
175
  files:
176
176
  - ".document"
177
+ - ".github/workflows/build.yml"
177
178
  - ".gitignore"
178
179
  - ".rspec"
179
180
  - ".rubocop.yml"
180
181
  - ".ruby-version"
181
- - ".travis.yml"
182
182
  - CHANGELOG
183
183
  - Gemfile
184
184
  - LICENSE
@@ -260,7 +260,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
260
260
  - !ruby/object:Gem::Version
261
261
  version: '0'
262
262
  requirements: []
263
- rubygems_version: 3.2.6
263
+ rubygems_version: 3.2.22
264
264
  signing_key:
265
265
  specification_version: 4
266
266
  summary: Handler of Darwin Core Archive files
data/.travis.yml DELETED
@@ -1,13 +0,0 @@
1
- rvm:
2
- - 2.5
3
- - 2.6
4
- - 2.7
5
- before_install:
6
- - sudo apt-get update
7
- - gem install bundler
8
- script:
9
- - bundle exec cucumber
10
- - bundle exec rake
11
- branches:
12
- only:
13
- - master