biburi 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a1c33a8d71f4dfb1035bb83a6f4be20820372286
4
+ data.tar.gz: 85efe72c97ada25dd9fb831b253e8237eee4341f
5
+ SHA512:
6
+ metadata.gz: 4fc5f2c69f6a36372d25f94517bd4e926328c830cac8bdcda80f147b47ad454674a872e28413514bedb98fe0e510c8cb296b18749d8f36efde09c67ce6365114
7
+ data.tar.gz: d6fe457ac2cf2538a2b82e7735183b55819c2162b22eee6e8a2310031c35caba939f13e4ffd13165e4f2bab2850761053374393a0254b5910faee0494b2217f6
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.travis.yml ADDED
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 1.9.3
5
+ notifications:
6
+ email: false
@@ -0,0 +1,4 @@
1
+ = BibURI Changelog =
2
+
3
+ * 0.0.1 (October 2, 2013)
4
+ ** First release, with basic support for DOIs using the CrossRef API.
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in biburi.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Gaurav Vaidya
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,52 @@
1
+ # BibURI
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/biburi.png)](http://badge.fury.io/rb/biburi)
4
+ [![Continuous Integration Status][1]][2]
5
+ [![Coverage Status][3]][4]
6
+ [![Dependency Status][5]][6]
7
+
8
+ This is a gem to extract BibTeX information for URIs which refer to bibliographic
9
+ resources, such as DOIs, Biodiversity Heritage Library links, and others.
10
+
11
+ Currently, BibURI supports the following types of data:
12
+
13
+ - DOIs (via CrossRef)
14
+
15
+ ## Installation
16
+
17
+ Add this line to your application's Gemfile:
18
+
19
+ gem 'biburi'
20
+
21
+ And then execute:
22
+
23
+ $ bundle
24
+
25
+ Or install it yourself as:
26
+
27
+ $ gem install biburi
28
+
29
+ ## Usage
30
+
31
+ BibURI mainly works out of a single method:
32
+
33
+ require 'biburi'
34
+
35
+ results = BibURI::lookup('doi:10.1038/171737a0')
36
+
37
+ Full documentation is [available online at RubyDoc.org](http://rubydoc.org/github/gaurav/biburi/master/frames).
38
+
39
+ ## Contributing
40
+
41
+ 1. Fork it
42
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
43
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
44
+ 4. Push to the branch (`git push origin my-new-feature`)
45
+ 5. Create new pull request
46
+
47
+ [1]: https://secure.travis-ci.org/gaurav/biburi.png
48
+ [2]: http://travis-ci.org/gaurav/biburi
49
+ [3]: https://coveralls.io/repos/gaurav/biburi/badge.png?branch=master
50
+ [4]: https://coveralls.io/r/gaurav/biburi?branch=master
51
+ [5]: https://gemnasium.com/gaurav/biburi.png
52
+ [6]: https://gemnasium.com/gaurav/biburi
data/Rakefile ADDED
@@ -0,0 +1,11 @@
1
+ require 'bundler/gem_tasks'
2
+
3
+ require 'rake'
4
+
5
+ # Set up Rspec
6
+ require 'rspec/core/rake_task'
7
+
8
+ # Allow testing using spec
9
+ RSpec::Core::RakeTask.new(:spec)
10
+ task :default => :spec
11
+ task :test => :spec
data/biburi.gemspec ADDED
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'biburi/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "biburi"
8
+ spec.version = BibURI::VERSION
9
+ spec.authors = ["Gaurav Vaidya"]
10
+ spec.email = ["gaurav@ggvaidya.com"]
11
+ spec.description = %q{Find the BibTeX information when your citation has an identifier}
12
+ spec.summary = %q{URI to BibTeX lookup gem}
13
+ spec.homepage = "http://github.com/gaurav/biburi"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec"
24
+ spec.add_development_dependency "rspec-core"
25
+ spec.add_development_dependency "coveralls"
26
+
27
+ spec.add_runtime_dependency 'bibtex-ruby', '~> 2.0'
28
+ end
@@ -0,0 +1,174 @@
1
+ # A driver to read BibTeX for DOI via CrossRef's
2
+ # public API: http://search.crossref.org/help/api
3
+ #
4
+ # Author:: Gaurav Vaidya
5
+ # Copyright:: Copyright (c) 2013 Gaurav Vaidya
6
+ # License:: MIT
7
+
8
+ require 'biburi'
9
+ require 'biburi/driver'
10
+ require 'net/http'
11
+ require 'json'
12
+ require 'bibtex'
13
+
14
+ # For CGI::parse to make sense of COinS
15
+ require 'cgi'
16
+
17
+ # This driver provides information in BibTeX on a DOI by
18
+ # querying CrossRef's metadata search API.
19
+
20
+ module BibURI::Driver::DOI
21
+ include BibURI::Driver
22
+
23
+ # We support an identifier if we can make them look
24
+ # canonical.
25
+ def self.supported?(id)
26
+ canonical = BibURI::Driver::DOI::canonical(id)
27
+ return !(canonical.nil?)
28
+ end
29
+
30
+ # The canonical form of a DOI can be one of
31
+ # - http://dx.doi.org/10.1234/abcd-5678
32
+ # - doi:10.1234/abcd-5678
33
+ def self.canonical(id)
34
+ # doi:10.1234/abcd-5678
35
+ match = id.match(/^doi:(.*)$/i)
36
+ if match
37
+ return "http://dx.doi.org/" + match[1]
38
+ end
39
+
40
+ # http://dx.doi.org/10.1234/abcd-5678
41
+ match = id.match(/^http:\/\/dx\.doi\.org\/(.*)$/i)
42
+ if match
43
+ return "http://dx.doi.org/" + match[1]
44
+ end
45
+
46
+ # If no match, return nil.
47
+ nil
48
+ end
49
+
50
+ # Returns a list of parsed values with
51
+ # BibTeX names by looking up the provided id.
52
+ def self.lookup(id)
53
+ # Calculate the canonical identifier.
54
+ canonical_id = canonical(id)
55
+ if canonical_id.nil? then
56
+ return nil
57
+ end
58
+
59
+ # Search for the DOI on CrossRef.
60
+ crossref_url = "http://search.crossref.org/dois?" +
61
+ URI.encode_www_form([["q", canonical_id]])
62
+
63
+ content = Net::HTTP.get(URI(crossref_url))
64
+ as_json = JSON.parse(content)
65
+
66
+ # No values returned? Returned nil so that the search
67
+ # can continue.
68
+ if as_json.length == 0 then
69
+ return nil
70
+ end
71
+
72
+ # Go through results and format them as BibTeX::Entry.
73
+ # We support both
74
+ results = [] unless block_given?
75
+ as_json.each do |match|
76
+ # Skip non-identical DOI matches.
77
+ next unless match['doi'].downcase == canonical_id.downcase
78
+
79
+ # Create a BibTeX entry to store these values.
80
+ bibentry = BibTeX::Entry.new
81
+
82
+ # Set identifiers so we know where this came from.
83
+ bibentry[:url] = canonical_id
84
+ bibentry[:doi] = canonical_id.match(/^http:\/\/dx\.doi\.org\/(.*)$/)[1]
85
+
86
+ # CrossRef itself provides a full citation and year.
87
+ if match.key?('fullCitation') then
88
+ bibentry[:title] = match['fullCitation']
89
+ end
90
+
91
+ if match.key?('year') then
92
+ bibentry[:year] = match['year']
93
+ end
94
+
95
+ # If we have COinS data, we have a lot more data.
96
+ if match.key?('coins') then
97
+ coins_kv = CGI::parse(match['coins'])
98
+ metadata = {}
99
+ coins_kv.each do |key, val|
100
+ if val.length == 1 then
101
+ metadata[key] = val[0]
102
+ else
103
+ metadata[key] = val
104
+ end
105
+ end
106
+
107
+ # COinS values are explained at http://ocoins.info/cobg.html
108
+ # Some values need to be handled separately.
109
+
110
+ # Journal title: title, jtitle
111
+ journal_title = metadata['rft.title'] # The old-style journal title.
112
+ journal_title ||= metadata['rft.stitle'] # An abbreviated title.
113
+ journal_title ||= metadata['rft.jtitle'] # Complete title.
114
+ bibentry[:journal] = journal_title
115
+
116
+ # Pages: spage, epage
117
+ pages = metadata['rft.pages'] # If only pages are provided
118
+ pages ||= metadata['rft.spage'] + "-" + metadata['rft.epage']
119
+ # If we have start and end pages
120
+ bibentry[:pages] = pages
121
+
122
+ # Authors are all in 'rft.au'
123
+ authors = BibTeX::Names.new
124
+ metadata['rft.au'].each do |author|
125
+ authors.add(BibTeX::Name.parse(author))
126
+ end
127
+ bibentry[:author] = authors
128
+
129
+ # COinS supports some types
130
+ genre = metadata['rft.genre']
131
+ if genre == 'article' then
132
+ bibentry.type = "article"
133
+ elsif genre == 'proceeding' || genre == 'conference' then
134
+ bibentry.type = "inproceeding"
135
+ end
136
+
137
+ # Map remaining fields to BibTeX.
138
+ standard_mappings = {
139
+ "rft.atitle" => "title",
140
+ "rft.date" => "date",
141
+ "rft.volume" => "volume",
142
+ "rft.issue" => "number",
143
+ "rft.artnum" => "article_number",
144
+ "rft.issn" => "issn",
145
+ "rft.eissn" => "eissn",
146
+ "rft.isbn" => "isbn",
147
+ "rft.coden" => "CODEN",
148
+ "rft.sici" => "SICI",
149
+ "rft.chron" => "chronology",
150
+ "rft.ssn" => "season",
151
+ "rft.quarter" => "quarter",
152
+ "rft.part" => "part",
153
+ }
154
+ standard_mappings.keys.each do |field|
155
+ if metadata.key?(field) then
156
+ bibentry[standard_mappings[field]] = metadata[field]
157
+ end
158
+ end
159
+ end
160
+
161
+ # Yield values or return array.
162
+ if block_given? then
163
+ yield(bibentry)
164
+ else
165
+ results.push(bibentry)
166
+ end
167
+ end
168
+
169
+ # If we built an array, return it.
170
+ unless block_given? then
171
+ return results
172
+ end
173
+ end
174
+ end
@@ -0,0 +1,50 @@
1
+ # All lookup types implement this mixin, which
2
+ # defines the interface lookups use to talk to
3
+ # the main controller.
4
+ #
5
+ # Author:: Gaurav Vaidya
6
+ # Copyright:: Copyright (c) 2013 Gaurav Vaidya
7
+ # License:: MIT
8
+
9
+ require 'biburi'
10
+
11
+ module BibURI::Driver
12
+ # An array of drivers in order of preference. The
13
+ # first driver which supports the ID and which
14
+ # provides a valid lookup will stop processing.
15
+ @@drivers = Array.new
16
+
17
+ # Return a list of drivers.
18
+ def self.drivers
19
+ return @@drivers
20
+ end
21
+
22
+ # Returns true if this Lookup supports this id.
23
+ def self.supported?(id)
24
+ raise NotImplementedError
25
+ end
26
+
27
+ # Returns a canonical form of the identifier,
28
+ # preferably as a URL.
29
+ def self.canonical(id)
30
+ raise NotImplementedError
31
+ end
32
+
33
+ # Returns a dictionary of parsed values with
34
+ # BibTeX names by looking up the provided id.
35
+ def self.lookup(id)
36
+ raise NotImplementedError
37
+ end
38
+
39
+ end
40
+
41
+ # Load all the drivers, and add them to BibURI::Driver
42
+ # in order of preference.
43
+ require "biburi/driver/doi"
44
+
45
+ module BibURI::Driver
46
+ @@drivers = [
47
+ BibURI::Driver::DOI
48
+ ]
49
+ end
50
+
@@ -0,0 +1,3 @@
1
+ module BibURI
2
+ VERSION = "0.0.1"
3
+ end
data/lib/biburi.rb ADDED
@@ -0,0 +1,33 @@
1
+ # BibURI looks up URIs refering to citations (such as DOIs,
2
+ # Mendeley or Zotero URLs, and so on) and extracts the BibTeX
3
+ # data associated with them.
4
+ #
5
+ # Author:: Gaurav Vaidya
6
+ # Copyright:: Copyright (c) 2013 Gaurav Vaidya
7
+
8
+ require 'biburi/version'
9
+
10
+ module BibURI
11
+ # Returns a list of all drivers.
12
+ def self.drivers
13
+ return BibURI::Driver::drivers
14
+ end
15
+
16
+ # Query all the drivers in the order
17
+ # they are recorded in; return the results
18
+ # for the first driver.
19
+ def self.lookup(id)
20
+ self.drivers.each do |driver|
21
+ if driver.supported?(id) then
22
+ results = driver.lookup(id)
23
+ if !results.nil? then
24
+ return results
25
+ end
26
+ end
27
+ end
28
+
29
+ return nil
30
+ end
31
+ end
32
+
33
+ require 'biburi/driver'
@@ -0,0 +1,64 @@
1
+ require_relative 'spec_helper'
2
+
3
+ describe BibURI do
4
+ describe "VERSION" do
5
+ it "should exist" do
6
+ version = BibURI::VERSION
7
+ end
8
+ end
9
+
10
+ describe "drivers" do
11
+ it "should have multiple drivers" do
12
+ drivers = BibURI::drivers
13
+
14
+ expect(drivers).to be_an_instance_of(Array)
15
+ expect(drivers.length).to be > 0
16
+ end
17
+ end
18
+
19
+ describe "lookup" do
20
+ it "should be able to do simple lookups" do
21
+ queries = {
22
+ "doi:10.1038/171737a0" => [
23
+ BibTeX::Entry.new(
24
+ :url => "http://dx.doi.org/10.1038/171737a0",
25
+ :doi => "10.1038/171737a0",
26
+ :title => "Molecular Structure of Nucleic Acids: A Structure for Deoxyribose Nucleic Acid, year = 1953, journal = Nature, pages = 737-738",
27
+ :author => "WATSON, J. D. and CRICK, F. H. C.",
28
+ :date => "1953",
29
+ :volume => "171",
30
+ :number => "4356"
31
+ )
32
+ ],
33
+ "http://dx.doi.org/10.1111/j.1096-0031.2010.00329.x" => [
34
+ BibTeX::Entry.new({
35
+ "url" => "http://dx.doi.org/10.1111/j.1096-0031.2010.00329.x",
36
+ "doi" => "10.1111/j.1096-0031.2010.00329.x",
37
+ "title" => "SequenceMatrix: concatenation software for the fast assembly of multi-gene datasets with character set and codon information",
38
+ "year" => "2011",
39
+ "journal" => "Cladistics",
40
+ "pages" => "171-180",
41
+ "author" => "Vaidya, Gaurav and Lohman, David J. and Meier, Rudolf",
42
+ "date" => "2011",
43
+ "volume" => "27",
44
+ "number" => "2"
45
+ })
46
+ ]
47
+ }
48
+
49
+ queries.keys.each do |query|
50
+ result = BibURI::lookup(query)
51
+
52
+ expect(result.to_s).to eq(queries[query].to_s)
53
+ end
54
+ end
55
+ end
56
+ end
57
+
58
+ describe BibURI::Driver do
59
+ it "should return NotImplementedError for all methods" do
60
+ expect { BibURI::Driver::supported?("doi:10.1038/171737a0") }.to raise_error(NotImplementedError)
61
+ expect { BibURI::Driver::canonical("doi:10.1038/171737a0") }.to raise_error(NotImplementedError)
62
+ expect { BibURI::Driver::lookup("doi:10.1038/171737a0") }.to raise_error(NotImplementedError)
63
+ end
64
+ end
data/spec/doi_spec.rb ADDED
@@ -0,0 +1,83 @@
1
+ require_relative 'spec_helper'
2
+
3
+ describe BibURI::Driver::DOI do
4
+ describe "supported" do
5
+ it "should support real DOIs" do
6
+ real_dois = [
7
+ "doi:10.1111/j.1529-8817.2010.00939.x",
8
+ "doi:10.1038/171737a0",
9
+ "DOI:10.1038/171737A0",
10
+ "http://dx.doi.org/doi:10.1038/171737a0"
11
+ ]
12
+
13
+ real_dois.each do |doi|
14
+ expect(BibURI::Driver::DOI::supported?(doi)).to be_true;
15
+ end
16
+ end
17
+
18
+ it "should not support incorrect DOIs" do
19
+ incorrect_dois = [
20
+ "10.1111/j.1529-8817.2010.00939.x",
21
+ "dxoi:10.1038/171737a0",
22
+ "https://dx.doi.org/doi:10.1038/171737a0"
23
+ ]
24
+
25
+ incorrect_dois.each do |doi|
26
+ expect(BibURI::Driver::DOI::supported?(doi)).to be_false;
27
+ end
28
+
29
+ end
30
+ end
31
+
32
+ describe "canonical" do
33
+ it "should canonicalize DOIs correctly" do
34
+ canonicalize = {
35
+ "doi:10.1038/171737a0" => "http://dx.doi.org/10.1038/171737a0",
36
+ "http://dx.doi.org/10.1038/171737a0" => "http://dx.doi.org/10.1038/171737a0"
37
+ }
38
+
39
+ canonicalize.keys.each do |value|
40
+ expected = canonicalize[value]
41
+ expect(BibURI::Driver::DOI::canonical(value)).to eq(expected)
42
+ end
43
+ end
44
+ end
45
+
46
+ describe "lookup" do
47
+ it "should be able to download information on some DOIs" do
48
+ queries = {
49
+ "doi:10.1038/171737a0" => [
50
+ BibTeX::Entry.new(
51
+ :url => "http://dx.doi.org/10.1038/171737a0",
52
+ :doi => "10.1038/171737a0",
53
+ :title => "Molecular Structure of Nucleic Acids: A Structure for Deoxyribose Nucleic Acid, year = 1953, journal = Nature, pages = 737-738",
54
+ :author => "WATSON, J. D. and CRICK, F. H. C.",
55
+ :date => "1953",
56
+ :volume => "171",
57
+ :number => "4356"
58
+ )
59
+ ],
60
+ "http://dx.doi.org/10.1111/j.1096-0031.2010.00329.x" => [
61
+ BibTeX::Entry.new({
62
+ "url" => "http://dx.doi.org/10.1111/j.1096-0031.2010.00329.x",
63
+ "doi" => "10.1111/j.1096-0031.2010.00329.x",
64
+ "title" => "SequenceMatrix: concatenation software for the fast assembly of multi-gene datasets with character set and codon information",
65
+ "year" => "2011",
66
+ "journal" => "Cladistics",
67
+ "pages" => "171-180",
68
+ "author" => "Vaidya, Gaurav and Lohman, David J. and Meier, Rudolf",
69
+ "date" => "2011",
70
+ "volume" => "27",
71
+ "number" => "2"
72
+ })
73
+ ]
74
+ }
75
+
76
+ queries.keys.each do |query|
77
+ result = BibURI::Driver::DOI::lookup(query)
78
+
79
+ expect(result.to_s).to eq(queries[query].to_s)
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,5 @@
1
+ # Start coverage tracking.
2
+ require 'coveralls'
3
+ Coveralls.wear!
4
+
5
+ require_relative '../lib/biburi'
metadata ADDED
@@ -0,0 +1,146 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: biburi
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Gaurav Vaidya
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-10-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec-core
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: coveralls
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: bibtex-ruby
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: '2.0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '2.0'
97
+ description: Find the BibTeX information when your citation has an identifier
98
+ email:
99
+ - gaurav@ggvaidya.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - .gitignore
105
+ - .travis.yml
106
+ - CHANGELOG.mediawiki
107
+ - Gemfile
108
+ - LICENSE.txt
109
+ - README.md
110
+ - Rakefile
111
+ - biburi.gemspec
112
+ - lib/biburi.rb
113
+ - lib/biburi/driver.rb
114
+ - lib/biburi/driver/doi.rb
115
+ - lib/biburi/version.rb
116
+ - spec/biburi_spec.rb
117
+ - spec/doi_spec.rb
118
+ - spec/spec_helper.rb
119
+ homepage: http://github.com/gaurav/biburi
120
+ licenses:
121
+ - MIT
122
+ metadata: {}
123
+ post_install_message:
124
+ rdoc_options: []
125
+ require_paths:
126
+ - lib
127
+ required_ruby_version: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ required_rubygems_version: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - '>='
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ requirements: []
138
+ rubyforge_project:
139
+ rubygems_version: 2.0.0
140
+ signing_key:
141
+ specification_version: 4
142
+ summary: URI to BibTeX lookup gem
143
+ test_files:
144
+ - spec/biburi_spec.rb
145
+ - spec/doi_spec.rb
146
+ - spec/spec_helper.rb