dwc-archive 0.9.10 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +1 -0
  3. data/.rspec +2 -1
  4. data/.rubocop.yml +23 -0
  5. data/.ruby-version +1 -1
  6. data/.travis.yml +4 -7
  7. data/CHANGELOG +14 -8
  8. data/Gemfile +3 -1
  9. data/LICENSE +1 -1
  10. data/README.md +119 -107
  11. data/Rakefile +13 -36
  12. data/dwc-archive.gemspec +23 -19
  13. data/features/step_definitions/dwc-creator_steps.rb +5 -5
  14. data/features/step_definitions/dwc-reader_steps.rb +47 -28
  15. data/features/support/env.rb +1 -1
  16. data/lib/dwc_archive.rb +124 -0
  17. data/lib/dwc_archive/archive.rb +60 -0
  18. data/lib/dwc_archive/classification_normalizer.rb +382 -0
  19. data/lib/dwc_archive/core.rb +25 -0
  20. data/lib/{dwc-archive → dwc_archive}/errors.rb +10 -0
  21. data/lib/dwc_archive/expander.rb +88 -0
  22. data/lib/{dwc-archive → dwc_archive}/extension.rb +5 -3
  23. data/lib/dwc_archive/generator.rb +91 -0
  24. data/lib/dwc_archive/generator_eml_xml.rb +116 -0
  25. data/lib/dwc_archive/generator_meta_xml.rb +72 -0
  26. data/lib/dwc_archive/gnub_taxon.rb +14 -0
  27. data/lib/dwc_archive/ingester.rb +106 -0
  28. data/lib/dwc_archive/metadata.rb +57 -0
  29. data/lib/dwc_archive/taxon_normalized.rb +23 -0
  30. data/lib/dwc_archive/version.rb +6 -0
  31. data/lib/dwc_archive/xml_reader.rb +90 -0
  32. data/spec/files/file with characters(3).gz b/data/spec/files/file with → characters(3).tar.gz +0 -0
  33. data/spec/files/generator_eml.xml +47 -0
  34. data/spec/files/generator_meta.xml +19 -0
  35. data/spec/lib/classification_normalizer_spec.rb +96 -105
  36. data/spec/lib/core_spec.rb +43 -41
  37. data/spec/lib/darwin_core_spec.rb +108 -138
  38. data/spec/lib/generator_eml_xml_spec.rb +12 -11
  39. data/spec/lib/generator_meta_xml_spec.rb +12 -11
  40. data/spec/lib/generator_spec.rb +77 -69
  41. data/spec/lib/gnub_taxon_spec.rb +15 -17
  42. data/spec/lib/metadata_spec.rb +50 -41
  43. data/spec/lib/taxon_normalized_spec.rb +62 -65
  44. data/spec/lib/xml_reader_spec.rb +9 -12
  45. data/spec/spec_helper.rb +54 -51
  46. metadata +105 -88
  47. data/.rvmrc +0 -1
  48. data/] +0 -40
  49. data/lib/dwc-archive.rb +0 -107
  50. data/lib/dwc-archive/archive.rb +0 -40
  51. data/lib/dwc-archive/classification_normalizer.rb +0 -428
  52. data/lib/dwc-archive/core.rb +0 -17
  53. data/lib/dwc-archive/expander.rb +0 -84
  54. data/lib/dwc-archive/generator.rb +0 -85
  55. data/lib/dwc-archive/generator_eml_xml.rb +0 -86
  56. data/lib/dwc-archive/generator_meta_xml.rb +0 -58
  57. data/lib/dwc-archive/ingester.rb +0 -101
  58. data/lib/dwc-archive/metadata.rb +0 -48
  59. data/lib/dwc-archive/version.rb +0 -3
  60. data/lib/dwc-archive/xml_reader.rb +0 -64
@@ -1,18 +1,15 @@
1
- require_relative '../spec_helper'
1
+ # frozen_string_literal: true
2
2
 
3
- describe DarwinCore::XmlReader do
4
-
5
- describe '.from_xml' do
3
+ describe DarwinCore::XmlReader do
4
+ describe ".from_xml" do
5
+ let(:file) { File.expand_path("../files/meta.xml", __dir__) }
6
+ subject { DarwinCore::XmlReader.from_xml(File.read(file)) }
6
7
 
7
8
  it "reads xml to hash" do
8
- file = File.expand_path('../../files/meta.xml', __FILE__)
9
- meta = subject.from_xml(File.read(file))
10
- expect(meta.is_a? Hash).to be_true
11
- expect(meta[:archive].keys.sort).to eq [:core, :extension]
12
- expect(meta[:archive][:core].keys.sort).
13
- to eq [:attributes, :field, :files, :id]
9
+ expect(subject).to be_kind_of Hash
10
+ expect(subject[:archive].keys.sort).to eq %i[core extension]
11
+ expect(subject[:archive][:core].keys.sort).
12
+ to eq %i[attributes field files id]
14
13
  end
