biodiversity 3.5.1 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +9 -6
  4. data/.ruby-version +1 -1
  5. data/.travis.yml +1 -6
  6. data/CHANGELOG +3 -0
  7. data/Gemfile +2 -0
  8. data/README.md +37 -178
  9. data/Rakefile +15 -48
  10. data/biodiversity.gemspec +18 -21
  11. data/clib/linux/libgnparser.h +93 -0
  12. data/clib/linux/libgnparser.so +0 -0
  13. data/clib/mac/libgnparser.h +93 -0
  14. data/clib/mac/libgnparser.so +0 -0
  15. data/lib/biodiversity.rb +4 -9
  16. data/lib/biodiversity/parser.rb +65 -281
  17. data/lib/biodiversity/version.rb +8 -1
  18. data/spec/lib/biodiversity_spec.rb +9 -0
  19. data/spec/lib/parser_spec.rb +38 -0
  20. data/spec/spec_helper.rb +4 -81
  21. metadata +27 -102
  22. data/.byebug_history +0 -18
  23. data/.document +0 -5
  24. data/examples/socket_client.rb +0 -25
  25. data/lib/biodiversity/guid.rb +0 -1
  26. data/lib/biodiversity/guid/lsid.rb +0 -16
  27. data/lib/biodiversity/parser/scientific_name_canonical.rb +0 -528
  28. data/lib/biodiversity/parser/scientific_name_canonical.treetop +0 -120
  29. data/lib/biodiversity/parser/scientific_name_clean.rb +0 -8991
  30. data/lib/biodiversity/parser/scientific_name_clean.treetop +0 -1632
  31. data/lib/biodiversity/parser/scientific_name_dirty.rb +0 -1298
  32. data/lib/biodiversity/parser/scientific_name_dirty.treetop +0 -264
  33. data/spec/biodiversity_spec.rb +0 -11
  34. data/spec/files/test_data.txt +0 -490
  35. data/spec/files/todo.txt +0 -55
  36. data/spec/guid/lsid.spec.rb +0 -15
  37. data/spec/parser/scientific_name_canonical_spec.rb +0 -36
  38. data/spec/parser/scientific_name_clean_spec.rb +0 -1137
  39. data/spec/parser/scientific_name_dirty_spec.rb +0 -165
  40. data/spec/parser/scientific_name_spec.rb +0 -193
@@ -1,3 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Biodiversity module provides a namespace for scientific name parser.
1
4
  module Biodiversity
2
- VERSION = "3.5.1"
5
+ VERSION = '4.0.0'
6
+
7
+ def self.version
8
+ VERSION
9
+ end
3
10
  end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe Biodiversity do
