arx 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +18 -0
- data/Gemfile +1 -1
- data/README.md +10 -0
- data/arx.gemspec +12 -1
- data/lib/arx.rb +23 -17
- data/lib/arx/query/query.rb +7 -5
- data/lib/arx/version.rb +1 -1
- metadata +12 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 77d25732b98e3be9492bc5e103c51a2919217510e4b85e4690c1338ece3ef1fd
|
4
|
+
data.tar.gz: 0cb9a4134e64581160c079fdd47c3082f39eb72b3069a13c3f6ebd2a74c14eae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f91faea3efef98fc048906719b2919267fa78b99ae2e4623b7500a575691af90df5c3a7ed03328f94ebb89f5d17d754e51b6e77548e23b4482d7b603144fcf7c
|
7
|
+
data.tar.gz: 898c9c61db65c62852f0b7a097df59a0fccc77f03a1e853a06b92a0edcf31e3d5c912de1a8fde61e6b511c51523cf89bcd902a64a862d7f6f264e2869dbbad35
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
# 0.2.0
|
2
|
+
|
3
|
+
#### Major changes
|
4
|
+
|
5
|
+
- Flatten provided values in `Arx::Paper`'s field instance methods (allow an array as the `values` splat parameter). ([#5](https://github.com/eonu/arx/pull/5))
|
6
|
+
- Add `Arx.find` and `Arx.get` as aliases for `Arx.search`. ([#6](https://github.com/eonu/arx/pull/6), [#8](https://github.com/eonu/arx/pull/8))
|
7
|
+
|
8
|
+
#### Minor changes
|
9
|
+
|
10
|
+
- Add `homepage` and `metadata` fields to `arx.gemspec`. ([#1](https://github.com/eonu/arx/pull/1), [#14](https://github.com/eonu/arx/pull/14))
|
11
|
+
- Specify required ruby version (`~> 2.5`) in `arx.gemspec`. ([#2](https://github.com/eonu/arx/pull/2))
|
12
|
+
- Add badges to `README.md`. ([#3](https://github.com/eonu/arx/pull/3), [#9](https://github.com/eonu/arx/pull/9))
|
13
|
+
- Fix documentation for `Arx::Paper`'s field methods `exact` argument. ([#4](https://github.com/eonu/arx/pull/4))
|
14
|
+
- Update documentation links in `arx.gemspec` and `README.md`. ([#7](https://github.com/eonu/arx/pull/7))
|
15
|
+
- Remove newline from end of `Gemfile`. ([#11](https://github.com/eonu/arx/pull/11))
|
16
|
+
- Add ruby-head version to RVM rubies in `.travis.yml`. ([#12](https://github.com/eonu/arx/pull/12))
|
17
|
+
- Remove unnecessary git-ignored files. ([#13](https://github.com/eonu/arx/pull/13), [#10](https://github.com/eonu/arx/pull/10))
|
18
|
+
|
1
19
|
# 0.1.0
|
2
20
|
|
3
21
|
Initial commit! 🎉
|
data/Gemfile
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
|
-
gemspec
|
2
|
+
gemspec
|
data/README.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
1
|
# Arx
|
2
2
|
|
3
|
+
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/a/a8/ArXiv_web.svg/1200px-ArXiv_web.svg.png" width="15%" align="right"></img>
|
4
|
+
|
5
|
+
[![Ruby Version](https://img.shields.io/badge/ruby-~%3E%202.5-red.svg)](https://github.com/eonu/arx/blob/503a1c95ac450dbc20623491060c3fc32d213627/arx.gemspec#L19)
|
6
|
+
[![Gem](https://img.shields.io/gem/v/arx.svg)](https://rubygems.org/gems/arx)
|
7
|
+
[![License](https://img.shields.io/github/license/eonu/arx.svg)](https://github.com/eonu/arx/blob/master/LICENSE)
|
8
|
+
|
9
|
+
[![Maintainability](https://api.codeclimate.com/v1/badges/e94073dfa8c3e2442298/maintainability)](https://codeclimate.com/github/eonu/arx/maintainability)
|
10
|
+
[![Documentation](https://img.shields.io/badge/docs-rubydoc.info-blue.svg)](https://www.rubydoc.info/gems/arx/toplevel)
|
11
|
+
[![Build Status](https://travis-ci.com/eonu/arx.svg?branch=master)](https://travis-ci.com/eonu/arx)
|
12
|
+
|
3
13
|
A Ruby interface for querying academic papers on the arXiv search API.
|
data/arx.gemspec
CHANGED
@@ -6,7 +6,8 @@ Gem::Specification.new do |spec|
|
|
6
6
|
spec.name = 'arx'
|
7
7
|
spec.version = Arx::VERSION
|
8
8
|
spec.authors = ['Edwin Onuonga']
|
9
|
-
spec.email = ['
|
9
|
+
spec.email = ['ed@mail.eonu.net']
|
10
|
+
spec.homepage = 'https://github.com/eonu/arx'
|
10
11
|
|
11
12
|
spec.summary = %q{A Ruby interface for querying academic papers on the arXiv search API.}
|
12
13
|
spec.license = 'MIT'
|
@@ -15,10 +16,20 @@ Gem::Specification.new do |spec|
|
|
15
16
|
Gemfile LICENSE CHANGELOG.md README.md Rakefile arx.gemspec
|
16
17
|
]
|
17
18
|
|
19
|
+
spec.required_ruby_version = '~> 2.5'
|
20
|
+
|
18
21
|
spec.add_runtime_dependency 'nokogiri', '~> 1.10'
|
19
22
|
spec.add_runtime_dependency 'nokogiri-happymapper', '~> 0.8'
|
20
23
|
|
21
24
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
22
25
|
spec.add_development_dependency 'rake', '~> 12.3'
|
23
26
|
spec.add_development_dependency 'rspec', '~> 3.7'
|
27
|
+
|
28
|
+
spec.metadata = {
|
29
|
+
'source_code_uri' => spec.homepage,
|
30
|
+
'homepage_uri' => spec.homepage,
|
31
|
+
'documentation_uri' => 'https://www.rubydoc.info/gems/arx/toplevel',
|
32
|
+
'bug_tracker_uri' => "#{spec.homepage}/issues",
|
33
|
+
'changelog_uri' => "#{spec.homepage}/blob/master/CHANGELOG.md"
|
34
|
+
}
|
24
35
|
end
|
data/lib/arx.rb
CHANGED
@@ -16,23 +16,29 @@ module Arx
|
|
16
16
|
# The arXiv search API endpoint.
|
17
17
|
ENDPOINT = 'http://export.arxiv.org/api/query?'
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
19
|
+
class << self
|
20
|
+
|
21
|
+
# Performs a search query for papers on the arXiv search API.
|
22
|
+
#
|
23
|
+
# @param ids [Array<String>] The IDs of the arXiv papers to restrict the query to.
|
24
|
+
# @param sort_by [Symbol] The sorting criteria for the returned results (see {Query::SORT_BY}).
|
25
|
+
# @param sort_order [Symbol] The sorting order for the returned results (see {Query::SORT_ORDER}).
|
26
|
+
# @return [Array<Paper>, Paper] The {Paper}(s) found by the search query.
|
27
|
+
def search(*ids, sort_by: :relevance, sort_order: :descending)
|
28
|
+
query = Query.new(*ids, sort_by: sort_by, sort_order: sort_order)
|
29
|
+
|
30
|
+
yield query if block_given?
|
31
|
+
|
32
|
+
document = Nokogiri::XML open(ENDPOINT + query.to_s + '&max_results=10000')
|
33
|
+
document.remove_namespaces!
|
34
|
+
|
35
|
+
results = Paper.parse(document, single: false).reject {|paper| paper.id.empty?}
|
36
|
+
raise MissingPaper.new(ids.first) if results.empty? && ids.size == 1
|
37
|
+
ids.size == 1 && results.size == 1 ? results.first : results
|
38
|
+
end
|
39
|
+
|
40
|
+
alias_method :find, :search
|
41
|
+
alias_method :get, :search
|
36
42
|
end
|
37
43
|
end
|
38
44
|
|
data/lib/arx/query/query.rb
CHANGED
@@ -103,35 +103,35 @@ module Arx
|
|
103
103
|
define_method(symbol) { add_connective connective }
|
104
104
|
end
|
105
105
|
|
106
|
-
# @!method title(*values, exact:
|
106
|
+
# @!method title(*values, exact: true, connective: :and)
|
107
107
|
# Search for papers by {https://arxiv.org/help/prep#title title}.
|
108
108
|
# @param values [Array<String>] Title(s) of papers to search for.
|
109
109
|
# @param exact [Boolean] Whether to search for an exact match of the title(s).
|
110
110
|
# @param connective [Symbol] The logical connective to use (see {CONNECTIVES}). Only applies if there are multiple values.
|
111
111
|
# @return [self]
|
112
112
|
|
113
|
-
# @!method author(*values, exact:
|
113
|
+
# @!method author(*values, exact: true, connective: :and)
|
114
114
|
# Search for papers by {https://arxiv.org/help/prep#author author}.
|
115
115
|
# @param values [Array<String>] Author(s) of papers to search for.
|
116
116
|
# @param exact [Boolean] Whether to search for an exact match of the author's name(s).
|
117
117
|
# @param connective [Symbol] The logical connective to use (see {CONNECTIVES}). Only applies if there are multiple values.
|
118
118
|
# @return [self]
|
119
119
|
|
120
|
-
# @!method abstract(*values, exact:
|
120
|
+
# @!method abstract(*values, exact: true, connective: :and)
|
121
121
|
# Search for papers by {https://arxiv.org/help/prep#abstract abstract}.
|
122
122
|
# @param values [Array<String>] Abstract(s) of papers to search for.
|
123
123
|
# @param exact [Boolean] Whether to search for an exact match of the abstract(s).
|
124
124
|
# @param connective [Symbol] The logical connective to use (see {CONNECTIVES}). Only applies if there are multiple values.
|
125
125
|
# @return [self]
|
126
126
|
|
127
|
-
# @!method comment(*values, exact:
|
127
|
+
# @!method comment(*values, exact: true, connective: :and)
|
128
128
|
# Search for papers by {https://arxiv.org/help/prep#comments comment}.
|
129
129
|
# @param values [Array<String>] Comment(s) of papers to search for.
|
130
130
|
# @param exact [Boolean] Whether to search for an exact match of the comment(s).
|
131
131
|
# @param connective [Symbol] The logical connective to use (see {CONNECTIVES}). Only applies if there are multiple values.
|
132
132
|
# @return [self]
|
133
133
|
|
134
|
-
# @!method journal(*values, exact:
|
134
|
+
# @!method journal(*values, exact: true, connective: :and)
|
135
135
|
# Search for papers by {https://arxiv.org/help/prep#journal journal reference}.
|
136
136
|
# @param values [Array<String>] Journal reference(s) of papers to search for.
|
137
137
|
# @param exact [Boolean] Whether to search for an exact match of the journal refernece(s).
|
@@ -161,6 +161,8 @@ module Arx
|
|
161
161
|
define_method(name) do |*values, exact: true, connective: :and|
|
162
162
|
return if values.empty?
|
163
163
|
|
164
|
+
values.flatten!
|
165
|
+
|
164
166
|
Validate.values values
|
165
167
|
Validate.categories values if name == :category
|
166
168
|
Validate.exact exact
|
data/lib/arx/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Edwin Onuonga
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-03-
|
11
|
+
date: 2019-03-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -82,7 +82,7 @@ dependencies:
|
|
82
82
|
version: '3.7'
|
83
83
|
description:
|
84
84
|
email:
|
85
|
-
-
|
85
|
+
- ed@mail.eonu.net
|
86
86
|
executables: []
|
87
87
|
extensions: []
|
88
88
|
extra_rdoc_files: []
|
@@ -104,19 +104,24 @@ files:
|
|
104
104
|
- lib/arx/query/query.rb
|
105
105
|
- lib/arx/query/validate.rb
|
106
106
|
- lib/arx/version.rb
|
107
|
-
homepage:
|
107
|
+
homepage: https://github.com/eonu/arx
|
108
108
|
licenses:
|
109
109
|
- MIT
|
110
|
-
metadata:
|
110
|
+
metadata:
|
111
|
+
source_code_uri: https://github.com/eonu/arx
|
112
|
+
homepage_uri: https://github.com/eonu/arx
|
113
|
+
documentation_uri: https://www.rubydoc.info/gems/arx/toplevel
|
114
|
+
bug_tracker_uri: https://github.com/eonu/arx/issues
|
115
|
+
changelog_uri: https://github.com/eonu/arx/blob/master/CHANGELOG.md
|
111
116
|
post_install_message:
|
112
117
|
rdoc_options: []
|
113
118
|
require_paths:
|
114
119
|
- lib
|
115
120
|
required_ruby_version: !ruby/object:Gem::Requirement
|
116
121
|
requirements:
|
117
|
-
- - "
|
122
|
+
- - "~>"
|
118
123
|
- !ruby/object:Gem::Version
|
119
|
-
version: '
|
124
|
+
version: '2.5'
|
120
125
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
126
|
requirements:
|
122
127
|
- - ">="
|