15
-
16
14
  end
17
-
18
15
  end
@@ -1,60 +1,63 @@
1
- # encoding: utf-8
2
- # HACK: to suppress warnings
3
- $VERBOSE = nil
1
+ # frozen_string_literal: true
4
2
 
5
- require 'coveralls'
6
- Coveralls.wear!
3
+ require "dwc_archive"
4
+ require "rspec"
5
+ require "rspec/mocks"
6
+ require "socket"
7
7
 
8
- require 'dwc-archive'
9
- require 'rspec'
10
- require 'rspec/mocks'
11
- require 'socket'
12
-
13
- RSpec.configure do |config|
8
+ RSpec.configure do
14
9
  end
15
10
 
16
11
  unless defined?(SPEC_CONSTANTS)
17
- EML_DATA = {
18
- id: '1234',
19
- license: 'http://creativecommons.org/licenses/by-sa/3.0/',
20
- title: 'Test Classification',
12
+ EML_DATA =
13
+ {
14
+ id: "1234",
15
+ license: "http://creativecommons.org/licenses/by-sa/3.0/",
16
+ title: "Test Classification",
21
17
  authors: [
22
- { first_name: 'John',
23
- last_name: 'Doe',
24
- email: 'jdoe@example.com',
25
- organization: 'Example',
26
- position: 'Assistant Professor',
27
- url: 'http://example.org' },
28
- { first_name: 'Jane',
29
- last_name: 'Doe',
30
- email: 'jane@example.com' }
31
- ],
18
+ { first_name: "John",
19
+ last_name: "Doe",
20
+ email: "jdoe@example.com",
21
+ organization: "Example",
22
+ position: "Assistant Professor",
23
+ url: "http://example.org" },
24
+ { first_name: "Jane",
25
+ last_name: "Doe",
26
+ email: "jane@example.com" }
27
+ ],
32
28
  metadata_providers: [
33
- { first_name: 'Jim',
34
- last_name: 'Doe',
35
- email: 'jimdoe@example.com',
36
- url: 'http://aggregator.example.org' }],
37
- abstract: 'test classification',
29
+ { first_name: "Jim",
30
+ last_name: "Doe",
31
+ email: "jimdoe@example.com",
32
+ url: "http://aggregator.example.org" }
33
+ ],
34
+ abstract: "test classification",
38
35
  citation:
39
- 'Test classification: Doe John, Doe Jane, Taxnonmy, 10, 1, 2010',
40
- url: 'http://example.com'
41
- }
36
+ "Test classification: Doe John, Doe Jane, Taxnonmy, 10, 1, 2010",
37
+ url: "http://example.com"
38
+ }.freeze
42
39
  META_DATA = {
43
- extensions: [
44
- {fields: [
45
- 'http://rs.tdwg.org/dwc/terms/TaxonID',
46
- 'http://rs.tdwg.org/dwc/terms/vernacularName'],
47
- ignoreHeaderLines: 1,
48
- location: 'vern.csv',
49
- rowType: 'http://rs.gbif.org/terms/1.0/VernacularName'}],
50
- core: {
51
- fields: [
52
- 'http://rs.tdwg.org/dwc/terms/taxonID',
53
- 'http://rs.tdwg.org/dwc/terms/parentNameUsageID',
54
- 'http://rs.tdwg.org/dwc/terms/scientificName',
55
- 'http://rs.tdwg.org/dwc/terms/taxonRank'],
56
- ignoreHeaderLines: 1,
57
- location: 'core.csv'}}
40
+ extensions:
41
+ [
42
+ { fields:
43
+ [
44
+ "http://rs.tdwg.org/dwc/terms/TaxonID",
45
+ "http://rs.tdwg.org/dwc/terms/vernacularName"
46
+ ],
47
+ ignoreHeaderLines: 1,
48
+ location: "vern.csv",
49
+ rowType: "http://rs.gbif.org/terms/1.0/VernacularName" }
50
+ ],
51
+ core: { fields:
52
+ [
53
+ "http://rs.tdwg.org/dwc/terms/taxonID",
54
+ "http://rs.tdwg.org/dwc/terms/parentNameUsageID",
55
+ "http://rs.tdwg.org/dwc/terms/scientificName",
56
+ "http://rs.tdwg.org/dwc/terms/taxonRank"
57
+ ],
58
+ ignoreHeaderLines: 1,
59
+ location: "core.csv" }
60
+ }.freeze
58
61
  CORE_DATA = [
59
62
  ["http://rs.tdwg.org/dwc/terms/taxonID",
60
63
  "http://rs.tdwg.org/dwc/terms/parentNameUsageID",
@@ -63,16 +66,16 @@ unless defined?(SPEC_CONSTANTS)
63
66
  [1, 0, "Plantae", "kingdom"],
64
67
  [2, 1, "Betula", "genus"],
65
68
  [3, 2, "Betula verucosa", "species"]
66
- ]
69
+ ].freeze
67
70
  EXTENSION_DATA = [
68
71
  ["http://rs.tdwg.org/dwc/terms/TaxonID",
69
- "http://rs.tdwg.org/dwc/terms/vernacularName"],
72
+ "http://rs.tdwg.org/dwc/terms/vernacularName"],
70
73
  [1, "Plants"],