4
+ describe 'version' do
5
+ it 'returns version of Biodiversity gem' do
6
+ expect(subject.version).to match(/\d+\.\d+\.\d+/)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ # s frozen_string_literal: true
4
+
5
+ describe Biodiversity::Parser do
6
+ describe('parse') do
7
+ it 'parses name in simple format' do
8
+ parsed = subject.parse('Homo sapiens Linn.', true)
9
+ expect(parsed[:canonicalName][:simple]).to eq 'Homo sapiens'
10
+ expect(parsed[:normalized]).to be_nil
11
+ end
12
+
13
+ it 'parsed name in full format' do
14
+ parsed = subject.parse('Homo sapiens Linn.')
15
+ expect(parsed[:canonicalName][:simple]).to eq 'Homo sapiens'
16
+ expect(parsed[:normalized]).to eq 'Homo sapiens Linn.'
17
+ end
18
+ end
19
+
20
+ describe('parse_ary') do
21
+ it 'parses names in simple format' do
22
+ parsed = subject.parse_ary(['Homo sapiens Linn.', 'Pardosa moesta'], true)
23
+ expect(parsed[0][:canonicalName][:simple]).to eq 'Homo sapiens'
24
+ expect(parsed[1][:canonicalName][:simple]).to eq 'Pardosa moesta'
25
+ expect(parsed[0][:normalized]).to be_nil
26
+ end
27
+
28
+ it 'parsed name in full format' do
29
+ parsed = subject.parse_ary(
30
+ ['Homo sapiens Linn.', 'Tobacco Mosaic Virus']
31
+ )
32
+ expect(parsed[0][:canonicalName][:simple]).to eq 'Homo sapiens'
33
+ expect(parsed[0][:normalized]).to eq 'Homo sapiens Linn.'
34
+ expect(parsed[1][:parsed]).to be false
35
+ expect(parsed[1][:virus]).to be true
36
+ end
37
+ end
38
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,82 +1,5 @@
1
- require "yaml"
2
- require "treetop"
3
- require "json"
4
- require "biodiversity"
5
- require "webmock/rspec"
6
-
7
-
8
- RSpec.configure do |c|
9
- c.mock_with :rr
10
- end
11
-
12
- dir = File.dirname(__FILE__)
13
- Treetop.load(File.expand_path(File.join(dir,
14
- "../lib/biodiversity/parser/scientific_name_clean")))
15
- Treetop.load(File.expand_path(File.join(dir,
16
- "../lib/biodiversity/parser/scientific_name_dirty")))
17
- Treetop.load(File.expand_path(File.join(dir,
18
- "../lib/biodiversity/parser/scientific_name_canonical")))
19
-
20
- PARSER_TEST_VERSION = "test_version"
21
-
22
- def set_parser(parser)
23
- @parser = parser
24
- end
25
-
26
- def parse(input)
27
- @parser.parse(input)
28
- end
29
-
30
- def value(input)
31
- parse(input).value
32
- end
33
-
34
- def canonical(input)
35
- parse(input).canonical
36
- end
37
-
38
- def details(input)
39
- parse(input).details
40
- end
41
-
42
- def pos(input)
43
- parse(input).pos
44
- end
45
-
46
- def json(input)
47
- parse(input).
48
- to_json.gsub(/"parser_version":"[^"]*"/,
49
- %Q["parser_version":"#{PARSER_TEST_VERSION}"])
50
- end
51
-
52
- def debug(input)
53
- res = parse(input)
54
- puts "<pre>"
55
- if res
56
- puts "success!"
57
- puts res.inspect
58
- else
59
- puts input
60
- val = @parser.failure_reason.to_s.match(/column [0-9]*/).
61
- to_s.gsub(/column /, "").to_i
62
- print ("-" * (val - 1))
63
- print "^ Computer says 'ni'!\n"
64
- puts @parser.failure_reason
65
- puts @parser.to_yaml
66
- end
67
- puts "</pre>"
68
- end
69
-
70
- def read_test_file
71
- f = open(File.expand_path("../files/test_data.txt", __FILE__))
72
- f.each do |line|
73
- name, jsn = line.split("|")
74
- if line.match(/^\s*#/) == nil && name && jsn
75
- yield({ name: name, jsn: jsn })
76
- else
77
- yield({ comment: line })
78
- end
79
- end
80
- end
81
-
1
+ # frozen_string_literal: true
82
2
 
3
+ require 'rspec'
4
+ require 'json'
5
+ require 'biodiversity'
metadata CHANGED
@@ -1,165 +1,105 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: biodiversity
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.1
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitry Mozzherin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-14 00:00:00.000000000 Z
11
+ date: 2019-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: treetop
14
+ name: ffi
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.6'
19
+ version: '1.11'
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'
27
- - !ruby/object:Gem::Dependency
28
- name: parallel
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '1.12'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '1.12'
41
- - !ruby/object:Gem::Dependency
42
- name: unicode_utils
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '1.4'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '1.4'
55
- - !ruby/object:Gem::Dependency
56
- name: gn_uuid
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '0.5'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '0.5'
26
+ version: '1.11'
69
27
  - !ruby/object:Gem::Dependency
70
28
  name: bundler
71
29
  requirement: !ruby/object:Gem::Requirement
72
30
  requirements:
73
31
  - - "~>"
74
32
  - !ruby/object:Gem::Version
75
- version: '1.16'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '1.16'
83
- - !ruby/object:Gem::Dependency
84
- name: rake
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '12.3'
33
+ version: '2.0'
90
34
  type: :development
91
35
  prerelease: false
92
36
  version_requirements: !ruby/object:Gem::Requirement
93
37
  requirements:
94
38
  - - "~>"
95
39
  - !ruby/object:Gem::Version
96
- version: '12.3'
40
+ version: '2.0'
97
41
  - !ruby/object:Gem::Dependency
98
- name: rspec
42
+ name: byebug
99
43
  requirement: !ruby/object:Gem::Requirement
100
44
  requirements:
101
45
  - - "~>"
102
46
  - !ruby/object:Gem::Version
103
- version: '3.7'
47
+ version: '11.0'
104
48
  type: :development
105
49
  prerelease: false
106
50
  version_requirements: !ruby/object:Gem::Requirement
107
51
  requirements:
108
52
  - - "~>"
109
53
  - !ruby/object:Gem::Version
110
- version: '3.7'
54
+ version: '11.0'
111
55
  - !ruby/object:Gem::Dependency
112
- name: webmock
56
+ name: rake
113
57
  requirement: !ruby/object:Gem::Requirement
114
58
  requirements:
115
59
  - - "~>"
116
60
  - !ruby/object:Gem::Version
117
- version: '3.3'
61
+ version: '13.0'
118
62
  type: :development
119
63
  prerelease: false
120
64
  version_requirements: !ruby/object:Gem::Requirement
121
65
  requirements:
122
66
  - - "~>"
123
67
  - !ruby/object:Gem::Version
124
- version: '3.3'
68
+ version: '13.0'
125
69
  - !ruby/object:Gem::Dependency
126
- name: rr
70
+ name: rspec
127
71
  requirement: !ruby/object:Gem::Requirement
128
72
  requirements:
129
73
  - - "~>"
130
74
  - !ruby/object:Gem::Version
131
- version: '1.2'
75
+ version: '3.9'
132
76
  type: :development
133
77
  prerelease: false
134
78
  version_requirements: !ruby/object:Gem::Requirement
135
79
  requirements:
136
80
  - - "~>"
137
81
  - !ruby/object:Gem::Version
138
- version: '1.2'
82
+ version: '3.9'
139
83
  - !ruby/object:Gem::Dependency
140
84
  name: rubocop
141
85
  requirement: !ruby/object:Gem::Requirement
142
86
  requirements:
143
87
  - - "~>"
144
88
  - !ruby/object:Gem::Version
145
- version: '0.52'
89
+ version: '0.76'
146
90
  type: :development
147
91
  prerelease: false
148
92
  version_requirements: !ruby/object:Gem::Requirement
149
93
  requirements:
150
94
  - - "~>"
151
95
  - !ruby/object:Gem::Version
152
- version: '0.52'
153
- description: Tools for biodiversity informatics
96
+ version: '0.76'
97
+ description: Parsing tool for biodiversity informatics
154
98
  email: dmozzherin@gmail.com
155
- executables:
156
- - nnparse
157
- - parserver
99
+ executables: []
158
100
  extensions: []
159
101
  extra_rdoc_files: []
160
102
  files:
161
- - ".byebug_history"
162
- - ".document"
163
103
  - ".gitignore"
164
104
  - ".rspec"
165
105
  - ".rubocop.yml"
@@ -170,31 +110,16 @@ files:
170
110
  - LICENSE
171
111
  - README.md
172
112
  - Rakefile
173
- - bin/nnparse
174
- - bin/parserver
175
113
  - biodiversity.gemspec
176
- - examples/socket_client.rb
114
+ - clib/linux/libgnparser.h
115
+ - clib/linux/libgnparser.so
116
+ - clib/mac/libgnparser.h
117
+ - clib/mac/libgnparser.so
177
118
  - lib/biodiversity.rb
178
- - lib/biodiversity/guid.rb
179
- - lib/biodiversity/guid/lsid.rb
180
119
  - lib/biodiversity/parser.rb
181
- - lib/biodiversity/parser/scientific_name_canonical.rb
182
- - lib/biodiversity/parser/scientific_name_canonical.treetop
183
- - lib/biodiversity/parser/scientific_name_clean.rb
184
- - lib/biodiversity/parser/scientific_name_clean.treetop
185
- - lib/biodiversity/parser/scientific_name_dirty.rb
186
- - lib/biodiversity/parser/scientific_name_dirty.treetop
187
120
  - lib/biodiversity/version.rb
188
- - pkg/.gitkeep
189
- - spec/biodiversity_spec.rb
190
- - spec/files/lsid.xml
191
- - spec/files/test_data.txt
192
- - spec/files/todo.txt
193
- - spec/guid/lsid.spec.rb
194
- - spec/parser/scientific_name_canonical_spec.rb
195
- - spec/parser/scientific_name_clean_spec.rb
196
- - spec/parser/scientific_name_dirty_spec.rb
197
- - spec/parser/scientific_name_spec.rb
121
+ - spec/lib/biodiversity_spec.rb
122
+ - spec/lib/parser_spec.rb
198
123
  - spec/spec_helper.rb
199
124
  homepage: https://github.com/GlobalNamesArchitecture/biodiversity
200
125
  licenses:
@@ -216,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
216
141
  version: '0'
217
142
  requirements: []
218
143
  rubyforge_project:
219
- rubygems_version: 2.6.14.1
144
+ rubygems_version: 2.7.6.2
220
145
  signing_key:
221
146
  specification_version: 4
222
147
  summary: Parser of scientific names
data/.byebug_history DELETED
@@ -1,18 +0,0 @@
1
- q
2
- res[:scientificName][:tail]
3
- res[:scientificName]
4
- q
5
- res[:tail]
6
- res[:scientificName][:tail]
7
- res[:scientificName]
8
- res
9
- c
10
- q
11
- res
12
- q
13
- res
14
- q
15
- @ss
16
- @2tt
17
- @tail
18
- res
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require 'socket'
3
-
4
- host = 'localhost'
5
- port = 4334
6
-
7
- f = open('10000_names.txt')
8
- w = open('output.txt', 'w')
9
- s = TCPSocket.open(host, port)
10
-
11
- f.each_with_index do |line, i|
12
- puts i if i % 1000 == 0
13
- line = line.strip
14
- s.puts(line.strip)
15
- res = s.gets
16
- if res && res.split(" ").size > 3
17
- res = res.strip
18
- w.write(line + "\n")
19
- w.write(res + "\n")
20
- w.write("\n")
21
- end
22
- end
23
-
24
- s.close
25
-
@@ -1 +0,0 @@
1
- require_relative 'guid/lsid'
@@ -1,16 +0,0 @@
1
- class LsidResolver
2
- def self.resolve(lsid)
3
- http_get_rdf(lsid)
4
- end
5
-
6
- protected
7
- def self.http_get_rdf(lsid)
8
- rdf = ''
9
- open(Biodiversity::LSID_RESOLVER_URL + lsid) do |f|
10
- f.each do |line|
11
- rdf += line if !line.strip.blank?
12
- end
13
- end
14
- rdf
15
- end
16
- end