infoboxer 0.2.7 → 0.2.8
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/.rubocop_todo.yml +1 -0
- data/CHANGELOG.md +6 -0
- data/bin/infoboxer +11 -12
- data/infoboxer.gemspec +3 -2
- data/lib/infoboxer/core_ext.rb +1 -0
- data/lib/infoboxer/definitions/en.wikipedia.org.rb +13 -13
- data/lib/infoboxer/media_wiki/page.rb +4 -3
- data/lib/infoboxer/media_wiki/traits.rb +12 -10
- data/lib/infoboxer/media_wiki.rb +97 -68
- data/lib/infoboxer/navigation/lookup.rb +30 -26
- data/lib/infoboxer/navigation/sections.rb +33 -37
- data/lib/infoboxer/navigation/selector.rb +5 -6
- data/lib/infoboxer/navigation/shortcuts.rb +12 -11
- data/lib/infoboxer/navigation.rb +2 -1
- data/lib/infoboxer/parser/context.rb +12 -13
- data/lib/infoboxer/parser/html.rb +7 -6
- data/lib/infoboxer/parser/image.rb +25 -29
- data/lib/infoboxer/parser/inline.rb +82 -79
- data/lib/infoboxer/parser/paragraphs.rb +34 -37
- data/lib/infoboxer/parser/table.rb +26 -27
- data/lib/infoboxer/parser/template.rb +12 -4
- data/lib/infoboxer/parser/util.rb +11 -16
- data/lib/infoboxer/parser.rb +8 -1
- data/lib/infoboxer/templates/base.rb +3 -3
- data/lib/infoboxer/templates/set.rb +11 -10
- data/lib/infoboxer/tree/compound.rb +7 -6
- data/lib/infoboxer/tree/document.rb +1 -0
- data/lib/infoboxer/tree/html.rb +5 -4
- data/lib/infoboxer/tree/image.rb +8 -7
- data/lib/infoboxer/tree/inline.rb +4 -5
- data/lib/infoboxer/tree/linkable.rb +3 -5
- data/lib/infoboxer/tree/list.rb +15 -16
- data/lib/infoboxer/tree/node.rb +11 -10
- data/lib/infoboxer/tree/nodes.rb +24 -23
- data/lib/infoboxer/tree/paragraphs.rb +3 -2
- data/lib/infoboxer/tree/ref.rb +6 -3
- data/lib/infoboxer/tree/table.rb +13 -13
- data/lib/infoboxer/tree/template.rb +15 -15
- data/lib/infoboxer/tree/text.rb +2 -1
- data/lib/infoboxer/tree/wikilink.rb +9 -8
- data/lib/infoboxer/tree.rb +3 -2
- data/lib/infoboxer/version.rb +2 -1
- data/lib/infoboxer.rb +24 -26
- data/regression/pages/wyoming.wiki +1085 -0
- metadata +8 -21
- data/lib/infoboxer/media_wiki/mediawiktory_patch.rb +0 -23
data/lib/infoboxer.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
|
2
3
|
require 'procme'
|
3
|
-
require 'backports/2.1.0/array/to_h'
|
4
|
-
#require 'backports/2.2.0/object/itself' Y U NO???
|
5
4
|
|
6
5
|
# Main client module for entire infoboxer functionality. If you're lucky,
|
7
6
|
# there's no other classes/modules you need to instantiate or call
|
@@ -9,7 +8,7 @@ require 'backports/2.1.0/array/to_h'
|
|
9
8
|
#
|
10
9
|
# ```ruby
|
11
10
|
# Infoboxer.wp.get('List of radio telescopes')
|
12
|
-
# # or
|
11
|
+
# # or
|
13
12
|
# Infoboxer.wikiquote.get('Vonnegut')
|
14
13
|
# ```
|
15
14
|
# ...and have fully navigable Wiki information.
|
@@ -49,10 +48,10 @@ require 'backports/2.1.0/array/to_h'
|
|
49
48
|
# ```
|
50
49
|
#
|
51
50
|
module Infoboxer
|
52
|
-
|
53
|
-
|
54
|
-
WIKIA_API_URL = 'http://%s.wikia.com/api.php'
|
51
|
+
# @private
|
52
|
+
WIKIA_API_URL = 'http://%s.wikia.com/api.php'.freeze
|
55
53
|
|
54
|
+
# @private
|
56
55
|
WIKIMEDIA_PROJECTS = {
|
57
56
|
wikipedia: 'wikipedia.org',
|
58
57
|
wikivoyage: 'wikivoyage.org',
|
@@ -62,20 +61,21 @@ module Infoboxer
|
|
62
61
|
wikinews: 'wikinews.org',
|
63
62
|
wikiversity: 'wikiversity.org',
|
64
63
|
wikisource: 'wikisource.org'
|
65
|
-
}
|
64
|
+
}.freeze
|
66
65
|
|
66
|
+
# @private
|
67
67
|
WIKIMEDIA_COMMONS = {
|
68
68
|
commons: 'commons.wikimedia.org',
|
69
69
|
species: 'species.wikimedia.org',
|
70
|
-
}
|
70
|
+
}.freeze
|
71
71
|
|
72
|
-
|
72
|
+
def wikis
|
73
|
+
@wikis ||= {}
|
74
|
+
end
|
73
75
|
|
74
|
-
public
|
75
|
-
|
76
76
|
# Includeable version of {Infoboxer.wiki}
|
77
77
|
def wiki(api_url, options = {})
|
78
|
-
|
78
|
+
wikis[api_url] ||= MediaWiki.new(api_url, options || {})
|
79
79
|
end
|
80
80
|
|
81
81
|
class << self
|
@@ -92,20 +92,20 @@ module Infoboxer
|
|
92
92
|
# ```ruby
|
93
93
|
# Infoboxer.wiki('some_url').get('Some page title')
|
94
94
|
# ```
|
95
|
-
|
95
|
+
|
96
96
|
# @!method wikipedia(lang = 'en', options = {})
|
97
97
|
# Shortcut for creating Wikipedia client.
|
98
98
|
#
|
99
99
|
# @param lang two-character code for language version
|
100
100
|
# @param options (see #wiki for list of options)
|
101
101
|
# @return [MediaWiki]
|
102
|
-
|
102
|
+
|
103
103
|
# @!method commons(options = {})
|
104
104
|
# Shortcut for creating [WikiMedia Commons](https://commons.wikimedia.org/) client.
|
105
105
|
#
|
106
106
|
# @param options (see #wiki for list of options)
|
107
107
|
# @return [MediaWiki]
|
108
|
-
|
108
|
+
|
109
109
|
# @!method wikibooks(lang = 'en', options = {})
|
110
110
|
# Shortcut for creating [Wikibooks](https://en.wikibooks.org/) client.
|
111
111
|
# See {wikipedia} for params explanation.
|
@@ -141,7 +141,7 @@ module Infoboxer
|
|
141
141
|
#
|
142
142
|
# @param options (see #wiki for list of options)
|
143
143
|
# @return [MediaWiki]
|
144
|
-
|
144
|
+
|
145
145
|
# @!method wiktionary(lang = 'en', options = {})
|
146
146
|
# Shortcut for creating [Wiktionary](https://en.wiktionary.org/) client.
|
147
147
|
# See {wikipedia} for params explanation.
|
@@ -152,13 +152,13 @@ module Infoboxer
|
|
152
152
|
#
|
153
153
|
# @overload wikia(*domains)
|
154
154
|
# @param *domains list of domains to merge, like this:
|
155
|
-
#
|
155
|
+
#
|
156
156
|
# ```ruby
|
157
157
|
# Infoboxer.wikia('tardis') # looks at tardis.wikia.com
|
158
158
|
# Infoboxer.wikia('tardis', 'ru') # looks in Russian version, ru.tardis.wikia.com
|
159
159
|
# ```
|
160
160
|
# If you are surprised by "reversing" list of subdomains, think of
|
161
|
-
# it as of chain of refinements (looking in "tardis" wiki, its "ru"
|
161
|
+
# it as of chain of refinements (looking in "tardis" wiki, its "ru"
|
162
162
|
# version, specifically).
|
163
163
|
#
|
164
164
|
# @overload wikia(*domains, options)
|
@@ -171,9 +171,7 @@ module Infoboxer
|
|
171
171
|
|
172
172
|
WIKIMEDIA_PROJECTS.each do |name, domain|
|
173
173
|
define_method name do |lang = 'en', options = {}|
|
174
|
-
if lang.is_a?(Hash)
|
175
|
-
lang, options = 'en', lang
|
176
|
-
end
|
174
|
+
lang, options = 'en', lang if lang.is_a?(Hash)
|
177
175
|
|
178
176
|
wiki("https://#{lang}.#{domain}/w/api.php", options)
|
179
177
|
end
|
@@ -189,10 +187,10 @@ module Infoboxer
|
|
189
187
|
|
190
188
|
# @!method wikipedia(lang = 'en', options = {})
|
191
189
|
# Includeable version of {Infoboxer.wikipedia}
|
192
|
-
|
190
|
+
|
193
191
|
# @!method commons(options = {})
|
194
192
|
# Includeable version of {Infoboxer.commons}
|
195
|
-
|
193
|
+
|
196
194
|
# @!method wikibooks(lang = 'en', options = {})
|
197
195
|
# Includeable version of {Infoboxer.wikibooks}
|
198
196
|
|
@@ -213,7 +211,7 @@ module Infoboxer
|
|
213
211
|
|
214
212
|
# @!method species(options = {})
|
215
213
|
# Includeable version of {Infoboxer.species}
|
216
|
-
|
214
|
+
|
217
215
|
# @!method wiktionary(lang = 'en', options = {})
|
218
216
|
# Includeable version of {Infoboxer.wiktionary}
|
219
217
|
|
@@ -223,14 +221,14 @@ module Infoboxer
|
|
223
221
|
wiki(WIKIA_API_URL % domains.reverse.join('.'), options)
|
224
222
|
end
|
225
223
|
|
226
|
-
# Sets user agent string globally. Default user agent is
|
224
|
+
# Sets user agent string globally. Default user agent is
|
227
225
|
# {MediaWiki::UA}.
|
228
226
|
#
|
229
227
|
# User agent can also be rewriten as an option to {wiki} method (and
|
230
228
|
# its shortcuts like {wikipedia}), or by using {MediaWiki#initialize}
|
231
229
|
# explicitly.
|
232
230
|
#
|
233
|
-
def
|
231
|
+
def self.user_agent=(ua)
|
234
232
|
MediaWiki.user_agent = ua
|
235
233
|
end
|
236
234
|
|