gn_crossmap 0.1.8 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 86fb5fd0af52a9d6f090087144dba5bd68f1b82b
4
- data.tar.gz: 6c88b19b64806e01af435ba78014e95dce4bf48d
3
+ metadata.gz: f1579ecd4d04e966c241d7aa9dab3723b180d056
4
+ data.tar.gz: 6454a5f074dc187af6d179556bb5396061529c87
5
5
  SHA512:
6
- metadata.gz: 71628a47f7a41d1bc3d5444e029d36c3b1698eee93328ec1b7bcefc4c5c9bdcb60a0a892c9db851ba5c374e1b4172701f1cb22e0da701bf8e786c99fd3946db8
7
- data.tar.gz: d9eb89cafb55e004e3b3d039cea5ed3471a21c24e4dac3c4a350254c1248eb6257004a82af48aac9a6071bcf1bc860c680351760649b5966525146394c19fef3
6
+ metadata.gz: b11057d8d58b54ec1c2450844b97991280291c8e71bc8cfc9d094e4b41a25619faa673937fe0571b189c37c052a65e7bf00b8052c4e2b1295a39f198b74df4a9
7
+ data.tar.gz: 743a2a8d8f7ffc6608b1350cf56fde6ad4c8456155ef5f6f09e6a52f4445d88eec9db3ecb7c21cad97cf7aedd5db13d71171c3296c08c688d836c559346c53bc
data/.gitignore CHANGED
@@ -8,3 +8,6 @@
8
8
  /spec/reports/
9
9
  /tmp/
10
10
  output.csv
11
+ .vim.custom
12
+ t
13
+ gn_crossmap-*.gem
data/CHANGELOG.md CHANGED
@@ -1,15 +1,17 @@
1
- gn_crossmap CHANGELOG
2
- =====================
3
- 0.1.8
4
- -----
1
+ # ``gn_crossmap`` CHANGELOG
2
+
3
+ ## 0.2.0
4
+
5
+ * @dimus - #17 - change in API - use of STDIN and STDOUT for input and output
6
+
7
+ ## 0.1.8
5
8
 
6
9
  * @dimus - #14 - show synonym status
7
10
 
8
- 0.1.7
9
- -----
11
+ ## 0.1.7
10
12
 
11
13
  * @dimus - #13 - make it possible wo ingest field names like dwc:scientificName
12
- or http://example.org/term/sommeTerm
14
+ or ``http://example.org/term/sommeTerm``
13
15
 
14
16
  * @dimus - #12 - fix a bug which prevents so salvage most of the names from a
