arx 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 71eb1bee2ff468ea9327736e613e40b414c2b630d4f21b148da648500af3a47e
4
- data.tar.gz: 8592a476d3abbeedfe2bef11637498b551fd478d643c5985a7c6a119aa79ca80
3
+ metadata.gz: 9276c200c40eae1213c2d0c7222586ecdf5a398ee5df259c9f2d6791603ad7ac
4
+ data.tar.gz: 711a0abadcc65ce14b7fd6ce3bb7380fb20435b951b2461250606540f52b44ab
5
5
  SHA512:
6
- metadata.gz: c9d708bd3f7d244f8557da0c9dba42d66c9a344a8f0316463879e76cc385fcf895c4c4089a5340543e166d771958d975fac685d27908755be0575e97f70625c2
7
- data.tar.gz: 382f4ec892499c9e3b062693755aaa4af6c86790a830aaee39a2435d8af902d7e6bdcfc91712eaa539ef3e066c6a6ae04c151327951477194b0ca722848b0d2c
6
+ metadata.gz: c367c950ada3d0dc3f5c3ab3bc720632bcdf63dc2484be4ca4c2795292118db5ed787b5908cbd2026b3c0623ef00ea5d4cc9c7e8928c693da8923790088af8bf
7
+ data.tar.gz: 9fe5a7b20e69ff159df7ce897cd55335a6b4d35982732eb0fb307ee018e2490fbdbb7cde639850aae1767506737d6286e37cead7f99baea581e1dfedd4e2158b
@@ -1,3 +1,48 @@
1
+ # 1.2.0
2
+
3
+ #### Major changes
4
+
5
+ - Adds serialization support through the following methods ([#63](https://github.com/eonu/arx/pull/63)):
6
+ - `to_h`: Serialize into a Ruby hash (with symbol keys). Accepts a boolean argument, representing whether or not to deep-serialize nested `Author` and `Category` objects (defaults to `false`).
7
+ - `as_json`: Serialize into a Ruby hash which is also a valid JSON hash.
8
+ - `to_json`: Serialize into a valid JSON string.
9
+ - Remove version filter from query ID list. ([#69](https://github.com/eonu/arx/pull/69))
10
+ > Previously, all of the following would return the latest paper, `1807.06918v2`:
11
+ > ```ruby
12
+ > Arx.get('1807.06918').version #=> 2
13
+ > Arx.get('1807.06918v1').version #=> 2
14
+ > Arx.get('1807.06918v2').version #=> 2
15
+ > ```
16
+
17
+ - Adds `ATTRIBUTES` constant for `Paper`, `Author` and `Category` entities, as a list of which attributes are available for the entity. ([#63](https://github.com/eonu/arx/pull/63))
18
+ - Remove key-word arguments from `Paper#id` and `Paper#url`. ([#70](https://github.com/eonu/arx/pull/70))
19
+ > Previously, `Paper#id` and `Paper#url` accepted a `version` key-word argument, which was a boolean variable indicating whether or not to include the version number in the ID or URL.
20
+ >
21
+ > This has now been changed to a regular argument, which still defaults to `false`.
22
+ > ```ruby
23
+ > paper = Arx.get('cond-mat/9609089')
24
+ >
25
+ > # Old (no longer works)
26
+ > paper.id(version: true)
27
+ > paper.url(version: true)
28
+ >
29
+ > # New
30
+ > paper.id(true) #=> "cond-mat/9609089v1"
31
+ > paper.url(true) #=> "http://arxiv.org/abs/cond-mat/9609089v1"
32
+ > ```
33
+
34
+ - Add equality operator (`==`) to entities. ([#68](https://github.com/eonu/arx/pull/68))
35
+
36
+ #### Minor changes
37
+
38
+ - Add more category mappings to `CATEGORIES`. ([#71](https://github.com/eonu/arx/pull/71))
39
+ - Add licensing information to `README.md` under the *Acknowledgements* section. ([#66](https://github.com/eonu/arx/pull/66))
40
+ - Add `yard` development dependency for documentation. ([#65](https://github.com/eonu/arx/pull/65))
41
+ - Make documentation spacing uniform. ([#64](https://github.com/eonu/arx/pull/64))
42
+ - Coveralls:
43
+ - `coveralls` [`= 0.8.22` to `= 0.8.23`] ([#62](https://github.com/eonu/arx/pull/62))
44
+ - `thor` [`~> 0.19.4` to `~> 0.20.3`] ([#67](https://github.com/eonu/arx/pull/67))
45
+
1
46
  # 1.1.0
2
47
 
3
48
  #### Major changes
data/README.md CHANGED
@@ -310,11 +310,11 @@ paper = Arx('1809.09415')
310
310
 
311
311
  paper.id
312
312
  #=> "1809.09415"
313
- paper.id(version: true)
313
+ paper.id(true)
314
314
  #=> "1809.09415v1"
315
315
  paper.url
316
316
  #=> "http://arxiv.org/abs/1809.09415"
317
- paper.url(version: true)
317
+ paper.url(true)
318
318
  #=> "http://arxiv.org/abs/1809.09415v1"
319
319
  paper.version
320
320
  #=> 1
@@ -398,12 +398,23 @@ category.full_name
398
398
  #=> "Condensed Matter"
399
399
  ```
400
400
 
401
- # Thanks
401
+ # Acknowledgements
402
402
 
403
403
  A large portion of this library is based on the brilliant work done by [Scholastica](https://github.com/scholastica) in their [`arxiv`](https://github.com/scholastica/arxiv) gem for retrieving individual papers from arXiv through the search API.
404
404
 
405
405
  Arx was created mostly due to the seemingly inactive nature of Scholastica's repository. Additionally, it would have been infeasible to contribute such large changes to an already well-established gem, especially since https://scholasticahq.com/ appears to be dependent upon this gem.
406
406
 
407
+ Nevertheless, a special thanks goes out to Scholastica for providing the influence for Arx.
408
+
407
409
  ---
408
410
 
409
- Nevertheless, a special thanks goes out to Scholastica for providing the influence for Arx.
411
+ <p align="center">
412
+ <b>Arx</b> &copy; 2019-2020, Edwin Onuonga - Released under the <a href="http://mit-license.org/">MIT</a> License.<br/>
413
+ <em>Authored and maintained by Edwin Onuonga.</em>
414
+
415
+ <p align="center">
416
+ <a href="https://eonu.net">eonu.net</a>&nbsp;&middot;&nbsp;
417
+ GitHub: <a href="https://github.com/eonu">@eonu</a>&nbsp;&middot;&nbsp;
418
+ Email: <a href="mailto:ed@eonu.net">ed@eonu.net</a>
419
+ </p>
420
+ </p>
@@ -23,9 +23,10 @@ Gem::Specification.new do |spec|
23
23
 
24
24
  spec.add_development_dependency 'bundler', '>= 1.17'
25
25
  spec.add_development_dependency 'rake', '~> 12.3'
26
- spec.add_development_dependency 'thor', '~> 0.19.4'
26
+ spec.add_development_dependency 'thor', '~> 0.20.3'
27
27
  spec.add_development_dependency 'rspec', '~> 3.7'
28
- spec.add_development_dependency 'coveralls', '0.8.22'
28
+ spec.add_development_dependency 'coveralls', '0.8.23'
29
+ spec.add_development_dependency 'yard', '~> 0.9', '>= 0.9.10'
29
30
 
30
31
  spec.metadata = {
31
32
  'source_code_uri' => spec.homepage,
data/lib/arx.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'cgi'
4
+ require 'json'
4
5
  require 'nokogiri'
5
6
  require 'open-uri'
6
7
  require 'happymapper'
@@ -21,6 +21,14 @@ module Arx
21
21
  'cond-mat.stat-mech' => 'Statistical Mechanics',
22
22
  'cond-mat.str-el' => 'Strongly Correlated Electrons',
23
23
  'cond-mat.supr-con' => 'Superconductivity',
24
+ 'dis-nn' => 'Disordered Systems and Neural Networks', # cond-mat
25
+ 'mes-hall' => 'Mesoscale and Nanoscale Physics', # cond-mat
26
+ 'mtrl-sci' => 'Materials Science', # cond-mat
27
+ 'quant-gas' => 'Quantum Gases', # cond-mat
28
+ 'soft' => 'Soft Condensed Matter', # cond-mat
29
+ 'stat-mech' => 'Statistical Mechanics', # cond-mat
30
+ 'str-el' => 'Strongly Correlated Electrons', # cond-mat
31
+ 'supr-con' => 'Superconductivity', # cond-mat
24
32
  'cs' => 'Computer Science',
25
33
  'cs.AI' => 'Artificial Intelligence',
26
34
  'cs.AR' => 'Hardware Architecture',
@@ -138,6 +146,28 @@ module Arx
138
146
  'physics.pop-ph' => 'Popular Physics',
139
147
  'physics.soc-ph' => 'Physics and Society',
140
148
  'physics.space-ph' => 'Space Physics',
149
+ 'acc-ph' => 'Accelerator Physics', # physics
150
+ 'ao-ph' => 'Atmospheric and Oceanic Physics', # physics
151
+ 'app-ph' => 'Applied Physics', # physics
152
+ 'atm-clus' => 'Atomic and Molecular Clusters', # physics
153
+ 'atom-ph' => 'Atomic Physics', # physics
154
+ 'bio-ph' => 'Biological Physics', # physics
155
+ 'chem-ph' => 'Chemical Physics', # physics
156
+ 'class-ph' => 'Classical Physics', # physics
157
+ 'comp-ph' => 'Computational Physics', # physics
158
+ 'data-an' => 'Data Analysis, Statistics and Probability', # physics
159
+ 'ed-ph' => 'Physics Education', # physics
160
+ 'flu-dyn' => 'Fluid Dynamics', # physics
161
+ 'gen-ph' => 'General Physics', # physics
162
+ 'geo-ph' => 'Geophysics', # physics
163
+ 'hist-ph' => 'History and Philosophy of Physics', # physics
164
+ 'ins-det' => 'Instrumentation and Detectors', # physics
165
+ 'med-ph' => 'Medical Physics', # physics
166
+ 'optics' => 'Optics', # physics
167
+ 'plasm-ph' => 'Plasma Physics', # physics
168
+ 'pop-ph' => 'Popular Physics', # physics
169
+ 'soc-ph' => 'Physics and Society', # physics
170
+ 'space-ph' => 'Space Physics', # physics
141
171
  'q-bio' => 'Quantitative Biology',
142
172
  'q-bio.BM' => 'Biomolecules',
143
173
  'q-bio.CB' => 'Cell Behavior',
@@ -1,6 +1,7 @@
1
1
  module Arx
2
2
 
3
3
  # Class for cleaning strings.
4
+ #
4
5
  # @private
5
6
  class Cleaner
6
7
 
@@ -10,6 +11,7 @@ module Arx
10
11
  class << self
11
12
 
12
13
  # Cleans strings.
14
+ #
13
15
  # @param [String] string Removes newline/return characters and multiple spaces from a string.
14
16
  # @return [String] The cleaned string.
15
17
  def clean(string)
@@ -5,24 +5,63 @@ module Arx
5
5
  include HappyMapper
6
6
  include Inspector
7
7
 
8
+ # The attributes of an arXiv paper's author.
9
+ ATTRIBUTES = %i[name affiliated? affiliations]
10
+
8
11
  tag 'author'
9
12
 
10
13
  # @!method name
11
14
  # The name of the author.
15
+ #
12
16
  # @return [String]
13
17
  element :name, Cleaner, tag: 'name', parser: :clean
14
18
 
15
19
  # @!method affiliations
16
20
  # The author's affiliations.
21
+ #
17
22
  # @return [Array<String>]
18
23
  has_many :affiliations, Cleaner, tag: 'affiliation', parser: :clean
19
24
 
20
25
  # Whether or not the author has any affiliations.
26
+ #
21
27
  # @return [Boolean]
22
28
  def affiliated?
23
29
  !affiliations.empty?
24
30
  end
25
31
 
26
- inspector :name, :affiliated?, :affiliations
32
+ # Serializes the {Author} object into a +Hash+.
33
+ #
34
+ # @return [Hash]
35
+ def to_h
36
+ Hash[*ATTRIBUTES.map {|_| [_, send(_)]}.flatten(1)]
37
+ end
38
+
39
+ # Serializes the {Author} object into a valid JSON hash.
40
+ #
41
+ # @return [Hash] The resulting JSON hash.
42
+ def as_json
43
+ JSON.parse to_json
44
+ end
45
+
46
+ # Serializes the {Author} object into a valid JSON string.
47
+ #
48
+ # @return [String] The resulting JSON string.
49
+ def to_json
50
+ to_h.to_json
51
+ end
52
+
53
+ # Equality check against another author.
54
+ #
55
+ # @note This only performs a basic equality check between the authors' names.
56
+ # @param author [Author] The author to compare against.
57
+ def ==(author)
58
+ if author.is_a? Author
59
+ name == author.name
60
+ else
61
+ false
62
+ end
63
+ end
64
+
65
+ inspector *ATTRIBUTES
27
66
  end
28
67
  end
@@ -5,20 +5,57 @@ module Arx
5
5
  include HappyMapper
6
6
  include Inspector
7
7
 
8
+ # The attributes of an arXiv paper's category.
9
+ ATTRIBUTES = %i[name full_name]
10
+
8
11
  tag 'category'
9
12
 
10
13
  # @!method name
11
14
  # The abbreviated name of the category.
15
+ #
12
16
  # @return [String]
13
17
  attribute :name, Cleaner, parser: :clean, tag: 'term'
14
18
 
15
19
  # The full name of the category.
20
+ #
16
21
  # @see CATEGORIES
17
22
  # @return [String]
18
23
  def full_name
19
24
  CATEGORIES[name]
20
25
  end
21
26
 
22
- inspector :name, :full_name
27
+ # Serializes the {Category} object into a +Hash+.
28
+ #
29
+ # @return [Hash]
30
+ def to_h
31
+ Hash[*ATTRIBUTES.map {|_| [_, send(_)]}.flatten(1)]
32
+ end
33
+
34
+ # Serializes the {Category} object into a valid JSON hash.
35
+ #
36
+ # @return [Hash] The resulting JSON hash.
37
+ def as_json
38
+ JSON.parse to_json
39
+ end
40
+
41
+ # Serializes the {Category} object into a valid JSON string.
42
+ #
43
+ # @return [String] The resulting JSON string.
44
+ def to_json
45
+ to_h.to_json
46
+ end
47
+
48
+ # Equality check against another category.
49
+ #
50
+ # @param category [Category] The category to compare against.
51
+ def ==(category)
52
+ if category.is_a? Category
53
+ name == category.name
54
+ else
55
+ false
56
+ end
57
+ end
58
+
59
+ inspector *ATTRIBUTES
23
60
  end
24
61
  end
@@ -1,6 +1,7 @@
1
1
  module Arx
2
2
 
3
3
  # Helper entity/model representing a link on an arXiv paper.
4
+ #
4
5
  # @private
5
6
  class Link
6
7
  include HappyMapper
@@ -5,37 +5,54 @@ module Arx
5
5
  include HappyMapper
6
6
  include Inspector
7
7
 
8
+ # The attributes of an arXiv paper.
9
+ # @note {comment}, {journal}, {pdf_url} and {doi_url} may raise errors when called.
10
+ ATTRIBUTES = %i[
11
+ id url version revision?
12
+ title summary authors
13
+ primary_category categories
14
+ published_at updated_at
15
+ comment? comment
16
+ journal? journal
17
+ pdf? pdf_url
18
+ doi? doi_url
19
+ ]
20
+
8
21
  tag 'entry'
9
22
 
10
23
  element :id, Cleaner, parser: :clean, tag: 'id'
11
24
  # The identifier of the paper.
25
+ #
12
26
  # @note This is either in {OLD_IDENTIFIER_FORMAT} or {NEW_IDENTIFIER_FORMAT}.
13
27
  # @example
14
28
  # 1705.01662v1
15
29
  # cond-mat/0211034
16
30
  # @param version [Boolean] Whether or not to include the paper's version.
17
31
  # @return [String] The paper's identifier.
18
- def id(version: false)
32
+ def id(version = false)
19
33
  Cleaner.extract_id @id, version: version
20
34
  end
21
35
 
22
36
  # The URL of the paper on the arXiv website.
37
+ #
23
38
  # @example
24
39
  # http://arxiv.org/abs/1705.01662v1
25
40
  # http://arxiv.org/abs/cond-mat/0211034
26
41
  # @param version [Boolean] Whether or not to include the paper's version.
27
42
  # @return [String] The paper's arXiv URL.
28
- def url(version: false)
29
- "http://arxiv.org/abs/#{id version: version}"
43
+ def url(version = false)
44
+ "http://arxiv.org/abs/#{id version}"
30
45
  end
31
46
 
32
47
  # The version of the paper.
48
+ #
33
49
  # @return [Integer] The paper's version.
34
50
  def version
35
51
  Cleaner.extract_version @id
36
52
  end
37
53
 
38
54
  # Whether the paper is a revision or not.
55
+ #
39
56
  # @note A paper is a revision if its {version} is greater than 1.
40
57
  # @return [Boolean]
41
58
  def revision?
@@ -44,47 +61,56 @@ module Arx
44
61
 
45
62
  # @!method updated_at
46
63
  # The date that the paper was last updated.
64
+ #
47
65
  # @return [DateTime]
48
66
  element :updated_at, DateTime, tag: 'updated'
49
67
 
50
68
  # @!method published_at
51
69
  # The original publish/submission date of the paper.
70
+ #
52
71
  # @return [DateTime]
53
72
  element :published_at, DateTime, tag: 'published'
54
73
 
55
74
  # @!method title
56
75
  # The title of the paper.
76
+ #
57
77
  # @return [DateTime]
58
78
  element :title, Cleaner, parser: :clean, tag: 'title'
59
79
 
60
80
  # @!method authors
61
81
  # The authors of the paper.
82
+ #
62
83
  # @return [Array<Author>]
63
84
  has_many :authors, Author, tag: 'author'
64
85
 
65
86
  # @!method primary_category
66
87
  # The primary category of the paper.
88
+ #
67
89
  # @return [Category]
68
90
  element :primary_category, Category, tag: 'primary_category'
69
91
  alias_method :category, :primary_category
70
92
 
71
93
  # @!method categories
72
94
  # The categories of the paper.
95
+ #
73
96
  # @return [Array<Category>]
74
97
  has_many :categories, Category, tag: 'category'
75
98
 
76
99
  # @!method summary
77
100
  # The summary (or abstract) of the paper.
101
+ #
78
102
  # @return [String]
79
103
  element :summary, Cleaner, parser: :clean, tag: 'summary'
80
104
  alias_method :abstract, :summary
81
105
 
82
106
  # @!method comment?
83
107
  # Whether or not the paper has a comment.
108
+ #
84
109
  # @return [Boolean]
85
110
 
86
111
  # @!method comment
87
112
  # The comment of the paper.
113
+ #
88
114
  # @note This is an optional metadata field on an arXiv paper. To check whether the paper has a comment, use {comment?}
89
115
  # @raise {Error::MissingField} If the paper does not have a comment.
90
116
  # @return [String]
@@ -92,10 +118,12 @@ module Arx
92
118
 
93
119
  # @!method journal?
94
120
  # Whether or not the paper has a journal reference.
121
+ #
95
122
  # @return [Boolean]
96
123
 
97
124
  # @!method journal
98
125
  # The journal reference of the paper.
126
+ #
99
127
  # @note This is an optional metadata field on an arXiv paper. To check whether the paper has a journal reference, use {journal?}
100
128
  # @raise {Error::MissingField} If the paper does not have a journal reference.
101
129
  # @return [String]
@@ -121,22 +149,26 @@ module Arx
121
149
 
122
150
  # @!method pdf?
123
151
  # Whether or not the paper has a PDF link.
152
+ #
124
153
  # @return [Boolean]
125
154
 
126
155
  # @!method pdf_url
127
156
  # Link to the PDF version of the paper.
157
+ #
128
158
  # @note This is an optional metadata field on an arXiv paper. To check whether the paper has a PDF link, use {pdf?}
129
159
  # @raise {Error::MissingLink} If the paper does not have a PDF link.
130
160
  # @return [String]
131
161
 
132
162
  # @!method doi?
133
163
  # Whether or not the paper has a DOI (Digital Object Identifier) link.
164
+ #
134
165
  # @see https://arxiv.org/help/jref#doi
135
166
  # @see https://arxiv.org/help/prep#doi
136
167
  # @return [Boolean]
137
168
 
138
169
  # @!method doi_url
139
170
  # Link to the DOI (Digital Object Identifier) of the paper.
171
+ #
140
172
  # @see https://arxiv.org/help/jref#doi
141
173
  # @see https://arxiv.org/help/prep#doi
142
174
  # @note This is an optional metadata field on an arXiv paper. To check whether the paper has a DOI link, use {doi?}
@@ -159,15 +191,49 @@ module Arx
159
191
  end
160
192
  end
161
193
 
162
- inspector *%i[
163
- id url version revision?
164
- title summary authors
165
- primary_category categories
166
- published_at updated_at
167
- comment? comment
168
- journal? journal
169
- pdf? pdf_url
170
- doi? doi_url
171
- ]
194
+ # Serializes the {Paper} object into a +Hash+.
195
+ #
196
+ # @param deep [Boolean] Whether to deep-serialize {Author} and {Category} objects.
197
+ # @return [Hash]
198
+ def to_h(deep = false)
199
+ Hash[*ATTRIBUTES.map {|_| [_, send(_)] rescue nil}.compact.flatten(1)].tap do |hash|
200
+ if deep
201
+ hash[:authors].map! &:to_h
202
+ hash[:categories].map! &:to_h
203
+ hash[:primary_category] = hash[:primary_category].to_h
204
+ end
205
+ end
206
+ end
207
+
208
+ # Serializes the {Paper} object into a valid JSON hash.
209
+ #
210
+ # @note Deep-serializes {Author} and {Category} objects.
211
+ # @return [Hash] The resulting JSON hash.
212
+ def as_json
213
+ JSON.parse to_json
214
+ end
215
+
216
+ # Serializes the {Paper} object into a valid JSON string.
217
+ #
218
+ # @note Deep-serializes {Author} and {Category} objects.
219
+ # @return [String] The resulting JSON string.
220
+ def to_json
221
+ to_h(true).to_json
222
+ end
223
+
224
+ # Equality check against another paper.
225
+ #
226
+ # @note This only performs a basic equality check between the papers' identifiers (disregarding version).
227
+ # This means that a different version of the same paper will be viewed as equal.
228
+ # @param paper [Paper] The paper to compare against.
229
+ def ==(paper)
230
+ if paper.is_a? Paper
231
+ id == paper.id
232
+ else
233
+ false
234
+ end
235
+ end
236
+
237
+ inspector *ATTRIBUTES
172
238
  end
173
239
  end
@@ -2,6 +2,7 @@ module Arx
2
2
 
3
3
  # Restricts +inspect+ to dump a whitelist of methods on an object.
4
4
  # It will always provide `object_id` at a minimum.
5
+ #
5
6
  # @private
6
7
  module Inspector
7
8
 
@@ -24,6 +25,7 @@ module Arx
24
25
  end
25
26
 
26
27
  # Defines helper +inspector_fields+ instance variable & method, and +inspector+ instance method on the target object.
28
+ #
27
29
  # @param [Object] source An arbitrary object (the object that +includes+ the +Inspector+ module).
28
30
  def included(source)
29
31
  inspected << source
@@ -23,6 +23,7 @@ module Arx
23
23
  }
24
24
 
25
25
  # Supported fields for the search queries made to the arXiv search API.
26
+ #
26
27
  # @see https://arxiv.org/help/prep arXiv metadata fields
27
28
  # @see https://arxiv.org/help/api/user-manual#query_details arXiv user manual (query details)
28
29
  FIELDS = {
@@ -66,7 +67,7 @@ module Arx
66
67
 
67
68
  ids.flatten!
68
69
  unless ids.empty?
69
- ids.map! &Cleaner.method(:extract_id)
70
+ ids.map! {|id| Cleaner.extract_id(id, version: true)}
70
71
  @query << "&#{PARAMS[:id_list]}=#{ids * ','}"
71
72
  end
72
73
 
@@ -75,16 +76,19 @@ module Arx
75
76
 
76
77
  # @!method and
77
78
  # Logical conjunction (+AND+) of subqueries.
79
+ #
78
80
  # @see https://arxiv.org/help/api/user-manual#query_details arXiv user manual
79
81
  # @return [self]
80
82
 
81
83
  # @!method and_not
82
84
  # Logical negated conjunction (+ANDNOT+) of subqueries.
85
+ #
83
86
  # @see https://arxiv.org/help/api/user-manual#query_details arXiv user manual
84
87
  # @return [self]
85
88
 
86
89
  # @!method or
87
90
  # Logical disjunction (+OR+) of subqueries.
91
+ #
88
92
  # @see https://arxiv.org/help/api/user-manual#query_details arXiv user manual
89
93
  # @return [self]
90
94
 
@@ -94,6 +98,7 @@ module Arx
94
98
 
95
99
  # @!method title(*values, exact: true, connective: :and)
96
100
  # Search for papers by {https://arxiv.org/help/prep#title title}.
101
+ #
97
102
  # @param values [Array<String>] Title(s) of papers to search for.
98
103
  # @param exact [Boolean] Whether to search for an exact match of the title(s).
99
104
  # @param connective [Symbol] The logical connective to use (see {CONNECTIVES}). Only applies if there are multiple values.
@@ -101,6 +106,7 @@ module Arx
101
106
 
102
107
  # @!method author(*values, exact: true, connective: :and)
103
108
  # Search for papers by {https://arxiv.org/help/prep#author author}.
109
+ #
104
110
  # @param values [Array<String>] Author(s) of papers to search for.
105
111
  # @param exact [Boolean] Whether to search for an exact match of the author's name(s).
106
112
  # @param connective [Symbol] The logical connective to use (see {CONNECTIVES}). Only applies if there are multiple values.
@@ -108,6 +114,7 @@ module Arx
108
114
 
109
115
  # @!method abstract(*values, exact: true, connective: :and)
110
116
  # Search for papers by {https://arxiv.org/help/prep#abstract abstract}.
117
+ #
111
118
  # @param values [Array<String>] Abstract(s) of papers to search for.
112
119
  # @param exact [Boolean] Whether to search for an exact match of the abstract(s).
113
120
  # @param connective [Symbol] The logical connective to use (see {CONNECTIVES}). Only applies if there are multiple values.
@@ -115,6 +122,7 @@ module Arx
115
122
 
116
123
  # @!method comment(*values, exact: true, connective: :and)
117
124
  # Search for papers by {https://arxiv.org/help/prep#comments comment}.
125
+ #
118
126
  # @param values [Array<String>] Comment(s) of papers to search for.
119
127
  # @param exact [Boolean] Whether to search for an exact match of the comment(s).
120
128
  # @param connective [Symbol] The logical connective to use (see {CONNECTIVES}). Only applies if there are multiple values.
@@ -122,6 +130,7 @@ module Arx
122
130
 
123
131
  # @!method journal(*values, exact: true, connective: :and)
124
132
  # Search for papers by {https://arxiv.org/help/prep#journal journal reference}.
133
+ #
125
134
  # @param values [Array<String>] Journal reference(s) of papers to search for.
126
135
  # @param exact [Boolean] Whether to search for an exact match of the journal refernece(s).
127
136
  # @param connective [Symbol] The logical connective to use (see {CONNECTIVES}). Only applies if there are multiple values.
@@ -129,18 +138,21 @@ module Arx
129
138
 
130
139
  # @!method category(*values, connective: :and)
131
140
  # Search for papers by {https://arxiv.org/help/prep#category category}.
141
+ #
132
142
  # @param values [Array<String>] Category(s) of papers to search for.
133
143
  # @param connective [Symbol] The logical connective to use (see {CONNECTIVES}). Only applies if there are multiple values.
134
144
  # @return [self]
135
145
 
136
146
  # @!method report(*values, connective: :and)
137
147
  # Search for papers by {https://arxiv.org/help/prep#report report number}.
148
+ #
138
149
  # @param values [Array<String>] Report number(s) of papers to search for.
139
150
  # @param connective [Symbol] The logical connective to use (see {CONNECTIVES}). Only applies if there are multiple values.
140
151
  # @return [self]
141
152
 
142
153
  # @!method all(*values, exact: true, connective: :and)
143
154
  # Search for papers by all fields (see {FIELDS}).
155
+ #
144
156
  # @param values [Array<String>] Field value(s) of papers to search for.
145
157
  # @param exact [Boolean] Whether to search for an exact match of the comment(s).
146
158
  # @param connective [Symbol] The logical connective to use (see {CONNECTIVES}). Only applies if there are multiple values.
@@ -1,6 +1,7 @@
1
1
  module Arx
2
2
 
3
3
  # Validations for arXiv search query fields and identifier schemes.
4
+ #
4
5
  # @private
5
6
  module Validate
6
7
  class << self
@@ -5,7 +5,7 @@ module Arx
5
5
  # The current version of Arx.
6
6
  VERSION = {
7
7
  major: 1,
8
- minor: 1,
8
+ minor: 2,
9
9
  patch: 0,
10
10
  meta: nil,
11
11
  }.compact.values.join('.').freeze
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: 1.1.0
4
+ version: 1.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-04-24 00:00:00.000000000 Z
11
+ date: 2019-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.19.4
75
+ version: 0.20.3
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.19.4
82
+ version: 0.20.3
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rspec
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -100,14 +100,34 @@ dependencies:
100
100
  requirements:
101
101
  - - '='
102
102
  - !ruby/object:Gem::Version
103
- version: 0.8.22
103
+ version: 0.8.23
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - '='
109
109
  - !ruby/object:Gem::Version
110
- version: 0.8.22
110
+ version: 0.8.23
111
+ - !ruby/object:Gem::Dependency
112
+ name: yard
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.9'
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: 0.9.10
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - "~>"
126
+ - !ruby/object:Gem::Version
127
+ version: '0.9'
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: 0.9.10
111
131
  description:
112
132
  email:
113
133
  - ed@eonu.net