71
74
  [1, "Растения"],
72
75
  [2, "Birch"],
73
76
  [2, "Береза"],
74
77
  [3, "Wheeping Birch"],
75
78
  [3, "Береза плакучая"]
76
- ]
79
+ ].freeze
77
80
  SPEC_CONSTANTS = true
78
81
  end
metadata CHANGED
@@ -1,205 +1,221 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dwc-archive
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.10
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitry Mozzherin
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-27 00:00:00.000000000 Z
11
+ date: 2021-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: nokogiri
14
+ name: biodiversity
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.6'
19
+ version: '5'
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: '1.6'
26
+ version: '5'
27
27
  - !ruby/object:Gem::Dependency
28
- name: parsley-store
28
+ name: nokogiri
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.3'
33
+ version: '1.11'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.3'
40
+ version: '1.11'
41
41
  - !ruby/object:Gem::Dependency
42
- name: archive-tar-minitar
42
+ name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.5'
48
- type: :runtime
47
+ version: '2.2'
48
+ type: :development
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: '0.5'
54
+ version: '2.2'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rake
56
+ name: byebug
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '10.1'
61
+ version: '11.1'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '10.1'
68
+ version: '11.1'
69
69
  - !ruby/object:Gem::Dependency
70
- name: bundler
70
+ name: cucumber
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.3'
75
+ version: '5'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.3'
82
+ version: '5'
83
83
  - !ruby/object:Gem::Dependency
84
- name: rspec
84
+ name: git
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '2.14'
89
+ version: '1.8'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ~>
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '2.14'
96
+ version: '1.8'
97
97
  - !ruby/object:Gem::Dependency
98
- name: cucumber
98
+ name: rake
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ~>
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '1.3'
103
+ version: '13'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ~>
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '1.3'
110
+ version: '13'
111
111
  - !ruby/object:Gem::Dependency
112
- name: coveralls
112
+ name: rspec
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ~>
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '0.7'
117
+ version: '3.10'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ~>
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '0.7'
124
+ version: '3.10'
125
125
  - !ruby/object:Gem::Dependency
126
- name: debugger
126
+ name: rubocop
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ~>
129
+ - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '1.6'
131
+ version: '1.8'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ~>
136
+ - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '1.6'
138
+ version: '1.8'
139
139
  - !ruby/object:Gem::Dependency
140
- name: git
140
+ name: solargraph
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '0.40'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '0.40'
153
+ - !ruby/object:Gem::Dependency
154
+ name: travis
141
155
  requirement: !ruby/object:Gem::Requirement
142
156
  requirements:
143
- - - ~>
157
+ - - "~>"
144
158
  - !ruby/object:Gem::Version
145
- version: '1.2'
159
+ version: '1.10'
146
160
  type: :development
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
- - - ~>
164
+ - - "~>"
151
165
  - !ruby/object:Gem::Version
152
- version: '1.2'
153
- description: "Darwin Core Archive is the current standard exchange \n format
154
- for GLobal Names Architecture modules. \n This gem makes
155
- it easy to incorporate files in \n Darwin Core Archive
156
- format into a ruby project."
166
+ version: '1.10'
167
+ description: Darwin Core Archive is the current standard exchange format for GLobal
168
+ Names Architecture modules. This gem makes it easy to incorporate files in Darwin
169
+ Core Archive format into a ruby project.
157
170
  email:
158
171
  - dmozzherin at gmail dot com
159
172
  executables: []
160
173
  extensions: []
161
174
  extra_rdoc_files: []
162
175
  files:
163
- - .document
164
- - .gitignore
165
- - .rspec
166
- - .ruby-version
167
- - .rvmrc
168
- - .travis.yml
176
+ - ".document"
177
+ - ".gitignore"
178
+ - ".rspec"
179
+ - ".rubocop.yml"
180
+ - ".ruby-version"
181
+ - ".travis.yml"
169
182
  - CHANGELOG