15
17
  failing batch (if a batch of names has one name that breaks
@@ -22,13 +24,11 @@ gn_crossmap CHANGELOG
22
24
 
23
25
  * @dimus - #9 - fixed another problem with rank inffering
24
26
 
25
- 0.1.6
26
- -----
27
+ ## 0.1.6
27
28
 
28
29
  * @dimus - #8 - catching "No Method Found" exception at inferring rank
29
30
 
30
- 0.1.5
31
- -----
31
+ ## 0.1.5
32
32
 
33
33
  * @dimus - #5 - All original fields are now preserved in the output file.
34
34
 
@@ -42,25 +42,23 @@ gn_crossmap CHANGELOG
42
42
 
43
43
  * @dimus - #1 Bug - Add missing rest-client gem
44
44
 
45
- 0.1.4
46
- -----
47
- - [Dmitry Mozzherin][dimus] - Bug fixes
45
+ ## 0.1.4
46
+
47
+ * @dimus - Bug fixes
48
+
49
+ ## 0.1.3
50
+
51
+ * @dimus - README and gemspec changes
52
+
53
+ ## 0.1.2
48
54
 
49
- 0.1.3
50
- -----
51
- - [Dmitry Mozzherin][dimus] - README and gemspec changes
55
+ * @dimus - clean up docs, and remove junk code
52
56
 
53
- 0.1.2
54
- -----
55
- - [Dmitry Mozzherin][dimus] - clean up docs, and remove junk code
57
+ ## 0.1.1
56
58
 
57
- 0.1.1
58
- -----
59
- - [Dmitry Mozzherin][dimus] - first official release -- works for full names
59
+ * @dimus - first official release -- works for full names
60
60
  and names entered in rank fields
61
61
 
62
- 0.1.0
63
- -----
64
- - [Dmitry Mozzherin][dimus] - initial version
62
+ ## 0.1.0
65
63
 
66
- [dimus]: https://github.com/dimus
64
+ * @dimus - initial version
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2015 Marine Biological Laboratory
1
+ Copyright (c) 2015-2016 Marine Biological Laboratory
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,9 +1,10 @@
1
1
  # GnCrossmap
2
- [![Gem Version][gem_badge]][gem_link]
3
- [![Continuous Integration Status][ci_badge]][ci_link]
4
- [![Coverage Status][cov_badge]][cov_link]
5
- [![CodeClimate][code_badge]][code_link]
6
- [![Dependency Status][dep_badge]][dep_link]
2
+
3
+ [![Gem Version][gem-badge]][gem-link]
4
+ [![Continuous Integration Status][ci-badge]][ci-link]
5
+ [![Coverage Status][cov-badge]][cov-link]
6
+ [![CodeClimate][code-badge]][code-link]
7
+ [![Dependency Status][dep-badge]][dep-link]
7
8
 
8
9
  This gem crossmaps a checklist of scientific names to names from a data source
9
10
  in [GN Resolver][resolver].
@@ -12,13 +13,11 @@ Checklist has to be in a CSV format.
12
13
 
13
14
  [Issues on waffle.io][waffle]
14
15
 
15
- Compatibility
16
- -------------
16
+ ## Compatibility
17
17
 
18
18
  This gem is compatible with Ruby versions higher or equal to 2.1.0
19
19
 
20
- Installation
21
- ------------
20
+ ## Installation
22
21
 
23
22
  Add this line to your application's Gemfile:
24
23
 
@@ -28,25 +27,27 @@ gem 'gn_crossmap'
28
27
 
29
28
  And then execute:
30
29
 
31
- $ bundle
30
+ bundle
32
31
 
33
32
  Or install it yourself as:
34
33
 
35
- $ gem install gn_crossmap
34
+ gem install gn_crossmap
36
35
 
37
- Usage
38
- -----
36
+ ## Usage
39
37
 
40
38
  ### Usage from command line
41
39
 
42
40
  # to see help
43
- $ crossmap --help
41
+ crossmap --help
44
42
 
45
43
  # to compare with default source (Catalogue of Life)
46
- $ crossmap -i my_list.csv -o my_list_col.csv
44
+ crossmap -i my_list.csv -o my_list_col.csv
47
45
 
48
46
  # to compare with other source (Index Fungorum in this example)
49
- $ crossmap -i my_list.csv -o my_list_if.csv -d 5
47
+ crossmap -i my_list.csv -o my_list_if.csv -d 5
48
+
49
+ # to use standard intput and/or output
50
+ cat my_list.csv | crossmap -i - -o - > output
50
51
 
51
52
  ### Usage as Ruby Library
52
53
 
@@ -59,7 +60,6 @@ GnCrossmap.logger = MyCustomLogger.new
59
60
  GnCrossmap.run("path/to/input.csv", "path/to/output.csv", 5)
60
61
  ```
61
62
 
62
-
63
63
  ### Input file format
64
64
 
65
65
  - Comma Separated File with names of fields in first row.
@@ -108,7 +108,6 @@ GnCrossmap.run("path/to/input.csv", "path/to/output.csv", 5)
108
108
  TaxonId;kingdom;subkingdom;phylum;subphylum;superclass;class;subclass;cohort;superorder;order;suborder;infraorder;superfamily;family;subfamily;tribe;subtribe;genus;subgenus;section;species;subspecies;variety;form;ScientificNameAuthorship
109
109
  1;Animalia;;Tardigrada;;;Eutardigrada;;;;Parachela;;;Macrobiotoidea;Macrobiotidae;;;;Macrobiotus;;;harmsworthi;obscurus;;;Dastych, 1985
110
110
 
111
-
112
111
  TaxonId|kingdom|subkingdom|phylum|subphylum|superclass|class|subclass|cohort|superorder|order|suborder|infraorder|superfamily|family|subfamily|tribe|subtribe|genus|subgenus|section|species|subspecies|variety|form|ScientificNameAuthorship
113
112
  -------|-------|----------|------|---------|----------|-----|--------|------|----------|-----|--------|----------|-----------|------|---------|-----|--------|-----|--------|-------|-------|----------|-------|----|------------------------
114
113
  136021|Animalia||Pogonophora||||||||||||||||||||||
@@ -145,8 +144,7 @@ The output fomat returns 7 possible types of matches:
145
144
  6. **Exact match by genus part of a canonical form** - The genus part of the canonical form of the species name returned an exact match
146
145
  7. **[Blank]** - No match
147
146
 
148
- Development
149
- -----------
147
+ ## Development
150
148
 
151
149
  After checking out the repo, run `bin/setup` to install dependencies. Then, run
152
150
  `bin/console` for an interactive prompt that will allow you to experiment.
@@ -157,33 +155,31 @@ release a new version, update the version number in `version.rb`, and then run
157
155
  commits and tags, and push the `.gem` file to
158
156
  [rubygems.org][rubygems]
159
157
 
160
- Contributing
161
- ------------
158
+ ## Contributing
162
159
 
163
- 1. Fork it ( https://github.com/[my-github-username]/gn_crossmap/fork )
160
+ 1. Fork it ( ``https://github.com/[my-github-username]/gn_crossmap/fork`` )
164
161
  2. Create your feature branch (`git checkout -b my-new-feature`)
165
162
  3. Commit your changes (`git commit -am 'Add some feature'`)
166
163
  4. Push to the branch (`git push origin my-new-feature`)
167
164
  5. Create a new Pull Request
168
165
 
169
- Copyright
170
- ---------
166
+ ## Copyright
171
167
 
172
168
  Author -- [Dmitry Mozzherin][dimus]
173
169
 
174
- Copyright (c) 2015 [Marine Biological Laboratory][mbl].
170
+ Copyright (c) 2015-2016 [Marine Biological Laboratory][mbl].
175
171
  See [LICENSE][license] for details.
176
172
 
177
- [gem_badge]: https://badge.fury.io/rb/gn_crossmap.svg
178
- [gem_link]: http://badge.fury.io/rb/gn_crossmap
179
- [ci_badge]: https://secure.travis-ci.org/GlobalNamesArchitecture/gn_crossmap.svg
180
- [ci_link]: http://travis-ci.org/GlobalNamesArchitecture/gn_crossmap
181
- [cov_badge]: https://coveralls.io/repos/GlobalNamesArchitecture/gn_crossmap/badge.svg?branch=master
182
- [cov_link]: https://coveralls.io/r/GlobalNamesArchitecture/gn_crossmap?branch=master
183
- [code_badge]: https://codeclimate.com/github/GlobalNamesArchitecture/gn_crossmap/badges/gpa.svg
184
- [code_link]: https://codeclimate.com/github/GlobalNamesArchitecture/gn_crossmap
185
- [dep_badge]: https://gemnasium.com/GlobalNamesArchitecture/gn_crossmap.png
186
- [dep_link]: https://gemnasium.com/GlobalNamesArchitecture/gn_crossmap
173
+ [gem-badge]: https://badge.fury.io/rb/gn_crossmap.svg
174
+ [gem-link]: http://badge.fury.io/rb/gn_crossmap
175
+ [ci-badge]: https://secure.travis-ci.org/GlobalNamesArchitecture/gn_crossmap.svg
176
+ [ci-link]: http://travis-ci.org/GlobalNamesArchitecture/gn_crossmap
177
+ [cov-badge]: https://coveralls.io/repos/GlobalNamesArchitecture/gn_crossmap/badge.svg?branch=master
178
+ [cov-link]: https://coveralls.io/r/GlobalNamesArchitecture/gn_crossmap?branch=master
179
+ [code-badge]: https://codeclimate.com/github/GlobalNamesArchitecture/gn_crossmap/badges/gpa.svg
180
+ [code-link]: https://codeclimate.com/github/GlobalNamesArchitecture/gn_crossmap
181
+ [dep-badge]: https://gemnasium.com/GlobalNamesArchitecture/gn_crossmap.png
182
+ [dep-link]: https://gemnasium.com/GlobalNamesArchitecture/gn_crossmap
187
183
  [resolver]: http://resolver.globalnames.org/data_sources
188
184
  [rubygems]: https://rubygems.org
189
185
  [dimus]: https://github.com/dimus
data/exe/crossmap CHANGED
@@ -5,20 +5,23 @@ require "gn_crossmap"
5
5
  puts "This program requires Ruby >= v. 2.1.0" if RUBY_VERSION < "2.1.0"
6
6
 
7
7
  CATALOGUE_OF_LIFE = 1
8
- OUTPUT = "output.csv"
8
+ OUTPUT = "output.csv".freeze
9
9
  opts = Trollop.options do
10
10
  banner "Compares a list of scientific names to scientific names from a " \
11
11
  "data source from Global Names Resolver\n\n " \
12
- "Usage:\n crossmap [options]\n\noptions:"
12
+ "Usage:\n crossmap [options]\n\noptions:" \
13
+ "\n\n ('-i -' reads from STDIN; '-o -' writes to STDOUT)\n\n"
13
14
 
14
- opt(:input, "Path to intput file", type: :string)
15
+ opt(:input, "Path to input file", type: :string)
15
16
  opt(:output, "Path to output file", default: OUTPUT)
16
17
  opt(:data_source_id, "Data source id from GN Resolver",
17
18
  default: CATALOGUE_OF_LIFE)
18
19
  end
19
20
 
20
21
  Trollop.die :input, "must be set" if opts[:input].nil?
21
- Trollop.die :input, "file must exist" unless File.exist?(opts[:input])
22
+ unless File.exist?(opts[:input]) || opts[:input] == "-"
23
+ Trollop.die :input, "file must exist"
24
+ end
22
25
 
23
26
  begin
24
27
  GnCrossmap.run(opts[:input], opts[:output], opts[:data_source_id])
data/gn_crossmap.gemspec CHANGED
@@ -19,15 +19,16 @@ Gem::Specification.new do |gem|
19
19
  "data sources from http://resolver.globalnames.org"
20
20
  gem.homepage = "https://github.com/GlobalNamesArchitecture/gn_crossmap"
21
21
 
22
- gem.files = `git ls-files -z`.split("\x0").
23
- reject { |f| f.match(%r{^(test|spec|features)/}) }
22
+ gem.files = `git ls-files -z`.
23
+ split("\x0").
24
+ reject { |f| f.match(%r{^(test|spec|features)/}) }
24
25
  gem.bindir = "exe"
25
26
  gem.executables = gem.files.grep(%r{^exe/}) { |f| File.basename(f) }
26
27
  gem.require_paths = ["lib"]
27
28
 
28
29
  gem.add_dependency "trollop", "~> 2.1"
29
30
  gem.add_dependency "biodiversity", "~> 3.1"
30
- gem.add_dependency "rest-client", "~> 1.8"
31
+ gem.add_dependency "rest-client", "~> 2.0"
31
32
  gem.add_dependency "logger-colors", "~> 1.0"
32
33
 
33
34
  gem.add_development_dependency "bundler", "~> 1.7"
data/lib/gn_crossmap.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require "csv"
2
2
  require "rest_client"
3
+ require "tempfile"
3
4
  require "logger"
4
5
  require "logger/colors"
5
6
  require "biodiversity"
@@ -15,23 +16,61 @@ require "gn_crossmap/result_processor"
15
16
 
16
17
  # Namespace module for crossmapping checklists wth GN sources
17
18
  module GnCrossmap
19
+ INPUT_MODE = "r:utf-8".freeze
20
+ OUTPUT_MODE = "w:utf-8".freeze
21
+
18
22
  class << self
19
23
  attr_writer :logger
20
24
 
21
25
  def run(input, output, data_source_id)
22
- reader = Reader.new(input)
26
+ input_io, output_io = io(input, output)
27
+ reader = Reader.new(input_io, input_name(input))
23
28
  data = reader.read
24
- writer = Writer.new(output, reader.original_fields)
29
+ writer = Writer.new(output_io, reader.original_fields,
30
+ output_name(output))
25
31
  Resolver.new(writer, data_source_id).resolve(data)
26
32
  output
27
33
  end
28
34
 
29
35
  def logger
30
- @logger ||= Logger.new($stdout)
36
+ @logger ||= Logger.new(STDERR)
31
37
  end
32
38
 
33
39
  def log(message)
34
40
  logger.info(message)
35
41
  end
42
+
43
+ private
44
+
45
+ def io(input, output)
46
+ io_in = iogen(input, INPUT_MODE)
47
+ io_out = iogen(output, OUTPUT_MODE)
48
+ [io_in, io_out]
49
+ end
50
+
51
+ def iogen(arg, mode)
52
+ if arg.nil? || arg == "-"
53
+ mode == INPUT_MODE ? stdin : STDOUT
54
+ else
55
+ fd_i = IO.sysopen(arg, mode)
56
+ IO.new(fd_i, mode)
57
+ end
58
+ end
59
+
60
+ def stdin
61
+ temp = Tempfile.open("stdin")
62
+ return STDIN if File.file?(STDIN)
63
+ IO.copy_stream(STDIN, temp)
64
+ fd_i = IO.sysopen(temp, INPUT_MODE)
65
+ IO.new(fd_i, INPUT_MODE)
66
+ end
67
+
68
+ def input_name(input)
69
+ input.nil? || input == "-" ? "STDIN" : input
70
+ end
71
+
72
+ def output_name(output)
73
+ output.nil? || output == "-" ? "STDOUT" : output
74
+ end
36
75
  end
37
76
  end
@@ -20,11 +20,11 @@ module GnCrossmap
20
20
  @fields = @row.map { |f| prepare_field(f) }
21
21
  @collector = collector_factory
22
22
  err = "taxonID must be present in the csv header"
23
- fail GnCrossmapError, err unless @fields.include?(:taxonid)
23
+ raise GnCrossmapError, err unless @fields.include?(:taxonid)
24
24
  end
25
25
 
26
26
  def prepare_field(field)
27
- field = field.to_s.gsub(":", "/")
27
+ field = field.to_s.tr(":", "/")
28
28
  field.split("/")[-1].strip.downcase.to_sym
29
29
  end
30
30
 
@@ -4,14 +4,14 @@ module GnCrossmap
4
4
  RANKS = %i(kingdom subkingdom phylum subphylum superclass class
5
5
  subclass cohort superorder order suborder infraorder superfamily
6
6
  family subfamily tribe subtribe genus subgenus section species
7
- subspecies variety form)
8
- SPECIES_RANKS = %i(genus species subspecies variety form)
7
+ subspecies variety form).freeze
8
+ SPECIES_RANKS = %i(genus species subspecies variety form).freeze
9
9
 
10
10
  def initialize(fields)
11
11
  @fields = fields
12
12
  err = "At least some of these fields must exist in " \
13
13
  "the CSV header: '#{RANKS.join('\', \'')}'"
14
- fail GnCrossmapError, err if (RANKS - @fields).size == RANKS.size
14
+ raise GnCrossmapError, err if (RANKS - @fields).size == RANKS.size
15
15
  end
16
16
 
17
17
  def id_name_rank(row)
@@ -29,7 +29,7 @@ module GnCrossmap
29
29
 
30
30
  def find_rank
31
31
  name_rank = nil
32
- RANKS.reverse_each do |rank|
32
+ RANKS.reverse_each do |rank|
33
33
  next if @row[rank].to_s.strip == ""
34
34
  name_rank = rank
35
35
  break
@@ -4,32 +4,35 @@ module GnCrossmap
4
4
  class Reader
5
5
  attr_reader :original_fields
6
6
 
7
- def initialize(csv_path)
8
- @csv_file = csv_path
7
+ def initialize(csv_io, input_name)
8
+ @csv_io = csv_io
9
9
  @col_sep = col_sep
10
10
  @original_fields = nil
11
+ @input_name = input_name
11
12
  end
12
13
 
13
14
  def read
14
- GnCrossmap.log("Read input file '#{File.basename(@csv_file)}'")
15
+ GnCrossmap.log("Read input from #{@input_name}")
15
16
  parse_input
16
17
  end
17
18
 
18
19
  private
19
20
 
20
21
  def col_sep
21
- line = open(@csv_file, &:readline)
22
+ line = @csv_io.first
23
+ @csv_io.rewind
22
24
  [";", ",", "\t"].map { |s| [line.count(s), s] }.sort.last.last
23
25
  end
24
26
 
25
27
  def parse_input
26
28
  dc = Collector.new
27
- CSV.open(@csv_file, col_sep: @col_sep).each_with_index do |row, i|
29
+ csv = CSV.new(@csv_io, col_sep: col_sep)
30
+ csv.each_with_index do |row, i|
28
31
  @original_fields = row.dup if @original_fields.nil?
29
32
  i += 1
30
- GnCrossmap.log("Ingesting #{i}th csv row") if i % 10_000 == 0
33
+ GnCrossmap.log("Ingesting #{i}th csv row") if (i % 10_000).zero?
31
34
  dc.process_row(row)
32
- end
35
+ end && @csv_io.close
33
36
  dc.data
34
37
  end
35
38
  end
@@ -1,7 +1,7 @@
1
1
  module GnCrossmap
2
2
  # Sends data to GN Resolver and collects results
3
3
  class Resolver
4
- URL = "http://resolver.globalnames.org/name_resolvers.json"
4
+ URL = "http://resolver.globalnames.org/name_resolvers.json".freeze
5
5
 
6
6
  def initialize(writer, data_source_id)
7
7
  @processor = GnCrossmap::ResultProcessor.new(writer)
@@ -9,7 +9,7 @@ module GnCrossmap
9
9
  4 => "Partial canonical form match",
10
10
  5 => "Partial canonical form fuzzy match",
11
11
  6 => "Genus part match"
12
- }
12
+ }.freeze
13
13
 
14
14
  attr_reader :input, :writer
15
15
 
@@ -12,7 +12,7 @@ module GnCrossmap
12
12
  name = find_name
13
13
  rank = @row[:taxonrank]
14
14
  rank = parse_rank if rank.nil?
15
- (id && name) ? { id: id, name: name, rank: rank } : nil
15
+ id && name ? { id: id, name: name, rank: rank } : nil
16
16
  end
17
17
 
18
18
  private
@@ -1,6 +1,6 @@
1
1
  # Namespace module for crossmapping checklists to GN sources
2
2
  module GnCrossmap
3
- VERSION = "0.1.8"
3
+ VERSION = "0.2.0".freeze
4
4
 
5
5
  def self.version
6
6
  VERSION
@@ -1,12 +1,13 @@
1
1
  module GnCrossmap
2
2
  # Saves output from GN Resolver to disk
3
3
  class Writer
4
- def initialize(output_path, original_fields)
5
- @path = output_path
4
+ def initialize(output_io, original_fields, output_name)
5
+ @output_io = output_io
6
6
  @output_fields = output_fields(original_fields)
7
- @output = CSV.open(@path, "w:utf-8")
7
+ @output = CSV.new(@output_io)
8
8
  @output << @output_fields
9
- GnCrossmap.log("Open output file '#{@path}'")
9
+ @output_name = output_name
10
+ GnCrossmap.log("Open output to #{@output_name}")
10
11
  end
11
12
 
12
13
  def write(record)
@@ -14,8 +15,8 @@ module GnCrossmap
14
15
  end
15
16
 
16
17
  def close
17
- GnCrossmap.log("Close output file '#{@path}'")
18
- @output.close
18
+ GnCrossmap.log("Close #{@output_name}")
19
+ @output_io.close
19
20
  end
20
21
 
21
22
  private
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gn_crossmap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitry Mozzherin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-07-20 00:00:00.000000000 Z
11
+ date: 2016-11-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: trollop
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.8'
47
+ version: '2.0'
48
48
  type: :runtime
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: '1.8'
54
+ version: '2.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: logger-colors
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -203,7 +203,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
203
203
  version: '0'
204
204
  requirements: []
205
205
  rubyforge_project:
206
- rubygems_version: 2.4.5
206
+ rubygems_version: 2.5.1
207
207
  signing_key:
208
208
  specification_version: 4
209
209
  summary: Crossmaps a list of scientific names to names from a data source in GN Index