biodiversity 5.9.1 → 6.0.0
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 +4 -4
- data/.github/workflows/ruby.yml +44 -0
- data/.ruby-version +1 -1
- data/LICENSE +1 -1
- data/README.md +6 -6
- data/biodiversity.gemspec +1 -1
- data/ext/gnparser-linux +0 -0
- data/ext/gnparser-mac +0 -0
- data/ext/gnparser-win.exe +0 -0
- data/lib/biodiversity/parser/gnparser.rb +148 -0
- data/lib/biodiversity/parser.rb +11 -86
- data/lib/biodiversity/version.rb +2 -2
- data/lib/biodiversity.rb +0 -1
- data/spec/lib/biodiversity_spec.rb +6 -0
- data/spec/lib/parser_spec.rb +14 -0
- metadata +22 -23
- data/clib/linux/libgnparser.h +0 -103
- data/clib/linux/libgnparser.so +0 -0
- data/clib/mac/libgnparser.h +0 -103
- data/clib/mac/libgnparser.so +0 -0
- data/clib/win/libgnparser.h +0 -103
- data/clib/win/libgnparser.so +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 323ba157e2da0f89adff6455f76a193dfaf745e3ad2d93f8758aec1624fe97ee
|
4
|
+
data.tar.gz: aa54199f592c05913431b128e6396bafc7133ee23fad0c62e025e8fac8ae78de
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 30fc1c8f31ba3ade55a09d31657939503bd7dc3bcd024fa5e9abf6dffbf11cf989bf13ab661ab41407e18c59bf912c9e259f173a1e4295183c49a50870d49214
|
7
|
+
data.tar.gz: 93c0282ccabbcc634ff226c78c01ca6f3285bcf03427fbef89db045fa7553c98b142f4d9278e6b5c14e1e7853c96f5c1b56b68b04896f59444d7b6a320ff5a2f
|
@@ -0,0 +1,44 @@
|
|
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: Ruby
|
9
|
+
|
10
|
+
on:
|
11
|
+
push:
|
12
|
+
branches: [ master, pipe_approach ]
|
13
|
+
pull_request:
|
14
|
+
branches: [ master ]
|
15
|
+
|
16
|
+
jobs:
|
17
|
+
test:
|
18
|
+
|
19
|
+
runs-on: ${{ matrix.os }}
|
20
|
+
strategy:
|
21
|
+
matrix:
|
22
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
23
|
+
ruby: [2.6, 2.7, 3.0, 3.1, 3.2, 3.3]
|
24
|
+
fail-fast: false
|
25
|
+
|
26
|
+
steps:
|
27
|
+
- uses: actions/checkout@v4
|
28
|
+
- name: Set up Ruby
|
29
|
+
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
30
|
+
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
31
|
+
# uses: ruby/setup-ruby@v1
|
32
|
+
uses: ruby/setup-ruby@v1
|
33
|
+
with:
|
34
|
+
ruby-version: ${{ matrix.ruby }}
|
35
|
+
- name: Install dependencies
|
36
|
+
run: bundle install --jobs 4 --retry 3
|
37
|
+
- name: Show environment
|
38
|
+
run: gem environment
|
39
|
+
- name: Run tests
|
40
|
+
run: bundle exec rake
|
41
|
+
- name: Checking install works
|
42
|
+
run: rake install
|
43
|
+
- name: Check gem with IRB
|
44
|
+
run: cd && pwd && echo "require 'biodiversity'; Biodiversity::Parser.parse('Testidae')" | irb
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.3.
|
1
|
+
3.3.5
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -95,9 +95,9 @@ Biodiversity::Parser.parse(" Plantago major ")[:normalized]
|
|
95
95
|
# to get canonical form with or without infraspecies ranks, as well as
|
96
96
|
# stemmed version.
|
97
97
|
parsed = Biodiversity::Parser.parse("Seddera latifolia H. & S. var. latifolia")
|
98
|
-
parsed[:
|
99
|
-
parsed[:
|
100
|
-
parsed[:
|
98
|
+
parsed[:canonical][:full]
|
99
|
+
parsed[:canonical][:simple]
|
100
|
+
parsed[:canonical][:stem]
|
101
101
|
|
102
102
|
# to get detailed information about elements of the name
|
103
103
|
Biodiversity::Parser.parse("Pseudocercospora dendrobii (H.C. Burnett 1883) U. \
|
@@ -126,11 +126,11 @@ For example "Homo sapiens" should generate
|
|
126
126
|
|
127
127
|
## Copyright
|
128
128
|
|
129
|
-
Authors: [Dmitry Mozzherin][dimus]
|
129
|
+
Authors: [Dmitry Mozzherin][dimus], [Hernán Lucas Pereira][hernan]
|
130
130
|
|
131
|
-
Contributors: [Patrick Leary][pleary]
|
131
|
+
Contributors: [Patrick Leary][pleary]
|
132
132
|
|
133
|
-
Copyright (c) 2008-
|
133
|
+
Copyright (c) 2008-2024 Dmitry Mozzherin. See [LICENSE][license]
|
134
134
|
for further details.
|
135
135
|
|
136
136
|
[gem_svg]: https://badge.fury.io/rb/biodiversity.svg
|
data/biodiversity.gemspec
CHANGED
@@ -20,10 +20,10 @@ Gem::Specification.new do |gem|
|
|
20
20
|
|
21
21
|
gem.add_runtime_dependency 'ffi', '~> 1.15'
|
22
22
|
|
23
|
-
gem.add_development_dependency 'bundler', '~> 2.4'
|
24
23
|
gem.add_development_dependency 'byebug', '~> 11.1'
|
25
24
|
gem.add_development_dependency 'rake', '~> 13.0'
|
26
25
|
gem.add_development_dependency 'rspec', '~> 3.12'
|
27
26
|
gem.add_development_dependency 'rubocop', '~> 1.50'
|
27
|
+
gem.add_development_dependency 'rubocop-rubycw', '~> 0.1.6'
|
28
28
|
gem.add_development_dependency 'solargraph', '~> 0.49'
|
29
29
|
end
|
data/ext/gnparser-linux
ADDED
Binary file
|
data/ext/gnparser-mac
ADDED
Binary file
|
Binary file
|
@@ -0,0 +1,148 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'open3'
|
4
|
+
require 'csv'
|
5
|
+
|
6
|
+
module Biodiversity
|
7
|
+
# Parser provides a namespace for functions to parse scientific names.
|
8
|
+
module Parser
|
9
|
+
# gnparser abstract class interface
|
10
|
+
class GnParser
|
11
|
+
def parse(name)
|
12
|
+
sync do
|
13
|
+
push(name)
|
14
|
+
pull
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def parse_ary(ary)
|
19
|
+
sync do
|
20
|
+
count = ary.count
|
21
|
+
Thread.new do
|
22
|
+
ary.each { |n| push(n) }
|
23
|
+
end
|
24
|
+
|
25
|
+
res = []
|
26
|
+
count.times { res << pull }
|
27
|
+
res
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def initialize(extra_settings = '')
|
34
|
+
@semaphore = Mutex.new
|
35
|
+
@pid = nil
|
36
|
+
@extra_settings = extra_settings
|
37
|
+
end
|
38
|
+
|
39
|
+
def start_gnparser
|
40
|
+
platform_suffix =
|
41
|
+
case Gem.platforms[1].os
|
42
|
+
when 'linux'
|
43
|
+
'linux'
|
44
|
+
when 'darwin'
|
45
|
+
'mac'
|
46
|
+
when /^mingw\d{2}?$/
|
47
|
+
'win.exe'
|
48
|
+
else
|
49
|
+
raise "Unsupported platform: #{Gem.platforms[1].os}"
|
50
|
+
end
|
51
|
+
path = File.join(__dir__, '..', '..', '..',
|
52
|
+
'ext', "gnparser-#{platform_suffix}")
|
53
|
+
|
54
|
+
@stdin, @stdout = Open3.popen2(
|
55
|
+
"#{path} --format #{format} --details --quiet --stream --jobs 1 #{@extra_settings}"
|
56
|
+
)
|
57
|
+
|
58
|
+
init_gnparser
|
59
|
+
|
60
|
+
@pid = Process.pid
|
61
|
+
end
|
62
|
+
|
63
|
+
def sync
|
64
|
+
@semaphore.synchronize do
|
65
|
+
start_gnparser unless Process.pid == @pid
|
66
|
+
yield
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def retry_pipe(retries = 1)
|
71
|
+
yield
|
72
|
+
rescue Errno::EPIPE
|
73
|
+
if retries.zero?
|
74
|
+
@pid = nil
|
75
|
+
raise
|
76
|
+
else
|
77
|
+
start_gnparser
|
78
|
+
retries -= 1
|
79
|
+
retry
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def push(name)
|
84
|
+
name = clean_name(name)
|
85
|
+
retry_pipe { @stdin.puts(name) }
|
86
|
+
end
|
87
|
+
|
88
|
+
def pull
|
89
|
+
output = retry_pipe { @stdout.gets }
|
90
|
+
parse_output(output)
|
91
|
+
end
|
92
|
+
|
93
|
+
def clean_name(name)
|
94
|
+
name.gsub(/(\n|\r\n|\r)/, ' ')
|
95
|
+
end
|
96
|
+
|
97
|
+
def init_gnparser; end
|
98
|
+
|
99
|
+
# gnparser interface to CSV-formatted output
|
100
|
+
class Csv < self
|
101
|
+
def parse_output(output)
|
102
|
+
parsed = CSV.new(output).first
|
103
|
+
{
|
104
|
+
id: get_csv_value(parsed, 'Id'),
|
105
|
+
verbatim: get_csv_value(parsed, 'Verbatim'),
|
106
|
+
cardinality: get_csv_value(parsed, 'Cardinality'),
|
107
|
+
canonical: {
|
108
|
+
stemmed: get_csv_value(parsed, 'CanonicalStem'),
|
109
|
+
simple: get_csv_value(parsed, 'CanonicalSimple'),
|
110
|
+
full: get_csv_value(parsed, 'CanonicalFull')
|
111
|
+
},
|
112
|
+
authorship: get_csv_value(parsed, 'Authorship'),
|
113
|
+
year: get_csv_value(parsed, 'Year'),
|
114
|
+
quality: get_csv_value(parsed, 'Quality')&.to_i
|
115
|
+
}
|
116
|
+
end
|
117
|
+
|
118
|
+
def format
|
119
|
+
'csv'
|
120
|
+
end
|
121
|
+
|
122
|
+
def init_gnparser
|
123
|
+
@csv_mapping = {}
|
124
|
+
CSV.new(@stdout.gets).read[0].each.with_index do |header, index|
|
125
|
+
@csv_mapping[header] = index
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
def get_csv_value(csv, field_name)
|
130
|
+
csv[@csv_mapping[field_name]]
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
# gnparser interface to JSON-formatted output
|
135
|
+
class Compact < self
|
136
|
+
def parse_output(output)
|
137
|
+
JSON.parse(output, symbolize_names: true).tap { |o| o&.dig(:parserVersion)&.sub!(/^/, 'GNparser ') }
|
138
|
+
end
|
139
|
+
|
140
|
+
def format
|
141
|
+
'compact'
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
private_constant :GnParser
|
147
|
+
end
|
148
|
+
end
|
data/lib/biodiversity/parser.rb
CHANGED
@@ -1,100 +1,25 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
module CLib
|
5
|
-
extend FFI::Library
|
6
|
-
ffi_lib FFI::Library::LIBC
|
7
|
-
attach_function :free, [:pointer], :void
|
8
|
-
end
|
3
|
+
require_relative 'parser/gnparser'
|
9
4
|
|
10
5
|
module Biodiversity
|
11
6
|
# Parser provides a namespace for functions to parse scientific names.
|
12
7
|
module Parser
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
'win'
|
22
|
-
else
|
23
|
-
raise "Unsupported platform: #{Gem.platforms[1].os}"
|
24
|
-
end
|
25
|
-
ffi_lib File.join(__dir__, '..', '..', 'clib', platform, 'libgnparser.so')
|
26
|
-
POINTER_SIZE = FFI.type_size(:pointer)
|
27
|
-
|
28
|
-
callback(:parser_callback, %i[string], :void)
|
29
|
-
|
30
|
-
attach_function(:parse_go, :ParseToString,
|
31
|
-
%i[string string int int], :strptr)
|
32
|
-
attach_function(:parse_ary_go, :ParseAryToString,
|
33
|
-
%i[pointer int string int int], :strptr)
|
34
|
-
attach_function(:free_mem, :FreeMemory, %i[pointer], :void)
|
8
|
+
@compact_gnparser = {
|
9
|
+
false => GnParser::Compact.new,
|
10
|
+
true => GnParser::Compact.new('--cultivar')
|
11
|
+
}
|
12
|
+
@csv_gnparser = {
|
13
|
+
false => GnParser::Csv.new,
|
14
|
+
true => GnParser::Csv.new('--cultivar')
|
15
|
+
}
|
35
16
|
|
36
17
|
def self.parse(name, simple: false, with_cultivars: false)
|
37
|
-
|
38
|
-
with_details = simple ? 0 : 1
|
39
|
-
with_cultivars = with_cultivars ? 1 : 0
|
40
|
-
|
41
|
-
parsed, ptr = parse_go(name, format, with_details, with_cultivars)
|
42
|
-
free_mem(ptr)
|
43
|
-
output(parsed, simple)
|
18
|
+
(simple ? @csv_gnparser[!!with_cultivars] : @compact_gnparser[!!with_cultivars]).parse(name)
|
44
19
|
end
|
45
20
|
|
46
21
|
def self.parse_ary(ary, simple: false, with_cultivars: false)
|
47
|
-
|
48
|
-
with_details = simple ? 0 : 1
|
49
|
-
with_cultivars = with_cultivars ? 1 : 0
|
50
|
-
|
51
|
-
in_ptr = FFI::MemoryPointer.new(:pointer, ary.length)
|
52
|
-
in_ptr.write_array_of_pointer(
|
53
|
-
ary.map { |s| FFI::MemoryPointer.from_string(s) }
|
54
|
-
)
|
55
|
-
|
56
|
-
parsed, ptr = parse_ary_go(in_ptr, ary.length, format,
|
57
|
-
with_details, with_cultivars)
|
58
|
-
free_mem(ptr)
|
59
|
-
if simple
|
60
|
-
CSV.new(parsed.force_encoding('UTF-8')).map do |row|
|
61
|
-
csv_row(row)
|
62
|
-
end
|
63
|
-
else
|
64
|
-
JSON.parse(parsed, symbolize_names: true).map do |item|
|
65
|
-
item[:parserVersion] = Biodiversity.gnparser_version
|
66
|
-
item
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
def self.output(parsed, simple)
|
72
|
-
if simple
|
73
|
-
parsed = parsed.force_encoding('UTF-8')
|
74
|
-
csv = CSV.new(parsed)
|
75
|
-
row = csv.readlines[0]
|
76
|
-
csv_row(row)
|
77
|
-
else
|
78
|
-
parsed = JSON.parse(parsed, symbolize_names: true)
|
79
|
-
parsed[:parserVersion] = Biodiversity.gnparser_version
|
80
|
-
parsed
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
def self.csv_row(row)
|
85
|
-
{
|
86
|
-
id: row[0],
|
87
|
-
verbatim: row[1],
|
88
|
-
cardinality: row[2].to_i,
|
89
|
-
canonical: {
|
90
|
-
stem: row[3],
|
91
|
-
simple: row[4],
|
92
|
-
full: row[5]
|
93
|
-
},
|
94
|
-
authorship: row[6],
|
95
|
-
year: row[7],
|
96
|
-
quality: row[8].to_i
|
97
|
-
}
|
22
|
+
(simple ? @csv_gnparser[!!with_cultivars] : @compact_gnparser[!!with_cultivars]).parse_ary(ary)
|
98
23
|
end
|
99
24
|
end
|
100
25
|
end
|
data/lib/biodiversity/version.rb
CHANGED
data/lib/biodiversity.rb
CHANGED
@@ -6,4 +6,10 @@ describe Biodiversity do
|
|
6
6
|
expect(subject.version).to match(/\d+\.\d+\.\d+/)
|
7
7
|
end
|
8
8
|
end
|
9
|
+
describe 'gnparser_version' do
|
10
|
+
it 'matches bundled binary version' do
|
11
|
+
binary_version = Biodiversity::Parser.parse('')[:parserVersion].match(/\d.*$/).to_s
|
12
|
+
expect(subject.gnparser_version).to match("GNparser #{binary_version}")
|
13
|
+
end
|
14
|
+
end
|
9
15
|
end
|
data/spec/lib/parser_spec.rb
CHANGED
@@ -27,6 +27,12 @@ describe Biodiversity::Parser do
|
|
27
27
|
expect(parsed[:normalized]).to be_nil
|
28
28
|
end
|
29
29
|
|
30
|
+
it 'treats newlines as whitespaces' do # Requirement for IPC to work
|
31
|
+
parsed = subject.parse("\nHomo\r\nsapiens\nLinn.\r1758\n")
|
32
|
+
expect(parsed[:verbatim]).to eq ' Homo sapiens Linn. 1758 '
|
33
|
+
expect(parsed[:normalized]).to eq parsed[:verbatim].strip
|
34
|
+
end
|
35
|
+
|
30
36
|
it 'parses botanical cultivars in full form' do
|
31
37
|
parsed = subject.parse('Aus bus "White Russian"',
|
32
38
|
simple: false, with_cultivars: true)
|
@@ -79,5 +85,13 @@ describe Biodiversity::Parser do
|
|
79
85
|
expect(parsed[2][:quality]).to eq 1
|
80
86
|
expect(parsed[2][:parserVersion]).to match(/GNparser/)
|
81
87
|
end
|
88
|
+
|
89
|
+
it 'treats newlines as whitespaces' do # Requirement for IPC to work
|
90
|
+
parsed = subject.parse_ary(["\nHomo\r\nsapiens\nLinn.\r1758\n"])
|
91
|
+
expect(parsed.length).to eq 1
|
92
|
+
parsed = parsed.first
|
93
|
+
expect(parsed[:verbatim]).to eq ' Homo sapiens Linn. 1758 '
|
94
|
+
expect(parsed[:normalized]).to eq parsed[:verbatim].strip
|
95
|
+
end
|
82
96
|
end
|
83
97
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: biodiversity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 6.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: 2024-
|
11
|
+
date: 2024-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|
@@ -24,20 +24,6 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.15'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: bundler
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '2.4'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '2.4'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: byebug
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +80,20 @@ dependencies:
|
|
94
80
|
- - "~>"
|
95
81
|
- !ruby/object:Gem::Version
|
96
82
|
version: '1.50'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rubocop-rubycw
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.1.6
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.1.6
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: solargraph
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,6 +114,7 @@ executables: []
|
|
114
114
|
extensions: []
|
115
115
|
extra_rdoc_files: []
|
116
116
|
files:
|
117
|
+
- ".github/workflows/ruby.yml"
|
117
118
|
- ".gitignore"
|
118
119
|
- ".rspec"
|
119
120
|
- ".rubocop.yml"
|
@@ -125,14 +126,12 @@ files:
|
|
125
126
|
- README.md
|
126
127
|
- Rakefile
|
127
128
|
- biodiversity.gemspec
|
128
|
-
-
|
129
|
-
-
|
130
|
-
-
|
131
|
-
- clib/mac/libgnparser.so
|
132
|
-
- clib/win/libgnparser.h
|
133
|
-
- clib/win/libgnparser.so
|
129
|
+
- ext/gnparser-linux
|
130
|
+
- ext/gnparser-mac
|
131
|
+
- ext/gnparser-win.exe
|
134
132
|
- lib/biodiversity.rb
|
135
133
|
- lib/biodiversity/parser.rb
|
134
|
+
- lib/biodiversity/parser/gnparser.rb
|
136
135
|
- lib/biodiversity/version.rb
|
137
136
|
- spec/lib/biodiversity_spec.rb
|
138
137
|
- spec/lib/parser_spec.rb
|
@@ -156,7 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
156
155
|
- !ruby/object:Gem::Version
|
157
156
|
version: '0'
|
158
157
|
requirements: []
|
159
|
-
rubygems_version: 3.5.
|
158
|
+
rubygems_version: 3.5.16
|
160
159
|
signing_key:
|
161
160
|
specification_version: 4
|
162
161
|
summary: Parser of scientific names
|
data/clib/linux/libgnparser.h
DELETED
@@ -1,103 +0,0 @@
|
|
1
|
-
/* Code generated by cmd/cgo; DO NOT EDIT. */
|
2
|
-
|
3
|
-
/* package github.com/gnames/gnparser/binding */
|
4
|
-
|
5
|
-
|
6
|
-
#line 1 "cgo-builtin-export-prolog"
|
7
|
-
|
8
|
-
#include <stddef.h>
|
9
|
-
|
10
|
-
#ifndef GO_CGO_EXPORT_PROLOGUE_H
|
11
|
-
#define GO_CGO_EXPORT_PROLOGUE_H
|
12
|
-
|
13
|
-
#ifndef GO_CGO_GOSTRING_TYPEDEF
|
14
|
-
typedef struct { const char *p; ptrdiff_t n; } _GoString_;
|
15
|
-
#endif
|
16
|
-
|
17
|
-
#endif
|
18
|
-
|
19
|
-
/* Start of preamble from import "C" comments. */
|
20
|
-
|
21
|
-
|
22
|
-
#line 5 "main.go"
|
23
|
-
|
24
|
-
#include "stdlib.h"
|
25
|
-
|
26
|
-
#line 1 "cgo-generated-wrapper"
|
27
|
-
|
28
|
-
|
29
|
-
/* End of preamble from import "C" comments. */
|
30
|
-
|
31
|
-
|
32
|
-
/* Start of boilerplate cgo prologue. */
|
33
|
-
#line 1 "cgo-gcc-export-header-prolog"
|
34
|
-
|
35
|
-
#ifndef GO_CGO_PROLOGUE_H
|
36
|
-
#define GO_CGO_PROLOGUE_H
|
37
|
-
|
38
|
-
typedef signed char GoInt8;
|
39
|
-
typedef unsigned char GoUint8;
|
40
|
-
typedef short GoInt16;
|
41
|
-
typedef unsigned short GoUint16;
|
42
|
-
typedef int GoInt32;
|
43
|
-
typedef unsigned int GoUint32;
|
44
|
-
typedef long long GoInt64;
|
45
|
-
typedef unsigned long long GoUint64;
|
46
|
-
typedef GoInt64 GoInt;
|
47
|
-
typedef GoUint64 GoUint;
|
48
|
-
typedef size_t GoUintptr;
|
49
|
-
typedef float GoFloat32;
|
50
|
-
typedef double GoFloat64;
|
51
|
-
#ifdef _MSC_VER
|
52
|
-
#include <complex.h>
|
53
|
-
typedef _Fcomplex GoComplex64;
|
54
|
-
typedef _Dcomplex GoComplex128;
|
55
|
-
#else
|
56
|
-
typedef float _Complex GoComplex64;
|
57
|
-
typedef double _Complex GoComplex128;
|
58
|
-
#endif
|
59
|
-
|
60
|
-
/*
|
61
|
-
static assertion to make sure the file is being used on architecture
|
62
|
-
at least with matching size of GoInt.
|
63
|
-
*/
|
64
|
-
typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1];
|
65
|
-
|
66
|
-
#ifndef GO_CGO_GOSTRING_TYPEDEF
|
67
|
-
typedef _GoString_ GoString;
|
68
|
-
#endif
|
69
|
-
typedef void *GoMap;
|
70
|
-
typedef void *GoChan;
|
71
|
-
typedef struct { void *t; void *v; } GoInterface;
|
72
|
-
typedef struct { void *data; GoInt len; GoInt cap; } GoSlice;
|
73
|
-
|
74
|
-
#endif
|
75
|
-
|
76
|
-
/* End of boilerplate cgo prologue. */
|
77
|
-
|
78
|
-
#ifdef __cplusplus
|
79
|
-
extern "C" {
|
80
|
-
#endif
|
81
|
-
|
82
|
-
|
83
|
-
// ParseToString function takes a name-string, desired format, a withDetails
|
84
|
-
// flag as 0|1 integer. It parses the name-string to either JSON, or a CSV
|
85
|
-
// string, depending on the desired format. Format argument can take values of
|
86
|
-
// 'csv', 'compact', 'pretty'. If withDetails argument is 0, additional
|
87
|
-
// parsed details are ommited, if it is 1 -- they are included.
|
88
|
-
// true.
|
89
|
-
extern char* ParseToString(char* name, char* f, int details, int cultivars, int diaereses);
|
90
|
-
|
91
|
-
// FreeMemory takes a string pointer and frees its memory.
|
92
|
-
extern void FreeMemory(char* p);
|
93
|
-
|
94
|
-
// ParseAryToString function takes an array of names, parsing format, and a
|
95
|
-
// withDetails flag as 0|1 integer. Parsed outputs are sent as a string in
|
96
|
-
// either CSV or JSON format. Format argument can take values of 'csv',
|
97
|
-
// 'compact', or 'pretty'. For withDetails argument 0 means false, 1 means
|
98
|
-
// true.
|
99
|
-
extern char* ParseAryToString(char** in, int length, char* f, int details, int cultivars, int diaereses);
|
100
|
-
|
101
|
-
#ifdef __cplusplus
|
102
|
-
}
|
103
|
-
#endif
|
data/clib/linux/libgnparser.so
DELETED
Binary file
|
data/clib/mac/libgnparser.h
DELETED
@@ -1,103 +0,0 @@
|
|
1
|
-
/* Code generated by cmd/cgo; DO NOT EDIT. */
|
2
|
-
|
3
|
-
/* package github.com/gnames/gnparser/binding */
|
4
|
-
|
5
|
-
|
6
|
-
#line 1 "cgo-builtin-export-prolog"
|
7
|
-
|
8
|
-
#include <stddef.h>
|
9
|
-
|
10
|
-
#ifndef GO_CGO_EXPORT_PROLOGUE_H
|
11
|
-
#define GO_CGO_EXPORT_PROLOGUE_H
|
12
|
-
|
13
|
-
#ifndef GO_CGO_GOSTRING_TYPEDEF
|
14
|
-
typedef struct { const char *p; ptrdiff_t n; } _GoString_;
|
15
|
-
#endif
|
16
|
-
|
17
|
-
#endif
|
18
|
-
|
19
|
-
/* Start of preamble from import "C" comments. */
|
20
|
-
|
21
|
-
|
22
|
-
#line 5 "main.go"
|
23
|
-
|
24
|
-
#include "stdlib.h"
|
25
|
-
|
26
|
-
#line 1 "cgo-generated-wrapper"
|
27
|
-
|
28
|
-
|
29
|
-
/* End of preamble from import "C" comments. */
|
30
|
-
|
31
|
-
|
32
|
-
/* Start of boilerplate cgo prologue. */
|
33
|
-
#line 1 "cgo-gcc-export-header-prolog"
|
34
|
-
|
35
|
-
#ifndef GO_CGO_PROLOGUE_H
|
36
|
-
#define GO_CGO_PROLOGUE_H
|
37
|
-
|
38
|
-
typedef signed char GoInt8;
|
39
|
-
typedef unsigned char GoUint8;
|
40
|
-
typedef short GoInt16;
|
41
|
-
typedef unsigned short GoUint16;
|
42
|
-
typedef int GoInt32;
|
43
|
-
typedef unsigned int GoUint32;
|
44
|
-
typedef long long GoInt64;
|
45
|
-
typedef unsigned long long GoUint64;
|
46
|
-
typedef GoInt64 GoInt;
|
47
|
-
typedef GoUint64 GoUint;
|
48
|
-
typedef size_t GoUintptr;
|
49
|
-
typedef float GoFloat32;
|
50
|
-
typedef double GoFloat64;
|
51
|
-
#ifdef _MSC_VER
|
52
|
-
#include <complex.h>
|
53
|
-
typedef _Fcomplex GoComplex64;
|
54
|
-
typedef _Dcomplex GoComplex128;
|
55
|
-
#else
|
56
|
-
typedef float _Complex GoComplex64;
|
57
|
-
typedef double _Complex GoComplex128;
|
58
|
-
#endif
|
59
|
-
|
60
|
-
/*
|
61
|
-
static assertion to make sure the file is being used on architecture
|
62
|
-
at least with matching size of GoInt.
|
63
|
-
*/
|
64
|
-
typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1];
|
65
|
-
|
66
|
-
#ifndef GO_CGO_GOSTRING_TYPEDEF
|
67
|
-
typedef _GoString_ GoString;
|
68
|
-
#endif
|
69
|
-
typedef void *GoMap;
|
70
|
-
typedef void *GoChan;
|
71
|
-
typedef struct { void *t; void *v; } GoInterface;
|
72
|
-
typedef struct { void *data; GoInt len; GoInt cap; } GoSlice;
|
73
|
-
|
74
|
-
#endif
|
75
|
-
|
76
|
-
/* End of boilerplate cgo prologue. */
|
77
|
-
|
78
|
-
#ifdef __cplusplus
|
79
|
-
extern "C" {
|
80
|
-
#endif
|
81
|
-
|
82
|
-
|
83
|
-
// ParseToString function takes a name-string, desired format, a withDetails
|
84
|
-
// flag as 0|1 integer. It parses the name-string to either JSON, or a CSV
|
85
|
-
// string, depending on the desired format. Format argument can take values of
|
86
|
-
// 'csv', 'compact', 'pretty'. If withDetails argument is 0, additional
|
87
|
-
// parsed details are ommited, if it is 1 -- they are included.
|
88
|
-
// true.
|
89
|
-
extern char* ParseToString(char* name, char* f, int details, int cultivars, int diaereses);
|
90
|
-
|
91
|
-
// FreeMemory takes a string pointer and frees its memory.
|
92
|
-
extern void FreeMemory(char* p);
|
93
|
-
|
94
|
-
// ParseAryToString function takes an array of names, parsing format, and a
|
95
|
-
// withDetails flag as 0|1 integer. Parsed outputs are sent as a string in
|
96
|
-
// either CSV or JSON format. Format argument can take values of 'csv',
|
97
|
-
// 'compact', or 'pretty'. For withDetails argument 0 means false, 1 means
|
98
|
-
// true.
|
99
|
-
extern char* ParseAryToString(char** in, int length, char* f, int details, int cultivars, int diaereses);
|
100
|
-
|
101
|
-
#ifdef __cplusplus
|
102
|
-
}
|
103
|
-
#endif
|
data/clib/mac/libgnparser.so
DELETED
Binary file
|
data/clib/win/libgnparser.h
DELETED
@@ -1,103 +0,0 @@
|
|
1
|
-
/* Code generated by cmd/cgo; DO NOT EDIT. */
|
2
|
-
|
3
|
-
/* package github.com/gnames/gnparser/binding */
|
4
|
-
|
5
|
-
|
6
|
-
#line 1 "cgo-builtin-export-prolog"
|
7
|
-
|
8
|
-
#include <stddef.h>
|
9
|
-
|
10
|
-
#ifndef GO_CGO_EXPORT_PROLOGUE_H
|
11
|
-
#define GO_CGO_EXPORT_PROLOGUE_H
|
12
|
-
|
13
|
-
#ifndef GO_CGO_GOSTRING_TYPEDEF
|
14
|
-
typedef struct { const char *p; ptrdiff_t n; } _GoString_;
|
15
|
-
#endif
|
16
|
-
|
17
|
-
#endif
|
18
|
-
|
19
|
-
/* Start of preamble from import "C" comments. */
|
20
|
-
|
21
|
-
|
22
|
-
#line 5 "main.go"
|
23
|
-
|
24
|
-
#include "stdlib.h"
|
25
|
-
|
26
|
-
#line 1 "cgo-generated-wrapper"
|
27
|
-
|
28
|
-
|
29
|
-
/* End of preamble from import "C" comments. */
|
30
|
-
|
31
|
-
|
32
|
-
/* Start of boilerplate cgo prologue. */
|
33
|
-
#line 1 "cgo-gcc-export-header-prolog"
|
34
|
-
|
35
|
-
#ifndef GO_CGO_PROLOGUE_H
|
36
|
-
#define GO_CGO_PROLOGUE_H
|
37
|
-
|
38
|
-
typedef signed char GoInt8;
|
39
|
-
typedef unsigned char GoUint8;
|
40
|
-
typedef short GoInt16;
|
41
|
-
typedef unsigned short GoUint16;
|
42
|
-
typedef int GoInt32;
|
43
|
-
typedef unsigned int GoUint32;
|
44
|
-
typedef long long GoInt64;
|
45
|
-
typedef unsigned long long GoUint64;
|
46
|
-
typedef GoInt64 GoInt;
|
47
|
-
typedef GoUint64 GoUint;
|
48
|
-
typedef size_t GoUintptr;
|
49
|
-
typedef float GoFloat32;
|
50
|
-
typedef double GoFloat64;
|
51
|
-
#ifdef _MSC_VER
|
52
|
-
#include <complex.h>
|
53
|
-
typedef _Fcomplex GoComplex64;
|
54
|
-
typedef _Dcomplex GoComplex128;
|
55
|
-
#else
|
56
|
-
typedef float _Complex GoComplex64;
|
57
|
-
typedef double _Complex GoComplex128;
|
58
|
-
#endif
|
59
|
-
|
60
|
-
/*
|
61
|
-
static assertion to make sure the file is being used on architecture
|
62
|
-
at least with matching size of GoInt.
|
63
|
-
*/
|
64
|
-
typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1];
|
65
|
-
|
66
|
-
#ifndef GO_CGO_GOSTRING_TYPEDEF
|
67
|
-
typedef _GoString_ GoString;
|
68
|
-
#endif
|
69
|
-
typedef void *GoMap;
|
70
|
-
typedef void *GoChan;
|
71
|
-
typedef struct { void *t; void *v; } GoInterface;
|
72
|
-
typedef struct { void *data; GoInt len; GoInt cap; } GoSlice;
|
73
|
-
|
74
|
-
#endif
|
75
|
-
|
76
|
-
/* End of boilerplate cgo prologue. */
|
77
|
-
|
78
|
-
#ifdef __cplusplus
|
79
|
-
extern "C" {
|
80
|
-
#endif
|
81
|
-
|
82
|
-
|
83
|
-
// ParseToString function takes a name-string, desired format, a withDetails
|
84
|
-
// flag as 0|1 integer. It parses the name-string to either JSON, or a CSV
|
85
|
-
// string, depending on the desired format. Format argument can take values of
|
86
|
-
// 'csv', 'compact', 'pretty'. If withDetails argument is 0, additional
|
87
|
-
// parsed details are ommited, if it is 1 -- they are included.
|
88
|
-
// true.
|
89
|
-
extern __declspec(dllexport) char* ParseToString(char* name, char* f, int details, int cultivars, int diaereses);
|
90
|
-
|
91
|
-
// FreeMemory takes a string pointer and frees its memory.
|
92
|
-
extern __declspec(dllexport) void FreeMemory(char* p);
|
93
|
-
|
94
|
-
// ParseAryToString function takes an array of names, parsing format, and a
|
95
|
-
// withDetails flag as 0|1 integer. Parsed outputs are sent as a string in
|
96
|
-
// either CSV or JSON format. Format argument can take values of 'csv',
|
97
|
-
// 'compact', or 'pretty'. For withDetails argument 0 means false, 1 means
|
98
|
-
// true.
|
99
|
-
extern __declspec(dllexport) char* ParseAryToString(char** in, int length, char* f, int details, int cultivars, int diaereses);
|
100
|
-
|
101
|
-
#ifdef __cplusplus
|
102
|
-
}
|
103
|
-
#endif
|
data/clib/win/libgnparser.so
DELETED
Binary file
|