170
183
  - Gemfile
171
184
  - LICENSE
172
185
  - README.md
173
186
  - Rakefile
174
- - ']'
175
187
  - dwc-archive.gemspec
176
188
  - features/dwca-creator.feature
177
189
  - features/dwca-reader.feature
178
190
  - features/step_definitions/dwc-creator_steps.rb
179
191
  - features/step_definitions/dwc-reader_steps.rb
180
192
  - features/support/env.rb
181
- - lib/dwc-archive.rb
182
- - lib/dwc-archive/archive.rb
183
- - lib/dwc-archive/classification_normalizer.rb
184
- - lib/dwc-archive/core.rb
185
- - lib/dwc-archive/errors.rb
186
- - lib/dwc-archive/expander.rb
187
- - lib/dwc-archive/extension.rb
188
- - lib/dwc-archive/generator.rb
189
- - lib/dwc-archive/generator_eml_xml.rb
190
- - lib/dwc-archive/generator_meta_xml.rb
191
- - lib/dwc-archive/ingester.rb
192
- - lib/dwc-archive/metadata.rb
193
- - lib/dwc-archive/version.rb
194
- - lib/dwc-archive/xml_reader.rb
193
+ - lib/dwc_archive.rb
194
+ - lib/dwc_archive/archive.rb
195
+ - lib/dwc_archive/classification_normalizer.rb
196
+ - lib/dwc_archive/core.rb
197
+ - lib/dwc_archive/errors.rb
198
+ - lib/dwc_archive/expander.rb
199
+ - lib/dwc_archive/extension.rb
200
+ - lib/dwc_archive/generator.rb
201
+ - lib/dwc_archive/generator_eml_xml.rb
202
+ - lib/dwc_archive/generator_meta_xml.rb
203
+ - lib/dwc_archive/gnub_taxon.rb
204
+ - lib/dwc_archive/ingester.rb
205
+ - lib/dwc_archive/metadata.rb
206
+ - lib/dwc_archive/taxon_normalized.rb
207
+ - lib/dwc_archive/version.rb
208
+ - lib/dwc_archive/xml_reader.rb
195
209
  - spec/files/broken.tar.gz
196
210
  - spec/files/data.tar.gz
197
211
  - spec/files/data.zip
198
212
  - spec/files/data_with_quotes.tar.gz
199
213
  - spec/files/eml.xml
200
214
  - spec/files/empty_coreid.tar.gz
201
- - spec/files/file with characters(3).gz
215
+ - spec/files/file with characters(3).tar.gz
202
216
  - spec/files/flat_list.tar.gz
217
+ - spec/files/generator_eml.xml
218
+ - spec/files/generator_meta.xml
203
219
  - spec/files/gnub.tar.gz
204
220
  - spec/files/invalid.tar.gz
205
221
  - spec/files/junk_dir_inside.zip
@@ -229,24 +245,23 @@ homepage: http://github.com/GlobalNamesArchitecture/dwc-archive
229
245
  licenses:
230
246
  - MIT
231
247
  metadata: {}
232
- post_install_message:
248
+ post_install_message:
233
249
  rdoc_options: []
234
250
  require_paths:
235
251
  - lib
236
252
  required_ruby_version: !ruby/object:Gem::Requirement
237
253
  requirements:
238
- - - '>='
254
+ - - ">="
239
255
  - !ruby/object:Gem::Version
240
- version: '0'
256
+ version: 2.6.0
241
257
  required_rubygems_version: !ruby/object:Gem::Requirement
242
258
  requirements:
243
- - - '>='
259
+ - - ">="
244
260
  - !ruby/object:Gem::Version
245
261
  version: '0'
246
262
  requirements: []
247
- rubyforge_project:
248
- rubygems_version: 2.0.14
249
- signing_key:
263
+ rubygems_version: 3.2.6
264
+ signing_key:
250
265
  specification_version: 4
251
266
  summary: Handler of Darwin Core Archive files
252
267
  test_files:
@@ -261,8 +276,10 @@ test_files:
261
276
  - spec/files/data_with_quotes.tar.gz
262
277
  - spec/files/eml.xml
263
278
  - spec/files/empty_coreid.tar.gz
264
- - spec/files/file with characters(3).gz
279
+ - spec/files/file with characters(3).tar.gz
265
280
  - spec/files/flat_list.tar.gz
281
+ - spec/files/generator_eml.xml
282
+ - spec/files/generator_meta.xml
266
283
  - spec/files/gnub.tar.gz
267
284
  - spec/files/invalid.tar.gz
268
285
  - spec/files/junk_dir_inside.zip