wikipedia-client 1.6.3 → 1.6.4
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/.editorconfig +12 -0
- data/.gitignore +2 -0
- data/.rubocop.yml +24 -0
- data/Gemfile.lock +17 -2
- data/README.textile +2 -3
- data/Rakefile +13 -27
- data/install.rb +1 -1
- data/lib/wikipedia.rb +13 -6
- data/lib/wikipedia/client.rb +55 -54
- data/lib/wikipedia/configuration.rb +3 -5
- data/lib/wikipedia/page.rb +51 -58
- data/lib/wikipedia/url.rb +2 -2
- data/lib/wikipedia/version.rb +1 -1
- data/script/add_sanitization_test +8 -8
- data/spec/lib/client_spec.rb +84 -45
- data/spec/lib/sanitize_spec.rb +1 -1
- data/spec/lib/url_spec.rb +3 -3
- data/spec/lib/wikipedia_spec.rb +7 -7
- data/spec/spec_helper.rb +9 -1
- data/wikipedia-client.gemspec +22 -18
- metadata +19 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e089650b23ba504667789874fd323f5b1d390748
|
4
|
+
data.tar.gz: dca70f883ac007d84802bb7a60ddae8139683f93
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3493584b84a4c54b164a0cc97c9499574394bb50014b4ab88764c569a20520daf0666cb9878c3dafab6d8225b6c4c196af73697ae3f6ed7f9ef85f704a3da060
|
7
|
+
data.tar.gz: 1606ba0242ff30cbd0ff9ad405ab3efa734c2d22c1f51764b1e93b6140b578d65f61e2e7810e347b95200dfe4d082314b350b5a986def757e8cc7b94639ecfc6
|
data/.editorconfig
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
; This file is for unifying the coding style for different editors and IDEs.
|
2
|
+
; More information at http://EditorConfig.org
|
3
|
+
|
4
|
+
root = true
|
5
|
+
; Use 2 spaces for indentation in all files
|
6
|
+
[*]
|
7
|
+
end_of_line = lf
|
8
|
+
charset = utf-8
|
9
|
+
trim_trailing_whitespace = true
|
10
|
+
indent_style = space
|
11
|
+
indent_size = 2
|
12
|
+
insert_final_newline = true
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
Metrics/LineLength:
|
2
|
+
Max: 120
|
3
|
+
AllowURI: true
|
4
|
+
|
5
|
+
Metrics/MethodLength:
|
6
|
+
Max: 15
|
7
|
+
|
8
|
+
Style/SpaceInsideParens:
|
9
|
+
Enabled: false
|
10
|
+
|
11
|
+
Style/RescueModifier:
|
12
|
+
Enabled: false
|
13
|
+
|
14
|
+
Style/SpaceInsidePercentLiteralDelimiters:
|
15
|
+
Enabled: false
|
16
|
+
|
17
|
+
Style/RegexpLiteral:
|
18
|
+
AllowInnerSlashes: true
|
19
|
+
|
20
|
+
Style/Documentation:
|
21
|
+
Enabled: false
|
22
|
+
|
23
|
+
Style/SymbolArray:
|
24
|
+
Enabled: false
|
data/Gemfile.lock
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
wikipedia-client (1.6.
|
4
|
+
wikipedia-client (1.6.4)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
9
|
addressable (2.3.5)
|
10
|
+
ast (2.3.0)
|
10
11
|
builder (3.2.2)
|
11
12
|
diff-lcs (1.2.4)
|
12
13
|
faraday (0.8.8)
|
@@ -45,7 +46,12 @@ GEM
|
|
45
46
|
multi_json (~> 1.0)
|
46
47
|
multi_xml (~> 0.5)
|
47
48
|
rack (~> 1.2)
|
49
|
+
parser (2.4.0.0)
|
50
|
+
ast (~> 2.2)
|
51
|
+
powerpack (0.1.1)
|
48
52
|
rack (1.5.2)
|
53
|
+
rainbow (2.2.2)
|
54
|
+
rake
|
49
55
|
rake (10.1.0)
|
50
56
|
rdoc (4.0.1)
|
51
57
|
json (~> 1.4)
|
@@ -57,7 +63,15 @@ GEM
|
|
57
63
|
rspec-expectations (2.14.3)
|
58
64
|
diff-lcs (>= 1.1.3, < 2.0)
|
59
65
|
rspec-mocks (2.14.3)
|
66
|
+
rubocop (0.48.1)
|
67
|
+
parser (>= 2.3.3.1, < 3.0)
|
68
|
+
powerpack (~> 0.1)
|
69
|
+
rainbow (>= 1.99.1, < 3.0)
|
70
|
+
ruby-progressbar (~> 1.7)
|
71
|
+
unicode-display_width (~> 1.0, >= 1.0.1)
|
72
|
+
ruby-progressbar (1.8.1)
|
60
73
|
thoughtbot-shoulda (2.11.1)
|
74
|
+
unicode-display_width (1.2.1)
|
61
75
|
|
62
76
|
PLATFORMS
|
63
77
|
ruby
|
@@ -67,8 +81,9 @@ DEPENDENCIES
|
|
67
81
|
rake
|
68
82
|
rdoc
|
69
83
|
rspec
|
84
|
+
rubocop
|
70
85
|
thoughtbot-shoulda
|
71
86
|
wikipedia-client!
|
72
87
|
|
73
88
|
BUNDLED WITH
|
74
|
-
1.
|
89
|
+
1.15.0
|
data/README.textile
CHANGED
@@ -76,7 +76,7 @@ h2. Configuration
|
|
76
76
|
|
77
77
|
This is by default configured like this:
|
78
78
|
|
79
|
-
<pre><code>Wikipedia.
|
79
|
+
<pre><code>Wikipedia.configure {
|
80
80
|
domain 'en.wikipedia.org'
|
81
81
|
path 'w/api.php'
|
82
82
|
}</code></pre>
|
@@ -115,8 +115,6 @@ h3. Pushing a new release of the Gem
|
|
115
115
|
|
116
116
|
Edit <code>lib/wikipedia/version.rb</code>, changing <code>VERSION</code>.
|
117
117
|
|
118
|
-
Edit <code>wikipedia-client.gemspec</code>, changing <code>s.date</code> to today's date.
|
119
|
-
|
120
118
|
Build the gem: <code>bundle exec gem build wikipedia-client.gemspec</code>
|
121
119
|
|
122
120
|
Commit the changes: <code>git commit -a -m 'Version bump to 1.4.0' && git push</code>
|
@@ -138,6 +136,7 @@ Christian Hellsten <christian.hellsten@gmail.com>
|
|
138
136
|
Christopher Quackenbush <christopher@quackenbush.me>
|
139
137
|
Cyril David
|
140
138
|
Francesco Serra <afnecors@gmail.com>
|
139
|
+
Harman Singh
|
141
140
|
ivobenedito <ivobenedito@gmail.com>
|
142
141
|
Justin Harrison <justin@matthin.com>
|
143
142
|
Ken Pratt <ken@kenpratt.net>
|
data/Rakefile
CHANGED
@@ -1,38 +1,24 @@
|
|
1
|
-
|
2
|
-
require 'rubygems'
|
1
|
+
$LOAD_PATH.push File.expand_path('../lib', __FILE__)
|
3
2
|
require 'rake'
|
3
|
+
require 'rubocop/rake_task'
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
require 'rdoc/task'
|
6
|
+
require 'wikipedia/version'
|
4
7
|
|
5
|
-
|
6
|
-
Rake::TestTask.new(:test) do |test|
|
7
|
-
test.libs << 'lib' << 'test'
|
8
|
-
test.pattern = 'test/**/test_*.rb'
|
9
|
-
test.verbose = true
|
10
|
-
end
|
11
|
-
|
8
|
+
task default: [:spec, :rubocop]
|
12
9
|
|
13
10
|
desc 'Test the wikipedia plugin.'
|
14
|
-
|
15
|
-
spec_path = File.expand_path(File.dirname(__FILE__) + '/spec/**/*.rb')
|
16
|
-
system("rspec -cfs #{spec_path}")
|
17
|
-
end
|
11
|
+
RSpec::Core::RakeTask.new(:spec)
|
18
12
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
test.pattern = 'test/**/test_*.rb'
|
24
|
-
test.verbose = true
|
25
|
-
end
|
26
|
-
rescue LoadError
|
27
|
-
task :rcov do
|
28
|
-
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
29
|
-
end
|
13
|
+
desc 'Run spec with coverage'
|
14
|
+
task :coverage do
|
15
|
+
ENV['COVERAGE'] = 'true'
|
16
|
+
Rake::Task['spec'].execute
|
30
17
|
end
|
31
18
|
|
32
|
-
|
19
|
+
desc 'Run rubocop'
|
20
|
+
RuboCop::RakeTask.new(:rubocop)
|
33
21
|
|
34
|
-
require 'rdoc/task'
|
35
|
-
require "wikipedia/version"
|
36
22
|
Rake::RDocTask.new do |rdoc|
|
37
23
|
version = Wikipedia::VERSION
|
38
24
|
|
data/install.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
puts File.read(File.dirname(__FILE__) + '/README')
|
1
|
+
puts File.read(File.dirname(__FILE__) + '/README')
|
data/lib/wikipedia.rb
CHANGED
@@ -25,22 +25,29 @@ module Wikipedia
|
|
25
25
|
client.find_random( options )
|
26
26
|
end
|
27
27
|
|
28
|
-
def self.
|
28
|
+
def self.configure(&block)
|
29
29
|
Configuration.instance.instance_eval(&block)
|
30
30
|
end
|
31
31
|
|
32
|
-
|
32
|
+
# rubocop:disable Style/MethodName
|
33
|
+
def self.Configure(&block)
|
34
|
+
configure(&block)
|
35
|
+
end
|
36
|
+
|
37
|
+
configure do
|
33
38
|
protocol 'https'
|
34
39
|
domain 'en.wikipedia.org'
|
35
40
|
path 'w/api.php'
|
36
41
|
user_agent(
|
37
42
|
'wikipedia-client/1.3 (https://github.com/kenpratt/wikipedia-client)'
|
38
43
|
)
|
39
|
-
|
44
|
+
end
|
40
45
|
|
41
|
-
|
46
|
+
class << self
|
47
|
+
private
|
42
48
|
|
43
|
-
|
44
|
-
|
49
|
+
def client
|
50
|
+
@client ||= Wikipedia::Client.new
|
51
|
+
end
|
45
52
|
end
|
46
53
|
end
|
data/lib/wikipedia/client.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Wikipedia
|
2
2
|
class Client
|
3
3
|
# see http://en.wikipedia.org/w/api.php
|
4
|
-
BASE_URL =
|
4
|
+
BASE_URL = ':protocol://:domain/:path?action=:action&format=json'.freeze
|
5
5
|
|
6
6
|
attr_accessor :follow_redirects
|
7
7
|
|
@@ -12,7 +12,7 @@ module Wikipedia
|
|
12
12
|
def find( title, options = {} )
|
13
13
|
title = Url.new(title).title rescue title
|
14
14
|
page = Page.new( request_page( title, options ) )
|
15
|
-
while follow_redirects
|
15
|
+
while follow_redirects && page.redirect?
|
16
16
|
page = Page.new( request_page( page.redirect_title, options ) )
|
17
17
|
end
|
18
18
|
page
|
@@ -25,87 +25,88 @@ module Wikipedia
|
|
25
25
|
|
26
26
|
def find_random( options = {} )
|
27
27
|
require 'json'
|
28
|
-
data = JSON
|
29
|
-
title = data[
|
28
|
+
data = JSON.parse( request_random( options ) )
|
29
|
+
title = data['query']['pages'].values[0]['title']
|
30
30
|
find( title, options )
|
31
31
|
end
|
32
32
|
|
33
33
|
# http://en.wikipedia.org/w/api.php?action=query&format=json&prop=revisions%7Clinks%7Cimages%7Ccategories&rvprop=content&titles=Flower%20(video%20game)
|
34
34
|
def request_page( title, options = {} )
|
35
35
|
request( {
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
36
|
+
action: 'query',
|
37
|
+
prop: %w[ info revisions links extlinks images categories coordinates templates extracts ],
|
38
|
+
rvprop: 'content',
|
39
|
+
inprop: 'url',
|
40
|
+
explaintext: '',
|
41
|
+
titles: title
|
42
|
+
}.merge( options ) )
|
43
43
|
end
|
44
44
|
|
45
45
|
# http://en.wikipedia.org/w/api.php?action=query&format=json&prop=imageinfo&iiprop=url&titles=File:Flower.png
|
46
46
|
def request_image( title, options = {} )
|
47
47
|
request( {
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
48
|
+
action: 'query',
|
49
|
+
prop: 'imageinfo',
|
50
|
+
iiprop: 'url',
|
51
|
+
titles: title
|
52
|
+
}.merge( options ) )
|
53
53
|
end
|
54
54
|
|
55
55
|
# http://en.wikipedia.org/w/api.php?action=query&generator=random&grnnamespace=0&prop=info
|
56
56
|
def request_random( options = {} )
|
57
57
|
request( {
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
58
|
+
action: 'query',
|
59
|
+
generator: 'random',
|
60
|
+
grnnamespace: '0',
|
61
|
+
prop: 'info'
|
62
|
+
}.merge( options ) )
|
63
63
|
end
|
64
64
|
|
65
65
|
def request( options )
|
66
66
|
require 'open-uri'
|
67
|
-
URI.parse( url_for( options ) ).read(
|
67
|
+
URI.parse( url_for( options ) ).read( 'User-Agent' => Configuration[:user_agent] )
|
68
68
|
end
|
69
69
|
|
70
70
|
protected
|
71
|
-
def configuration_options
|
72
|
-
{
|
73
|
-
:protocol => Configuration[:protocol],
|
74
|
-
:domain => Configuration[:domain],
|
75
|
-
:path => Configuration[:path],
|
76
|
-
}
|
77
|
-
end
|
78
71
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
else
|
87
|
-
url << "&#{key}=#{value}"
|
88
|
-
end
|
89
|
-
end
|
90
|
-
url
|
91
|
-
end
|
72
|
+
def configuration_options
|
73
|
+
{
|
74
|
+
protocol: Configuration[:protocol],
|
75
|
+
domain: Configuration[:domain],
|
76
|
+
path: Configuration[:path]
|
77
|
+
}
|
78
|
+
end
|
92
79
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
80
|
+
def url_for( options )
|
81
|
+
url = BASE_URL.dup
|
82
|
+
options = configuration_options.merge( options )
|
83
|
+
options.each do |key, val|
|
84
|
+
value = urlify_value( val )
|
85
|
+
if url.include?( ":#{key}" )
|
86
|
+
url.sub! ":#{key}", value
|
97
87
|
else
|
98
|
-
|
88
|
+
url << "&#{key}=#{value}"
|
99
89
|
end
|
100
90
|
end
|
91
|
+
url
|
92
|
+
end
|
101
93
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
end
|
94
|
+
def urlify_value( val )
|
95
|
+
case val
|
96
|
+
when Array
|
97
|
+
encode( val.flatten.join( '|' ) )
|
98
|
+
else
|
99
|
+
encode( val )
|
109
100
|
end
|
101
|
+
end
|
102
|
+
|
103
|
+
def encode( val )
|
104
|
+
case val
|
105
|
+
when String
|
106
|
+
URI.encode( val ).gsub( '&', '%26' )
|
107
|
+
else
|
108
|
+
val
|
109
|
+
end
|
110
|
+
end
|
110
111
|
end
|
111
112
|
end
|
@@ -7,11 +7,9 @@ module Wikipedia
|
|
7
7
|
def self.directives(*directives)
|
8
8
|
directives.each do |directive|
|
9
9
|
define_method directive do |*args|
|
10
|
-
if args.empty?
|
11
|
-
|
12
|
-
|
13
|
-
instance_variable_set("@#{directive}", args.first)
|
14
|
-
end
|
10
|
+
return instance_variable_get("@#{directive}") if args.empty?
|
11
|
+
|
12
|
+
instance_variable_set("@#{directive}", args.first)
|
15
13
|
end
|
16
14
|
end
|
17
15
|
end
|
data/lib/wikipedia/page.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
module Wikipedia
|
2
2
|
class Page
|
3
|
+
attr_reader :json
|
4
|
+
|
3
5
|
def initialize(json)
|
4
6
|
require 'json'
|
5
7
|
@json = json
|
6
|
-
@data = JSON
|
8
|
+
@data = JSON.parse(json)
|
7
9
|
end
|
8
10
|
|
9
11
|
def page
|
10
|
-
@data['query']['pages'].values.first
|
12
|
+
@data['query']['pages'].values.first if @data['query']['pages']
|
11
13
|
end
|
12
14
|
|
13
15
|
def content
|
@@ -23,9 +25,7 @@ module Wikipedia
|
|
23
25
|
end
|
24
26
|
|
25
27
|
def redirect_title
|
26
|
-
|
27
|
-
matches[1]
|
28
|
-
end
|
28
|
+
redirect?[1] rescue nil
|
29
29
|
end
|
30
30
|
|
31
31
|
def title
|
@@ -45,23 +45,23 @@ module Wikipedia
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def summary
|
48
|
-
|
48
|
+
page['extract'].split('==')[0].strip if page['extract'] && page['extract'] != ''
|
49
49
|
end
|
50
50
|
|
51
51
|
def categories
|
52
|
-
page['categories'].map {|c| c['title'] } if page['categories']
|
52
|
+
page['categories'].map { |c| c['title'] } if page['categories']
|
53
53
|
end
|
54
54
|
|
55
55
|
def links
|
56
|
-
page['links'].map {|c| c['title'] } if page['links']
|
56
|
+
page['links'].map { |c| c['title'] } if page['links']
|
57
57
|
end
|
58
58
|
|
59
59
|
def extlinks
|
60
|
-
page['extlinks'].map {|c| c['*'] } if page['extlinks']
|
60
|
+
page['extlinks'].map { |c| c['*'] } if page['extlinks']
|
61
61
|
end
|
62
62
|
|
63
63
|
def images
|
64
|
-
page['images'].map {|c| c['title'] } if page['images']
|
64
|
+
page['images'].map { |c| c['title'] } if page['images']
|
65
65
|
end
|
66
66
|
|
67
67
|
def image_url
|
@@ -73,11 +73,11 @@ module Wikipedia
|
|
73
73
|
end
|
74
74
|
|
75
75
|
def image_urls
|
76
|
-
image_metadata.map
|
76
|
+
image_metadata.map(&:image_url)
|
77
77
|
end
|
78
78
|
|
79
79
|
def image_descriptionurls
|
80
|
-
image_metadata.map
|
80
|
+
image_metadata.map(&:image_descriptionurl)
|
81
81
|
end
|
82
82
|
|
83
83
|
def coordinates
|
@@ -90,61 +90,54 @@ module Wikipedia
|
|
90
90
|
|
91
91
|
def image_metadata
|
92
92
|
unless @cached_image_metadata
|
93
|
-
if
|
94
|
-
|
95
|
-
|
96
|
-
end
|
93
|
+
return if images.nil?
|
94
|
+
filtered = images.select { |i| i =~ /:.+\.(jpg|jpeg|png|gif|svg)$/i && !i.include?('LinkFA-star') }
|
95
|
+
@cached_image_metadata = filtered.map { |title| Wikipedia.find_image(title) }
|
97
96
|
end
|
98
97
|
@cached_image_metadata || []
|
99
98
|
end
|
100
99
|
|
101
100
|
def templates
|
102
|
-
page['templates'].map {|c| c['title'] } if page['templates']
|
103
|
-
end
|
104
|
-
|
105
|
-
def json
|
106
|
-
@json
|
101
|
+
page['templates'].map { |c| c['title'] } if page['templates']
|
107
102
|
end
|
108
103
|
|
104
|
+
# rubocop:disable Metrics/MethodLength
|
105
|
+
# rubocop:disable Metrics/AbcSize
|
109
106
|
def self.sanitize( s )
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
sections = s.split("\n\n")
|
142
|
-
if sections.size > 1
|
143
|
-
s = sections.map {|paragraph| "<p>#{paragraph.strip}</p>" }.join("\n")
|
144
|
-
end
|
145
|
-
|
146
|
-
s
|
107
|
+
return unless s
|
108
|
+
|
109
|
+
# strip anything inside curly braces!
|
110
|
+
s.gsub!(/\{\{[^\{\}]+?\}\}/, '') while s =~ /\{\{[^\{\}]+?\}\}/
|
111
|
+
|
112
|
+
# strip info box
|
113
|
+
s.sub!(/^\{\|[^\{\}]+?\n\|\}\n/, '')
|
114
|
+
|
115
|
+
# strip internal links
|
116
|
+
s.gsub!(/\[\[([^\]\|]+?)\|([^\]\|]+?)\]\]/, '\2')
|
117
|
+
s.gsub!(/\[\[([^\]\|]+?)\]\]/, '\1')
|
118
|
+
|
119
|
+
# strip images and file links
|
120
|
+
s.gsub!(/\[\[Image:[^\[\]]+?\]\]/, '')
|
121
|
+
s.gsub!(/\[\[File:[^\[\]]+?\]\]/, '')
|
122
|
+
|
123
|
+
# convert bold/italic to html
|
124
|
+
s.gsub!(/'''''(.+?)'''''/, '<b><i>\1</i></b>')
|
125
|
+
s.gsub!(/'''(.+?)'''/, '<b>\1</b>')
|
126
|
+
s.gsub!(/''(.+?)''/, '<i>\1</i>')
|
127
|
+
|
128
|
+
# misc
|
129
|
+
s.gsub!(/<ref[^<>]*>[\s\S]*?<\/ref>/, '')
|
130
|
+
s.gsub!(/<!--[^>]+?-->/, '')
|
131
|
+
s.gsub!(' ', ' ')
|
132
|
+
s.strip!
|
133
|
+
|
134
|
+
# create paragraphs
|
135
|
+
sections = s.split("\n\n")
|
136
|
+
if sections.size > 1
|
137
|
+
s = sections.map { |paragraph| "<p>#{paragraph.strip}</p>" }.join("\n")
|
147
138
|
end
|
139
|
+
|
140
|
+
s
|
148
141
|
end
|
149
142
|
end
|
150
143
|
end
|
data/lib/wikipedia/url.rb
CHANGED
data/lib/wikipedia/version.rb
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
$LOAD_PATH.unshift File.join(File.dirname(__FILE__),
|
4
|
-
require
|
3
|
+
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
4
|
+
require 'wikipedia'
|
5
5
|
|
6
|
-
SANITIZATION_SAMPLE_PATH = File.join(File.dirname(__FILE__),
|
6
|
+
SANITIZATION_SAMPLE_PATH = File.join(File.dirname(__FILE__), '..', 'spec', 'fixtures', 'sanitization_samples')
|
7
7
|
|
8
8
|
def add_sanitization_test(url)
|
9
9
|
title = Wikipedia::Url.new(url).title
|
10
|
-
page = Wikipedia.find(title, :
|
11
|
-
File.open(File.join(SANITIZATION_SAMPLE_PATH, "#{title}-raw.txt"), 'w') {|f| f << page.content }
|
12
|
-
File.open(File.join(SANITIZATION_SAMPLE_PATH, "#{title}-sanitized.txt"), 'w') {|f| f << page.sanitized_content }
|
10
|
+
page = Wikipedia.find(title, rvsection: 0)
|
11
|
+
File.open(File.join(SANITIZATION_SAMPLE_PATH, "#{title}-raw.txt"), 'w') { |f| f << page.content }
|
12
|
+
File.open(File.join(SANITIZATION_SAMPLE_PATH, "#{title}-sanitized.txt"), 'w') { |f| f << page.sanitized_content }
|
13
13
|
end
|
14
14
|
|
15
|
-
if __FILE__ == $
|
15
|
+
if __FILE__ == $PROGRAM_NAME
|
16
16
|
unless ARGV.size == 1
|
17
|
-
puts "Usage: #{$
|
17
|
+
puts "Usage: #{$PROGRAM_NAME} http://en.wikipedia.org/wiki/Social_Democratic_Party_of_Kyrgyzstan"
|
18
18
|
exit 0
|
19
19
|
end
|
20
20
|
url = ARGV[0]
|
data/spec/lib/client_spec.rb
CHANGED
@@ -1,164 +1,203 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../spec_helper'
|
2
2
|
require 'json'
|
3
3
|
|
4
|
-
|
4
|
+
# rubocop:disable Metrics/BlockLength
|
5
|
+
describe Wikipedia::Client, '.find page (mocked)' do
|
5
6
|
before(:each) do
|
6
7
|
@client = Wikipedia::Client.new
|
7
8
|
@edsger_dijkstra = File.read(File.dirname(__FILE__) + '/../fixtures/Edsger_Dijkstra.json')
|
8
|
-
@edsger_content = JSON
|
9
|
+
@edsger_content = JSON.parse(File.read(File.dirname(__FILE__) + '/../fixtures/Edsger_content.txt'))['content']
|
9
10
|
@client.should_receive(:request).and_return(@edsger_dijkstra)
|
10
11
|
end
|
11
12
|
|
12
|
-
it
|
13
|
+
it 'should execute a request for the page' do
|
13
14
|
@client.find('Edsger_Dijkstra')
|
14
15
|
end
|
15
16
|
|
16
|
-
it
|
17
|
+
it 'should return a page object' do
|
17
18
|
@client.find('Edsger_Dijkstra').should be_an_instance_of(Wikipedia::Page)
|
18
19
|
end
|
19
20
|
|
20
|
-
it
|
21
|
+
it 'should return a page with the correct content' do
|
21
22
|
@page = @client.find('Edsger_Dijkstra')
|
22
23
|
@page.content.should == @edsger_content
|
23
24
|
end
|
24
25
|
|
25
|
-
it
|
26
|
+
it 'should return a page with a title of Edsger W. Dijkstra' do
|
26
27
|
@page = @client.find('Edsger_Dijkstra')
|
27
28
|
@page.title.should == 'Edsger W. Dijkstra'
|
28
29
|
end
|
29
30
|
|
30
|
-
it
|
31
|
+
it 'should return a page with the correct URL' do
|
31
32
|
@page = @client.find('Edsger_Dijkstra')
|
32
33
|
@page.fullurl.should == 'http://en.wikipedia.org/wiki/Edsger_W._Dijkstra'
|
33
34
|
end
|
34
35
|
|
35
|
-
it
|
36
|
+
it 'should return a page with the correct plain text extract' do
|
36
37
|
@page = @client.find('Edsger_Dijkstra')
|
37
38
|
@page.text.should start_with 'Edsger Wybe Dijkstra (Dutch pronunciation: '
|
38
39
|
end
|
39
40
|
|
40
|
-
it
|
41
|
+
it 'should return a page with categories' do
|
41
42
|
@page = @client.find('Edsger_Dijkstra')
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
43
|
+
[
|
44
|
+
'Category:1930 births', 'Category:Fellows of the Association for Computing Machinery',
|
45
|
+
'Category:2002 deaths', 'Category:Articles with close paraphrasing from April 2009',
|
46
|
+
'Category:Computer pioneers', 'Category:Eindhoven University of Technology faculty',
|
47
|
+
'Category:Dutch physicists', 'Category:Articles needing cleanup from April 2009',
|
48
|
+
'Category:All pages needing cleanup', 'Category:Dutch computer scientists'
|
49
|
+
].each do |category|
|
50
|
+
@page.categories.should include(category)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'should return a page with links' do
|
46
55
|
@page = @client.find('Edsger_Dijkstra')
|
47
|
-
|
56
|
+
[
|
57
|
+
'ALGOL', 'Alan Kay', 'ALGOL 60', 'Agile software development', 'ACM Turing Award',
|
58
|
+
'Algorithm', 'Adi Shamir', 'Alan Perlis', 'Allen Newell', 'Adriaan van Wijngaarden'
|
59
|
+
].each do |link|
|
60
|
+
@page.links.should include(link)
|
61
|
+
end
|
48
62
|
end
|
49
63
|
|
50
|
-
it
|
64
|
+
it 'should return a page with images' do
|
51
65
|
@page = @client.find('Edsger_Dijkstra')
|
52
|
-
|
66
|
+
[
|
67
|
+
'File:Dijkstra.ogg',
|
68
|
+
'File:Speaker Icon.svg',
|
69
|
+
'File:Wikiquote-logo-en.svg',
|
70
|
+
'File:Copyright-problem.svg',
|
71
|
+
'File:Edsger Wybe Dijkstra.jpg'
|
72
|
+
].each do |file|
|
73
|
+
@page.images.should include(file)
|
74
|
+
end
|
53
75
|
end
|
54
76
|
end
|
55
77
|
|
56
|
-
describe Wikipedia::Client,
|
78
|
+
describe Wikipedia::Client, '.find page with one section (mocked)' do
|
57
79
|
before(:each) do
|
58
80
|
@client = Wikipedia::Client.new
|
59
|
-
|
60
|
-
@
|
81
|
+
dir_name = File.dirname(__FILE__)
|
82
|
+
@edsger_dijkstra = File.read(dir_name + '/../fixtures/Edsger_Dijkstra_section_0.json')
|
83
|
+
@edsger_content = File.read(dir_name + '/../fixtures/sanitization_samples/Edsger_W_Dijkstra-sanitized.txt').strip
|
61
84
|
@client.should_receive(:request).and_return(@edsger_dijkstra)
|
62
85
|
end
|
63
86
|
|
64
|
-
it
|
65
|
-
@page = @client.find('Edsger_Dijkstra', :
|
87
|
+
it 'should have the correct sanitized intro' do
|
88
|
+
@page = @client.find('Edsger_Dijkstra', rvsection: 0)
|
66
89
|
@page.sanitized_content.should == @edsger_content
|
67
90
|
end
|
68
91
|
end
|
69
92
|
|
70
|
-
describe Wikipedia::Client,
|
93
|
+
describe Wikipedia::Client, '.find image (mocked)' do
|
71
94
|
before(:each) do
|
72
95
|
@client = Wikipedia::Client.new
|
73
96
|
@edsger_dijkstra = File.read(File.dirname(__FILE__) + '/../fixtures/File_Edsger_Wybe_Dijkstra_jpg.json')
|
74
97
|
@client.should_receive(:request).and_return(@edsger_dijkstra)
|
75
98
|
end
|
76
99
|
|
77
|
-
it
|
100
|
+
it 'should execute a request for the image' do
|
78
101
|
@client.find_image('File:Edsger Wybe Dijkstra.jpg')
|
79
102
|
end
|
80
103
|
|
81
|
-
it
|
104
|
+
it 'should return a page object' do
|
82
105
|
@client.find_image('File:Edsger Wybe Dijkstra.jpg').should be_an_instance_of(Wikipedia::Page)
|
83
106
|
end
|
84
107
|
|
85
|
-
it
|
108
|
+
it 'should return a page with a title of File:Edsger Wybe Dijkstra.jpg' do
|
86
109
|
@page = @client.find_image('File:Edsger Wybe Dijkstra.jpg')
|
87
110
|
@page.title.should == 'File:Edsger Wybe Dijkstra.jpg'
|
88
111
|
end
|
89
112
|
|
90
|
-
it
|
113
|
+
it 'should return a page with an image url' do
|
91
114
|
@page = @client.find_image('File:Edsger Wybe Dijkstra.jpg')
|
92
|
-
@page.image_url.should ==
|
115
|
+
@page.image_url.should == 'http://upload.wikimedia.org/wikipedia/commons/d/d9/Edsger_Wybe_Dijkstra.jpg'
|
93
116
|
end
|
94
117
|
end
|
95
118
|
|
96
|
-
describe Wikipedia::Client,
|
119
|
+
describe Wikipedia::Client, '.find page (Edsger_Dijkstra)' do
|
97
120
|
before(:each) do
|
98
121
|
@client = Wikipedia::Client.new
|
99
122
|
@client.follow_redirects = false
|
100
123
|
end
|
101
124
|
|
102
|
-
it
|
125
|
+
it 'should get a redirect when trying Edsger Dijkstra' do
|
103
126
|
@page = @client.find('Edsger Dijkstra')
|
104
127
|
@page.should be_redirect
|
105
128
|
end
|
106
129
|
|
107
|
-
it
|
130
|
+
it 'should get a final page when follow_redirects is true' do
|
108
131
|
@client.follow_redirects = true
|
109
132
|
@page = @client.find('Edsger Dijkstra')
|
110
133
|
@page.should_not be_redirect
|
111
134
|
end
|
112
135
|
|
113
|
-
it
|
136
|
+
it 'should collect the image urls' do
|
114
137
|
@client.follow_redirects = true
|
115
138
|
@page = @client.find('Edsger Dijkstra')
|
116
|
-
|
139
|
+
[
|
140
|
+
'/en/4/4a/Commons-logo.svg',
|
141
|
+
'/en/4/48/Folder_Hexagonal_Icon.svg',
|
142
|
+
'/commons/5/57/Dijkstra_Animation.gif',
|
143
|
+
'/commons/c/c9/Edsger_Dijkstra_1994.jpg',
|
144
|
+
'/commons/d/d9/Edsger_Wybe_Dijkstra.jpg',
|
145
|
+
'/commons/0/00/Complex-adaptive-system.jpg',
|
146
|
+
'/en/4/4d/Centrum-wiskunde-informatica-logo.png',
|
147
|
+
'/commons/7/7b/An_illustration_of_the_dining_philosophers_problem.png',
|
148
|
+
'/commons/3/37/Detail_of_a_1Kb_ferrite_core_RAM-module_of_an_1960s_Electrologica_X1_computer.jpg'
|
149
|
+
].each do |image|
|
150
|
+
@page.image_urls.should include('https://upload.wikimedia.org/wikipedia' + image)
|
151
|
+
end
|
117
152
|
end
|
118
153
|
end
|
119
154
|
|
120
|
-
describe Wikipedia::Client,
|
155
|
+
describe Wikipedia::Client, '.find page (Rails) at jp' do
|
121
156
|
before(:each) do
|
122
|
-
Wikipedia.
|
157
|
+
Wikipedia.configure { domain 'ja.wikipedia.org' }
|
123
158
|
@client = Wikipedia::Client.new
|
124
159
|
@client.follow_redirects = false
|
125
160
|
end
|
126
161
|
|
127
|
-
it
|
162
|
+
it 'should get a redirect when trying Rails' do
|
128
163
|
@page = @client.find('Rails')
|
129
164
|
@page.should be_redirect
|
130
165
|
end
|
131
166
|
|
132
|
-
it
|
167
|
+
it 'should get a final page when follow_redirects is true' do
|
133
168
|
@client.follow_redirects = true
|
134
169
|
@page = @client.find('Rails')
|
135
170
|
@page.should_not be_redirect
|
136
171
|
end
|
137
172
|
end
|
138
173
|
|
139
|
-
describe Wikipedia::Client,
|
174
|
+
describe Wikipedia::Client, '.find random page' do
|
140
175
|
before(:each) do
|
141
176
|
@client = Wikipedia::Client.new
|
142
177
|
end
|
143
178
|
|
144
|
-
it
|
145
|
-
@page1 = @client.find_random
|
146
|
-
@page2 = @client.find_random
|
179
|
+
it 'should get random pages' do
|
180
|
+
@page1 = @client.find_random.title
|
181
|
+
@page2 = @client.find_random.title
|
147
182
|
@page1.should_not == @page2
|
148
183
|
end
|
149
184
|
end
|
150
185
|
|
151
|
-
describe Wikipedia::Client,
|
186
|
+
describe Wikipedia::Client, 'page.summary (mocked)' do
|
152
187
|
before(:each) do
|
153
188
|
@client = Wikipedia::Client.new
|
154
189
|
@edsger_dijkstra = File.read(File.dirname(__FILE__) + '/../fixtures/Edsger_Dijkstra.json')
|
155
|
-
@edsger_content = JSON
|
190
|
+
@edsger_content = JSON.parse(File.read(File.dirname(__FILE__) + '/../fixtures/Edsger_content.txt'))['content']
|
156
191
|
@client.should_receive(:request).and_return(@edsger_dijkstra)
|
157
192
|
end
|
158
193
|
|
159
|
-
it
|
194
|
+
it 'should return only the summary' do
|
160
195
|
@page = @client.find('Edsger_Dijkstra')
|
161
|
-
@page.summary.should == 'Edsger Wybe Dijkstra (Dutch pronunciation: [ˈɛtsxər ˈʋibə ˈdɛikstra] ( );
|
162
|
-
|
196
|
+
@page.summary.should == 'Edsger Wybe Dijkstra (Dutch pronunciation: [ˈɛtsxər ˈʋibə ˈdɛikstra] ( );'\
|
197
|
+
' 11 May 1930 – 6 August 2002) was a Dutch computer scientist. He received the 1972 Turing Award for fundamental'\
|
198
|
+
' contributions to developing programming languages, and was the Schlumberger Centennial Chair of Computer'\
|
199
|
+
" Sciences at The University of Texas at Austin from 1984 until 2000.\nShortly before his death in 2002, he"\
|
200
|
+
' received the ACM PODC Influential Paper Award in distributed computing for his work on self-stabilization of'\
|
201
|
+
' program computation. This annual award was renamed the Dijkstra Prize the following year, in his honor.'
|
163
202
|
end
|
164
203
|
end
|
data/spec/lib/sanitize_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../spec_helper'
|
2
2
|
require 'json'
|
3
3
|
|
4
|
-
describe Wikipedia::Page,
|
4
|
+
describe Wikipedia::Page, '.sanitize wiki markup' do
|
5
5
|
Dir[File.dirname(__FILE__) + '/../fixtures/sanitization_samples/*-raw.txt'].each do |raw_filename|
|
6
6
|
name = raw_filename.sub(/\/(.+?)\-raw\.txt$/, '\1')
|
7
7
|
sanitized_filename = raw_filename.sub('-raw', '-sanitized')
|
data/spec/lib/url_spec.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../spec_helper'
|
2
2
|
|
3
|
-
describe Wikipedia::Url,
|
4
|
-
it
|
3
|
+
describe Wikipedia::Url, 'like http://en.wikipedia.org/wiki/Getting_Things_Done' do
|
4
|
+
it 'should have a title of Getting_Things_Done' do
|
5
5
|
url = Wikipedia::Url.new('http://en.wikipedia.org/wiki/Getting_Things_Done')
|
6
6
|
url.title.should == 'Getting_Things_Done'
|
7
7
|
end
|
8
|
-
end
|
8
|
+
end
|
data/spec/lib/wikipedia_spec.rb
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../spec_helper'
|
2
2
|
|
3
|
-
describe Wikipedia,
|
4
|
-
it
|
3
|
+
describe Wikipedia, '.find' do
|
4
|
+
it 'should return a Wikipedia::Page instance' do
|
5
5
|
page = Wikipedia.find('Getting_Things_Done')
|
6
6
|
page.should be_an_instance_of(Wikipedia::Page)
|
7
7
|
end
|
8
|
-
|
9
|
-
it
|
8
|
+
|
9
|
+
it 'should return a Page with a title' do
|
10
10
|
page = Wikipedia.find('Getting_Things_Done')
|
11
11
|
page.title.should_not be_nil
|
12
12
|
end
|
13
|
-
|
14
|
-
it
|
13
|
+
|
14
|
+
it 'should return a Page given a URL' do
|
15
15
|
page1 = Wikipedia.find('Getting_Things_Done')
|
16
|
-
|
16
|
+
|
17
17
|
page2 = Wikipedia.find('http://en.wikipedia.org/wiki/Getting_Things_Done')
|
18
18
|
page1.title.should == page2.title
|
19
19
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,4 +1,12 @@
|
|
1
|
-
require 'rubygems'
|
2
1
|
require 'rspec'
|
3
2
|
|
3
|
+
if ENV['COVERAGE'] == 'true'
|
4
|
+
begin
|
5
|
+
require 'simplecov'
|
6
|
+
SimpleCov.start
|
7
|
+
rescue LoadError
|
8
|
+
abort 'Coverage driver not available. In order to run coverage, you must run: gem install simplecov'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
4
12
|
require File.dirname(__FILE__) + '/../lib/wikipedia'
|
data/wikipedia-client.gemspec
CHANGED
@@ -1,26 +1,30 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
$:.push File.expand_path("../lib", __FILE__)
|
3
|
-
require "wikipedia/version"
|
4
2
|
|
5
|
-
|
6
|
-
|
3
|
+
$LOAD_PATH.push File.expand_path('../lib', __FILE__)
|
4
|
+
require 'wikipedia/version'
|
5
|
+
require 'date'
|
6
|
+
|
7
|
+
# rubocop:disable Metrics/BlockLength
|
8
|
+
Gem::Specification.new do |s|
|
9
|
+
s.name = 'wikipedia-client'
|
7
10
|
s.version = Wikipedia::VERSION
|
8
11
|
|
9
|
-
s.required_rubygems_version = Gem::Requirement.new(
|
12
|
+
s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
|
10
13
|
|
11
14
|
s.license = 'MIT'
|
12
|
-
s.authors = [
|
15
|
+
s.authors = ['Cyril David', 'Ken Pratt', 'Mike Haugland',
|
16
|
+
'Aishwarya Subramanian', 'Pietro Menna', 'Sophie Rapoport']
|
13
17
|
s.date = Date.today.to_s
|
14
|
-
s.description =
|
15
|
-
s.email =
|
18
|
+
s.description = 'Ruby client for the Wikipedia API'
|
19
|
+
s.email = 'ken@kenpratt.net'
|
16
20
|
|
17
|
-
s.homepage =
|
18
|
-
s.rubygems_version =
|
19
|
-
s.summary =
|
21
|
+
s.homepage = 'http://github.com/kenpratt/wikipedia-client'
|
22
|
+
s.rubygems_version = '1.8.23'
|
23
|
+
s.summary = 'Ruby client for the Wikipedia API'
|
20
24
|
s.platform = Gem::Platform::RUBY
|
21
25
|
s.files = `git ls-files`.split("\n")
|
22
26
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
23
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
27
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
24
28
|
s.has_rdoc = true
|
25
29
|
s.extra_rdoc_files = ['README.textile']
|
26
30
|
s.bindir = 'bin'
|
@@ -32,17 +36,17 @@ spec = Gem::Specification.new do |s|
|
|
32
36
|
s.add_development_dependency('rspec')
|
33
37
|
s.add_development_dependency('rdoc')
|
34
38
|
s.add_development_dependency('jeweler')
|
39
|
+
s.add_development_dependency('rubocop')
|
35
40
|
|
36
|
-
|
37
|
-
if s.respond_to? :specification_version then
|
41
|
+
if s.respond_to? :specification_version
|
38
42
|
s.specification_version = 3
|
39
43
|
|
40
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0')
|
41
|
-
s.add_development_dependency(
|
44
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0')
|
45
|
+
s.add_development_dependency('thoughtbot-shoulda', ['>= 0'])
|
42
46
|
else
|
43
|
-
s.add_dependency(
|
47
|
+
s.add_dependency('thoughtbot-shoulda', ['>= 0'])
|
44
48
|
end
|
45
49
|
else
|
46
|
-
s.add_dependency(
|
50
|
+
s.add_dependency('thoughtbot-shoulda', ['>= 0'])
|
47
51
|
end
|
48
52
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wikipedia-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cyril David
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date:
|
16
|
+
date: 2017-05-24 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: rake
|
@@ -71,6 +71,20 @@ dependencies:
|
|
71
71
|
- - ">="
|
72
72
|
- !ruby/object:Gem::Version
|
73
73
|
version: '0'
|
74
|
+
- !ruby/object:Gem::Dependency
|
75
|
+
name: rubocop
|
76
|
+
requirement: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
81
|
+
type: :development
|
82
|
+
prerelease: false
|
83
|
+
version_requirements: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
74
88
|
- !ruby/object:Gem::Dependency
|
75
89
|
name: thoughtbot-shoulda
|
76
90
|
requirement: !ruby/object:Gem::Requirement
|
@@ -92,7 +106,9 @@ extensions: []
|
|
92
106
|
extra_rdoc_files:
|
93
107
|
- README.textile
|
94
108
|
files:
|
109
|
+
- ".editorconfig"
|
95
110
|
- ".gitignore"
|
111
|
+
- ".rubocop.yml"
|
96
112
|
- ".travis.yml"
|
97
113
|
- Gemfile
|
98
114
|
- Gemfile.lock
|
@@ -170,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
170
186
|
version: '0'
|
171
187
|
requirements: []
|
172
188
|
rubyforge_project:
|
173
|
-
rubygems_version: 2.
|
189
|
+
rubygems_version: 2.6.12
|
174
190
|
signing_key:
|
175
191
|
specification_version: 3
|
176
192
|
summary: Ruby client for the Wikipedia API
|