wiki-api 0.1.0 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/.rubocop.yml +24 -0
- data/.travis.yml +12 -0
- data/Gemfile +2 -0
- data/README.md +60 -62
- data/Rakefile +13 -1
- data/bin/console +8 -0
- data/lib/wiki/api/connect.rb +48 -38
- data/lib/wiki/api/page.rb +35 -42
- data/lib/wiki/api/page_block.rb +16 -17
- data/lib/wiki/api/page_headline.rb +51 -50
- data/lib/wiki/api/page_link.rb +13 -14
- data/lib/wiki/api/page_list_item.rb +10 -13
- data/lib/wiki/api/util.rb +18 -20
- data/lib/wiki/api/version.rb +3 -1
- data/lib/wiki/api.rb +9 -8
- data/test/test_helper.rb +4 -7
- data/test/unit/wiki_connect.rb +18 -25
- data/test/unit/wiki_page_offline.rb +144 -111
- data/wiki-api.gemspec +20 -17
- metadata +53 -34
@@ -1,8 +1,6 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require '
|
4
|
-
require 'test/unit'
|
5
|
-
require File.expand_path(File.dirname(__FILE__) + "/../../lib/wiki/api")
|
3
|
+
require 'test_helper'
|
6
4
|
|
7
5
|
#
|
8
6
|
# Testing the parsing of URI (with a predownloaded HTML file):
|
@@ -13,59 +11,55 @@ require File.expand_path(File.dirname(__FILE__) + "/../../lib/wiki/api")
|
|
13
11
|
#
|
14
12
|
|
15
13
|
class WikiPageOfflinePage < Test::Unit::TestCase
|
16
|
-
|
17
14
|
# this global is required to resolve URIs (MediaWiki uses relative paths in their links)
|
18
|
-
URI_CONFIG = { uri:
|
15
|
+
URI_CONFIG = { uri: 'https://en.wiktionary.org' }.freeze
|
19
16
|
# use local file for test loading
|
20
|
-
PAGE_CONFIG = { file: File.expand_path(File.dirname(__FILE__)
|
17
|
+
PAGE_CONFIG = { file: File.expand_path("#{File.dirname(__FILE__)}/files/Wiktionary_program.html") }.freeze
|
21
18
|
|
22
19
|
def setup
|
23
20
|
# NOTE: comment Page.config, to use the online MediaWiki instance
|
24
|
-
Wiki::Api::Connect.config = URI_CONFIG
|
25
|
-
Wiki::Api::Connect.config.merge!
|
21
|
+
Wiki::Api::Connect.config = URI_CONFIG.merge(PAGE_CONFIG)
|
22
|
+
# Wiki::Api::Connect.config.merge!(PAGE_CONFIG)
|
26
23
|
end
|
27
24
|
|
28
|
-
def teardown
|
29
|
-
end
|
25
|
+
def teardown; end
|
30
26
|
|
31
27
|
# test simple page invocation
|
32
28
|
def test_headlines_nested
|
33
|
-
|
34
29
|
# load page
|
35
|
-
page = Wiki::Api::Page.new
|
36
|
-
assert
|
30
|
+
page = Wiki::Api::Page.new(name: 'program')
|
31
|
+
assert(page.is_a?(Wiki::Api::Page), 'expected Page object')
|
37
32
|
headline = page.root_headline
|
38
|
-
assert
|
39
|
-
assert
|
33
|
+
assert(headline.is_a?(Wiki::Api::PageHeadline), 'expected PageHeadline object')
|
34
|
+
assert(headline.name == 'program', 'expected developer headline')
|
40
35
|
|
41
|
-
# search nested headline: english
|
42
|
-
english = headline.headline(
|
43
|
-
assert
|
36
|
+
# search nested headline: english
|
37
|
+
english = headline.headline('english').first
|
38
|
+
assert(english.is_a?(Wiki::Api::PageHeadline), 'expected PageHeadline object')
|
44
39
|
|
45
40
|
# search nested headline: noun
|
46
|
-
noun = english.headline(
|
47
|
-
assert
|
41
|
+
noun = english.headline('noun').first
|
42
|
+
assert(noun.is_a?(Wiki::Api::PageHeadline), 'expected PageHeadline object')
|
48
43
|
|
49
44
|
# get block
|
50
45
|
block = noun.block
|
51
|
-
assert
|
46
|
+
assert(block.is_a?(Wiki::Api::PageBlock), 'expected PageBlock object')
|
52
47
|
|
53
48
|
# list items
|
54
49
|
block.list_items.each do |list_item|
|
55
|
-
assert
|
50
|
+
assert(list_item.is_a?(Wiki::Api::PageListItem), 'expected PageListItem object')
|
56
51
|
# links
|
57
52
|
list_item.links.each do |link|
|
58
|
-
assert
|
53
|
+
assert(link.is_a?(Wiki::Api::PageLink), 'expected PageListItem object')
|
59
54
|
end
|
60
55
|
end
|
61
56
|
|
62
57
|
# links
|
63
58
|
block.links.each do |link|
|
64
|
-
assert
|
59
|
+
assert(link.is_a?(Wiki::Api::PageLink), 'expected PageListItem object')
|
65
60
|
end
|
66
61
|
end
|
67
62
|
|
68
|
-
|
69
63
|
# def test_headlines_verify_tree_objects
|
70
64
|
# page = Wiki::Api::Page.new name: "program"
|
71
65
|
# assert page.is_a?(Wiki::Api::Page), "expected Page object"
|
@@ -101,162 +95,201 @@ class WikiPageOfflinePage < Test::Unit::TestCase
|
|
101
95
|
# end
|
102
96
|
# end
|
103
97
|
|
104
|
-
|
105
98
|
def test_headlines_verify_tree_data
|
106
|
-
page = Wiki::Api::Page.new
|
107
|
-
|
99
|
+
page = Wiki::Api::Page.new(name: 'program')
|
100
|
+
root_headline = page.root_headline
|
108
101
|
# get root
|
109
|
-
assert
|
110
|
-
|
102
|
+
assert(root_headline.name == 'program', 'expected program name')
|
103
|
+
|
111
104
|
# iterate one deep and verify headline index names
|
112
|
-
|
113
|
-
assert
|
105
|
+
root_headline.headlines.each do |name, headline|
|
106
|
+
assert(headline.name == name)
|
114
107
|
end
|
115
|
-
headlines =
|
108
|
+
headlines = root_headline.headlines.values
|
116
109
|
|
117
110
|
# English
|
118
111
|
english_headlines = headlines[0]
|
119
|
-
assert
|
112
|
+
assert(english_headlines.name == 'English')
|
120
113
|
english_headlines = english_headlines.headlines.values
|
121
|
-
assert
|
122
|
-
assert
|
123
|
-
assert
|
124
|
-
assert
|
114
|
+
assert(english_headlines[0].name == 'Alternative_forms')
|
115
|
+
assert(english_headlines[1].name == 'Etymology')
|
116
|
+
assert(english_headlines[2].name == 'Pronunciation')
|
117
|
+
assert(english_headlines[3].name == 'Noun')
|
125
118
|
noun_english_headlines = english_headlines[3].headlines.values
|
126
|
-
assert
|
127
|
-
assert
|
128
|
-
assert
|
129
|
-
assert
|
119
|
+
assert(noun_english_headlines[0].name == 'Usage_notes')
|
120
|
+
assert(noun_english_headlines[1].name == 'Synonyms')
|
121
|
+
assert(noun_english_headlines[2].name == 'Translations')
|
122
|
+
assert(english_headlines[4].name == 'Verb')
|
130
123
|
verb_english_headlines = english_headlines[4].headlines.values
|
131
|
-
assert
|
132
|
-
assert
|
133
|
-
assert
|
124
|
+
assert(verb_english_headlines[0].name == 'Related_terms')
|
125
|
+
assert(verb_english_headlines[1].name == 'Translations_2')
|
126
|
+
assert(english_headlines[5].name == 'External_links')
|
134
127
|
|
135
128
|
# Czech
|
136
129
|
czech_headlines = headlines[1]
|
137
|
-
assert
|
130
|
+
assert(czech_headlines.name == 'Czech')
|
138
131
|
czech_headlines = czech_headlines.headlines.values
|
139
|
-
assert
|
140
|
-
assert
|
132
|
+
assert(czech_headlines[0].name == 'Pronunciation_2')
|
133
|
+
assert(czech_headlines[1].name == 'Noun_2')
|
141
134
|
|
142
135
|
# Hungarian
|
143
136
|
hungarian_headlines = headlines[2]
|
144
|
-
assert
|
137
|
+
assert(hungarian_headlines.name == 'Hungarian')
|
145
138
|
hungarian_headlines = hungarian_headlines.headlines.values
|
146
|
-
assert
|
147
|
-
assert
|
139
|
+
assert(hungarian_headlines[0].name == 'Pronunciation_3')
|
140
|
+
assert(hungarian_headlines[1].name == 'Noun_3')
|
148
141
|
noun_hungarian_headlines = hungarian_headlines[1].headlines.values
|
149
|
-
assert
|
150
|
-
assert
|
142
|
+
assert(noun_hungarian_headlines[0].name == 'Declension')
|
143
|
+
assert(noun_hungarian_headlines[1].name == 'Derived_terms')
|
151
144
|
|
152
145
|
# Norwegian
|
153
146
|
norwegian_headlines = headlines[3]
|
154
|
-
assert
|
147
|
+
assert(norwegian_headlines.name == 'Norwegian_Bokm.C3.A5l')
|
155
148
|
norwegian_headlines = norwegian_headlines.headlines.values
|
156
|
-
assert
|
149
|
+
assert(norwegian_headlines[0].name == 'Noun_4')
|
157
150
|
|
158
151
|
# Romanian
|
159
152
|
romanian_headlines = headlines[4]
|
160
|
-
assert
|
153
|
+
assert(romanian_headlines.name == 'Romanian')
|
161
154
|
romanian_headlines = romanian_headlines.headlines.values
|
162
|
-
assert
|
163
|
-
assert
|
155
|
+
assert(romanian_headlines[0].name == 'Etymology_2')
|
156
|
+
assert(romanian_headlines[1].name == 'Noun_5')
|
164
157
|
noun_romanian_headlines = romanian_headlines[1].headlines.values
|
165
|
-
assert
|
166
|
-
assert
|
158
|
+
assert(noun_romanian_headlines[0].name == 'Declension_2')
|
159
|
+
assert(noun_romanian_headlines[1].name == 'Related_terms_2')
|
167
160
|
|
168
161
|
# Serbo-Croatian
|
169
162
|
serb_croatian_headlines = headlines[5]
|
170
|
-
assert
|
163
|
+
assert(serb_croatian_headlines.name == 'Serbo-Croatian')
|
171
164
|
serb_croatian_headlines = serb_croatian_headlines.headlines.values
|
172
|
-
assert
|
165
|
+
assert(serb_croatian_headlines[0].name == 'Noun_6')
|
173
166
|
noun_serb_croatian_headlines = serb_croatian_headlines[0].headlines.values
|
174
|
-
assert
|
167
|
+
assert(noun_serb_croatian_headlines[0].name == 'Declension_3')
|
175
168
|
|
176
169
|
# Slovak
|
177
170
|
slovak_headlines = headlines[6]
|
178
|
-
assert
|
171
|
+
assert(slovak_headlines.name == 'Slovak')
|
179
172
|
slovak_headlines = slovak_headlines.headlines.values
|
180
|
-
assert
|
173
|
+
assert(slovak_headlines[0].name == 'Noun_7')
|
181
174
|
|
182
175
|
# Swedish
|
183
176
|
swedish_headlines = headlines[7]
|
184
|
-
assert
|
177
|
+
assert(swedish_headlines.name == 'Swedish')
|
185
178
|
swedish_headlines = swedish_headlines.headlines.values
|
186
|
-
assert
|
187
|
-
assert
|
179
|
+
assert(swedish_headlines[0].name == 'Etymology_3')
|
180
|
+
assert(swedish_headlines[1].name == 'Noun_8')
|
188
181
|
noun_swedish_headlines = swedish_headlines[1].headlines.values
|
189
|
-
assert
|
182
|
+
assert(noun_swedish_headlines[0].name == 'Declension_4')
|
190
183
|
|
191
184
|
# Turkish
|
192
185
|
turkish_headlines = headlines[8]
|
193
|
-
assert
|
186
|
+
assert(turkish_headlines.name == 'Turkish')
|
194
187
|
turkish_headlines = turkish_headlines.headlines.values
|
195
|
-
assert
|
196
|
-
assert
|
188
|
+
assert(turkish_headlines[0].name == 'Etymology_4')
|
189
|
+
assert(turkish_headlines[1].name == 'Noun_9')
|
197
190
|
noun_turkish_headlines = turkish_headlines[1].headlines.values
|
198
|
-
assert
|
199
|
-
|
191
|
+
assert(noun_turkish_headlines[0].name == 'Declension_5')
|
200
192
|
end
|
201
193
|
|
202
|
-
|
203
194
|
def test_headlines_search
|
204
|
-
page = Wiki::Api::Page.new
|
205
|
-
|
195
|
+
page = Wiki::Api::Page.new(name: 'program')
|
196
|
+
root_headline = page.root_headline
|
206
197
|
# get root
|
207
|
-
assert
|
198
|
+
assert(root_headline.name == 'program', 'expected program name')
|
208
199
|
|
209
|
-
headlines =
|
210
|
-
assert
|
200
|
+
headlines = root_headline.headline('english')
|
201
|
+
assert(!headlines.empty?, 'expected a headline')
|
211
202
|
|
212
203
|
# iterate english
|
213
204
|
headlines.each do |headline|
|
214
|
-
assert
|
215
|
-
assert
|
216
|
-
noun_headlines = headline.headline
|
217
|
-
assert
|
205
|
+
assert(headline.is_a?(Wiki::Api::PageHeadline), 'expected PageHeadline object')
|
206
|
+
assert(headline.name == 'English', 'expected English')
|
207
|
+
noun_headlines = headline.headline('noun')
|
208
|
+
assert(!noun_headlines.empty?, 'exptected a headline')
|
218
209
|
# iterate nouns
|
219
210
|
noun_headlines.each do |noun_headline|
|
220
|
-
assert
|
221
|
-
assert
|
222
|
-
|
223
|
-
#list_item.links.each do |link|
|
211
|
+
assert(noun_headline.is_a?(Wiki::Api::PageHeadline), 'expected PageHeadline object')
|
212
|
+
assert(noun_headline.name == 'Noun', 'expected Noun')
|
213
|
+
|
214
|
+
# list_item.links.each do |link|
|
224
215
|
end
|
225
216
|
end
|
226
217
|
end
|
227
218
|
|
228
219
|
def test_headlines_has_headline
|
229
220
|
# load page
|
230
|
-
page = Wiki::Api::Page.new
|
221
|
+
page = Wiki::Api::Page.new(name: 'program')
|
231
222
|
|
232
223
|
# get root
|
233
224
|
root_headline = page.root_headline
|
234
|
-
assert
|
235
|
-
headline = root_headline.headline(
|
225
|
+
assert(root_headline.name == 'program', 'expected program name')
|
226
|
+
headline = root_headline.headline('english').first
|
236
227
|
|
237
228
|
# verify existence english headlines
|
238
|
-
assert
|
239
|
-
assert
|
240
|
-
assert
|
241
|
-
assert
|
242
|
-
assert
|
243
|
-
assert
|
244
|
-
assert
|
245
|
-
assert
|
246
|
-
assert
|
247
|
-
assert
|
248
|
-
assert
|
249
|
-
assert
|
229
|
+
assert(headline.has_headline?('alternative forms'))
|
230
|
+
assert(headline.has_headline?('etymology'))
|
231
|
+
assert(headline.has_headline?('pronunciation'))
|
232
|
+
assert(headline.has_headline?('noun'))
|
233
|
+
assert(headline.has_headline?('verb'))
|
234
|
+
assert(headline.has_headline?('external links'))
|
235
|
+
assert(!headline.has_headline?('alternative12 forms'))
|
236
|
+
assert(!headline.has_headline?('etymolfaogy'))
|
237
|
+
assert(!headline.has_headline?('pronunciafaation'))
|
238
|
+
assert(!headline.has_headline?('nounia'))
|
239
|
+
assert(!headline.has_headline?('verbaf'))
|
240
|
+
assert(!headline.has_headline?('externalaf links'))
|
250
241
|
|
251
242
|
# verify existence czech headlines
|
252
|
-
headline = root_headline.headline(
|
253
|
-
assert
|
254
|
-
assert
|
255
|
-
assert
|
256
|
-
assert
|
243
|
+
headline = root_headline.headline('czech').first
|
244
|
+
assert(headline.has_headline?('pronunciation'))
|
245
|
+
assert(headline.has_headline?('noun'))
|
246
|
+
assert(!headline.has_headline?('pronunciation82'))
|
247
|
+
assert(!headline.has_headline?('nouan'))
|
248
|
+
|
249
|
+
# TODO: add other headlines here as well!
|
250
|
+
end
|
251
|
+
|
252
|
+
def test_headlines_recursive_search
|
253
|
+
# load page
|
254
|
+
page = Wiki::Api::Page.new(name: 'program')
|
255
|
+
|
256
|
+
# get root
|
257
|
+
root_headline = page.root_headline
|
258
|
+
assert(root_headline.name == 'program', 'expected program name')
|
259
|
+
headline = root_headline.headline('english').first
|
260
|
+
|
261
|
+
related_terms_headline = headline.headline_in_depth('related terms').first
|
262
|
+
assert(related_terms_headline.is_a?(Wiki::Api::PageHeadline), 'expected PageHeadline object')
|
263
|
+
assert(related_terms_headline.name == 'Related_terms')
|
264
|
+
assert(related_terms_headline.parent.is_a?(Wiki::Api::PageHeadline))
|
265
|
+
assert(related_terms_headline.parent.name == 'Verb')
|
266
|
+
assert(related_terms_headline.parent.parent.is_a?(Wiki::Api::PageHeadline))
|
267
|
+
assert(related_terms_headline.parent.parent.name == 'English')
|
268
|
+
end
|
257
269
|
|
258
|
-
|
270
|
+
def test_headlines_recursive_multi_search
|
271
|
+
# load page
|
272
|
+
page = Wiki::Api::Page.new(name: 'program')
|
259
273
|
|
274
|
+
# get root
|
275
|
+
root_headline = page.root_headline
|
276
|
+
assert(root_headline.name == 'program', 'expected program name')
|
277
|
+
headline = root_headline.headline('english').first
|
278
|
+
# search translations within english
|
279
|
+
translations_headlines = headline.headline_in_depth('translations')
|
280
|
+
assert(translations_headlines[0].name == 'Translations')
|
281
|
+
assert(translations_headlines[1].name == 'Translations_2')
|
260
282
|
end
|
261
283
|
|
262
|
-
|
284
|
+
def test_headlines_recursive_search_limit_depth
|
285
|
+
# load page
|
286
|
+
page = Wiki::Api::Page.new(name: 'program')
|
287
|
+
# get root
|
288
|
+
root_headline = page.root_headline
|
289
|
+
assert(root_headline.name == 'program', 'expected program name')
|
290
|
+
headline = root_headline.headline('english').first
|
291
|
+
# search translations within english
|
292
|
+
translations_headlines = headline.headline_in_depth('translations', 0)
|
293
|
+
assert(translations_headlines.empty?, 'expected no translations at depth 0')
|
294
|
+
end
|
295
|
+
end
|
data/wiki-api.gemspec
CHANGED
@@ -1,29 +1,32 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'English'
|
4
|
+
lib = File.expand_path('lib', __dir__)
|
3
5
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
6
|
require 'wiki/api/version'
|
5
7
|
|
6
8
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
9
|
+
spec.name = 'wiki-api'
|
8
10
|
spec.version = Wiki::Api::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
-
spec.description =
|
12
|
-
spec.summary =
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
11
|
+
spec.authors = ['Dennis Blommesteijn']
|
12
|
+
spec.email = ['dennis@blommesteijn.com']
|
13
|
+
spec.description = 'MediaWiki API and Page content parser for Headlines (nested), TextBlocks, ListItems, and Links.'
|
14
|
+
spec.summary = 'MediaWiki API and Page content parser for Headlines (nested), TextBlocks, ListItems, and Links.'
|
15
|
+
spec.homepage = 'https://github.com/dblommesteijn/wiki-api'
|
16
|
+
spec.license = 'MIT'
|
15
17
|
|
16
|
-
spec.files = `git ls-files`.split(
|
18
|
+
spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
17
19
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
20
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = [
|
21
|
+
spec.require_paths = ['lib']
|
22
|
+
spec.required_ruby_version = '>= 1.9.3'
|
20
23
|
|
21
|
-
spec.add_development_dependency
|
22
|
-
spec.add_development_dependency
|
24
|
+
spec.add_development_dependency('bundler', '> 1.3')
|
25
|
+
spec.add_development_dependency('pry', '~> 0.14')
|
26
|
+
spec.add_development_dependency('rake')
|
27
|
+
spec.add_development_dependency('rubocop', '~> 1.59.0')
|
28
|
+
spec.add_development_dependency('test-unit', '> 2.0.0')
|
23
29
|
|
24
30
|
# dependencies
|
25
|
-
spec.add_dependency
|
26
|
-
spec.add_dependency 'json', "~> 1.6.1"
|
27
|
-
spec.add_development_dependency "test-unit", "~> 2.0.0"
|
28
|
-
|
31
|
+
spec.add_dependency('nokogiri', '> 1.13.0')
|
29
32
|
end
|
metadata
CHANGED
@@ -1,97 +1,116 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wiki-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dennis Blommesteijn
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-12-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
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
|
15
22
|
version_requirements: !ruby/object:Gem::Requirement
|
16
23
|
requirements:
|
17
|
-
- - "
|
24
|
+
- - ">"
|
18
25
|
- !ruby/object:Gem::Version
|
19
26
|
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: pry
|
20
29
|
requirement: !ruby/object:Gem::Requirement
|
21
30
|
requirements:
|
22
31
|
- - "~>"
|
23
32
|
- !ruby/object:Gem::Version
|
24
|
-
version: '
|
25
|
-
prerelease: false
|
33
|
+
version: '0.14'
|
26
34
|
type: :development
|
27
|
-
|
28
|
-
name: rake
|
35
|
+
prerelease: false
|
29
36
|
version_requirements: !ruby/object:Gem::Requirement
|
30
37
|
requirements:
|
31
|
-
- - "
|
38
|
+
- - "~>"
|
32
39
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
40
|
+
version: '0.14'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
34
43
|
requirement: !ruby/object:Gem::Requirement
|
35
44
|
requirements:
|
36
45
|
- - ">="
|
37
46
|
- !ruby/object:Gem::Version
|
38
47
|
version: '0'
|
39
|
-
prerelease: false
|
40
48
|
type: :development
|
41
|
-
|
42
|
-
name: nokogiri
|
49
|
+
prerelease: false
|
43
50
|
version_requirements: !ruby/object:Gem::Requirement
|
44
51
|
requirements:
|
45
|
-
- - "
|
52
|
+
- - ">="
|
46
53
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rubocop
|
48
57
|
requirement: !ruby/object:Gem::Requirement
|
49
58
|
requirements:
|
50
59
|
- - "~>"
|
51
60
|
- !ruby/object:Gem::Version
|
52
|
-
version: 1.
|
61
|
+
version: 1.59.0
|
62
|
+
type: :development
|
53
63
|
prerelease: false
|
54
|
-
type: :runtime
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: json
|
57
64
|
version_requirements: !ruby/object:Gem::Requirement
|
58
65
|
requirements:
|
59
66
|
- - "~>"
|
60
67
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.
|
68
|
+
version: 1.59.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: test-unit
|
62
71
|
requirement: !ruby/object:Gem::Requirement
|
63
72
|
requirements:
|
64
|
-
- - "
|
73
|
+
- - ">"
|
65
74
|
- !ruby/object:Gem::Version
|
66
|
-
version:
|
75
|
+
version: 2.0.0
|
76
|
+
type: :development
|
67
77
|
prerelease: false
|
68
|
-
type: :runtime
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: test-unit
|
71
78
|
version_requirements: !ruby/object:Gem::Requirement
|
72
79
|
requirements:
|
73
|
-
- - "
|
80
|
+
- - ">"
|
74
81
|
- !ruby/object:Gem::Version
|
75
82
|
version: 2.0.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: nokogiri
|
76
85
|
requirement: !ruby/object:Gem::Requirement
|
77
86
|
requirements:
|
78
|
-
- - "
|
87
|
+
- - ">"
|
79
88
|
- !ruby/object:Gem::Version
|
80
|
-
version:
|
89
|
+
version: 1.13.0
|
90
|
+
type: :runtime
|
81
91
|
prerelease: false
|
82
|
-
|
83
|
-
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 1.13.0
|
97
|
+
description: MediaWiki API and Page content parser for Headlines (nested), TextBlocks,
|
98
|
+
ListItems, and Links.
|
84
99
|
email:
|
85
100
|
- dennis@blommesteijn.com
|
86
|
-
executables:
|
101
|
+
executables:
|
102
|
+
- console
|
87
103
|
extensions: []
|
88
104
|
extra_rdoc_files: []
|
89
105
|
files:
|
90
106
|
- ".gitignore"
|
107
|
+
- ".rubocop.yml"
|
108
|
+
- ".travis.yml"
|
91
109
|
- Gemfile
|
92
110
|
- LICENSE.txt
|
93
111
|
- README.md
|
94
112
|
- Rakefile
|
113
|
+
- bin/console
|
95
114
|
- lib/wiki/api.rb
|
96
115
|
- lib/wiki/api/connect.rb
|
97
116
|
- lib/wiki/api/page.rb
|
@@ -119,18 +138,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
119
138
|
requirements:
|
120
139
|
- - ">="
|
121
140
|
- !ruby/object:Gem::Version
|
122
|
-
version:
|
141
|
+
version: 1.9.3
|
123
142
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
124
143
|
requirements:
|
125
144
|
- - ">="
|
126
145
|
- !ruby/object:Gem::Version
|
127
146
|
version: '0'
|
128
147
|
requirements: []
|
129
|
-
|
130
|
-
rubygems_version: 2.0.3
|
148
|
+
rubygems_version: 3.3.7
|
131
149
|
signing_key:
|
132
150
|
specification_version: 4
|
133
|
-
summary: MediaWiki API and Page content parser for Headlines (nested), TextBlocks,
|
151
|
+
summary: MediaWiki API and Page content parser for Headlines (nested), TextBlocks,
|
152
|
+
ListItems, and Links.
|
134
153
|
test_files:
|
135
154
|
- test/test_helper.rb
|
136
155
|
- test/unit/files/Wiktionary_Welcome,_newcomers.html
|