cinch-wikipedia 1.0.0 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: c58c81c016cd674a1de487b0d0bf24cfa42bd53753291cf77b718546b6f0ccf4
4
+ data.tar.gz: e76b020a6db12d71f426cfe67a76d92c5d68a4de9187119a3cc51a0b768fa8cf
5
+ SHA512:
6
+ metadata.gz: 7e14c045f1ab624d50d1e13530186e241b8e66ad1f4f28f7a96c3134b8dcfef1ed4b26e61954294b495b8e524549eeb6aa2561edc29b0ffa83a2f1ebf98b0a31
7
+ data.tar.gz: 34ab062343ce99a2ae77ba1ee6344deb78b092bd4ed27f32896be4300e309e14c8d09425442f86f04c54594f458fe21799aae8a0a7e07485f3151741f408ce97
@@ -1,5 +1,34 @@
1
- nguage: ruby
1
+ addons:
2
+ code_climate:
3
+ repo_token: 2be14078568687e04a23810df8b2d8b5f11347f586f720c90b74d79aed27bb6a
4
+ language: ruby
5
+ before_install:
6
+ - gem update --system
7
+ - gem update bundler
8
+ env:
9
+ global:
10
+ - "JRUBY_OPTS=-Xcext.enabled=true"
2
11
  rvm:
3
- - ruby-head
12
+ - 1.8.7
4
13
  - 1.9.2
5
14
  - 1.9.3
15
+ - 2.0.0
16
+ - 2.1.0
17
+ - 2.2.0
18
+ - 2.3.0
19
+ - jruby-18mode
20
+ - jruby-19mode
21
+ - ruby-head
22
+ - jruby-head
23
+ - ree
24
+ matrix:
25
+ allow_failures:
26
+ - rvm: 1.8.7
27
+ - rvm: 1.9.2
28
+ - rvm: 1.9.3
29
+ - rvm: ree
30
+ - rvm: jruby-18mode
31
+ - rvm: jruby-19mode
32
+ - rvm: jruby-head
33
+ - rvm: ruby-head
34
+ fast_finish: true
data/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![Gem Version](https://badge.fury.io/rb/cinch-wikipedia.png)](http://badge.fury.io/rb/cinch-wikipedia)
4
4
  [![Dependency Status](https://gemnasium.com/bhaberer/cinch-wikipedia.png)](https://gemnasium.com/bhaberer/cinch-wikipedia)
5
5
  [![Build Status](https://travis-ci.org/bhaberer/cinch-wikipedia.png?branch=master)](https://travis-ci.org/bhaberer/cinch-wikipedia)
6
- [![Coverage Status](https://coveralls.io/repos/bhaberer/cinch-wikipedia/badge.png?branch=master)](https://coveralls.io/r/bhaberer/cinch-wikipedia?branch=master)
6
+ [![Test Coverage](https://codeclimate.com/github/bhaberer/cinch-wikipedia/badges/coverage.svg)](https://codeclimate.com/github/bhaberer/cinch-wikipedia/coverage)
7
7
  [![Code Climate](https://codeclimate.com/github/bhaberer/cinch-wikipedia.png)](https://codeclimate.com/github/bhaberer/cinch-wikipedia)
8
8
 
9
9
  Cinch plugin to query wikipedia.
data/Rakefile CHANGED
@@ -1,7 +1,7 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new
5
5
 
6
- task :default => :spec
7
- task :test => :spec
6
+ task default: :spec
7
+ task test: :spec
@@ -4,24 +4,27 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'cinch/plugins/wikipedia/version'
5
5
 
6
6
  Gem::Specification.new do |gem|
7
- gem.name = "cinch-wikipedia"
7
+ gem.name = 'cinch-wikipedia'
8
8
  gem.version = Cinch::Plugins::Wikipedia::VERSION
9
- gem.authors = ["Brian Haberer"]
10
- gem.email = ["bhaberer@gmail.com"]
11
- gem.description = %q{Cinch plugin that fetches a truncated blurb from the head of a wikipedia page.}
12
- gem.summary = %q{Cinch Wikipedia Plugin}
13
- gem.homepage = "https://github.com/bhaberer/cinch-wikipedia"
9
+ gem.authors = ['Brian Haberer']
10
+ gem.email = ['bhaberer@gmail.com']
11
+ gem.description = 'Cinch plugin that fetches a truncated blurb from the '\
12
+ 'head of a wikipedia page.'
13
+ gem.summary = 'Cinch Wikipedia Plugin'
14
+ gem.homepage = 'https://github.com/bhaberer/cinch-wikipedia'
15
+ gem.license = 'MIT'
14
16
 
15
- gem.files = `git ls-files`.split($/)
16
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
18
+ gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
17
19
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
- gem.require_paths = ["lib"]
20
+ gem.require_paths = ['lib']
19
21
 
20
- gem.add_development_dependency 'rake'
21
- gem.add_development_dependency 'rspec'
22
- gem.add_development_dependency 'coveralls'
22
+ gem.add_development_dependency 'rake', '~> 12.3.3'
23
+ gem.add_development_dependency 'rspec', '~> 3'
24
+ gem.add_development_dependency 'cinch-test', '~> 0.1', '>= 0.1.1'
25
+ gem.add_development_dependency 'codeclimate-test-reporter', '~> 0.4'
23
26
 
24
- gem.add_dependency 'cinch', '~> 2.0.4'
25
- gem.add_dependency 'cinch-toolbox', '~> 1.0.0'
26
- gem.add_dependency 'cinch-cooldown', '~> 1.0.0'
27
+ gem.add_dependency 'cinch', '~> 2'
28
+ gem.add_dependency 'cinch-cooldown', '~> 1.1', '>= 1.1.7'
29
+ gem.add_dependency 'cinch-toolbox', '~> 1.1', '>= 1.1.6'
27
30
  end
@@ -1,2 +1,2 @@
1
- require "cinch/plugins/wikipedia/version"
2
- require "cinch/plugins/wikipedia/wikipedia"
1
+ require 'cinch/plugins/wikipedia/version'
2
+ require 'cinch/plugins/wikipedia'
@@ -0,0 +1,67 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'cinch'
3
+ require 'cinch/toolbox'
4
+ require 'cinch/cooldown'
5
+
6
+ module Cinch
7
+ module Plugins
8
+ # Plugin to allow users to search wikipedia.
9
+ class Wikipedia
10
+ include Cinch::Plugin
11
+
12
+ enforce_cooldown
13
+
14
+ self.help = 'Use .wiki <term> to see the Wikipedia info for that term.'
15
+
16
+ match(/wiki(?:pedia)? (.*)/)
17
+
18
+ def initialize(*args)
19
+ super
20
+ @max_length = config[:max_length] || 300
21
+ end
22
+
23
+ def execute(m, term)
24
+ m.reply wiki(term)
25
+ end
26
+
27
+ private
28
+
29
+ def wiki(term)
30
+ # URI Encode
31
+ term = URI.escape(term, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
32
+ url = "http://en.wikipedia.org/w/index.php?search=#{term}"
33
+
34
+ # Truncate text and url if they are too long
35
+ text = Cinch::Toolbox.truncate(get_def(term, url), @max_length)
36
+ url = Cinch::Toolbox.shorten(url)
37
+
38
+ "Wikipedia ∴ #{text} [#{url}]"
39
+ end
40
+
41
+ def get_def(term, url)
42
+ cats = Cinch::Toolbox.get_html_element(url, '#mw-normal-catlinks')
43
+ if cats && cats.include?('Disambiguation')
44
+ return "'#{term} is too vague and lead to a disambiguation page."
45
+ else
46
+ wiki_text = Cinch::Toolbox.get_html_element(url, '#mw-content-text/p')
47
+ if wiki_text.nil?
48
+ return not_found(url)
49
+ end
50
+ return wiki_text
51
+ end
52
+ end
53
+
54
+ def not_found(url)
55
+ msg = "I couldn't find anything for that search, "
56
+ alt_term = Cinch::Toolbox.get_html_element(url, '.searchdidyoumean')
57
+ if alt_term
58
+ alt_term = alt_term[/\ADid you mean: (\w+)\z/, 1]
59
+ msg << "did you mean '#{alt_term}'?"
60
+ else
61
+ msg << 'sorry!'
62
+ end
63
+ msg
64
+ end
65
+ end
66
+ end
67
+ end
@@ -1,7 +1,9 @@
1
+ # -*- coding: utf-8 -*-
1
2
  module Cinch
2
3
  module Plugins
4
+ # Versioning information
3
5
  class Wikipedia
4
- VERSION = "1.0.0"
6
+ VERSION = '1.0.6'
5
7
  end
6
8
  end
7
9
  end
@@ -1,41 +1,49 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Cinch::Plugins::Wikipedia do
4
+ include Cinch::Test
4
5
 
5
6
  before(:all) do
6
- @plugin = Cinch::Plugins::Wikipedia.new
7
+ @bot = make_bot(Cinch::Plugins::Wikipedia)
7
8
  end
8
9
 
9
10
  # normal queries
10
11
  it 'should return a definition of a term' do
11
- @plugin.send(:get_def, 'computer').
12
- should include("A computer is a general purpose device")
12
+ expect(get_replies(make_message(@bot, '!wiki computer')).first.text)
13
+ .to include('A computer is a general purpose device')
14
+ end
15
+
16
+ it 'should return a definition of a term for each version of cmd' do
17
+ msg1 = get_replies(make_message(@bot, '!wiki computer')).first.text
18
+ msg2 = get_replies(make_message(@bot, '!wikipedia computer')).first.text
19
+ expect(msg1).to eq(msg2)
13
20
  end
14
21
 
15
22
  it 'should not return multiple lined definitions' do
16
- @plugin.send(:get_def, 'Teenager').
17
- should_not include("\n")
23
+ expect(get_replies(make_message(@bot, '!wiki Teenager')).first.text)
24
+ .to_not include("\n")
18
25
  end
19
26
 
20
27
  it 'should not return definitions that are longer than 250 chars' do
21
- @plugin.send(:get_def, 'Teenager').length.
22
- should == 334
28
+ expect(get_replies(make_message(@bot, '!wiki Teenager')).first.text.length)
29
+ .to eq 334
23
30
  end
24
31
 
25
32
  # Not found
26
33
  it 'should return an error message when a term is not found' do
27
- @plugin.send(:get_def, 'dasdafasfasfasfasafsdfsdfsadf').
28
- should include("I couldn't find anything for that search, sorry!")
34
+ msg = make_message(@bot, '!wiki dasdafasfasfasfasafsdfsdfsadf')
35
+ expect(get_replies(msg).first.text)
36
+ .to include("I couldn't find anything for that search, sorry!")
29
37
  end
30
38
 
31
39
  it 'should provide suggestions if one is listed on the page' do
32
- @plugin.send(:get_def, 'smegama').
33
- should include("I couldn't find anything for that search, did you mean 'smegma'?")
40
+ expect(get_replies(make_message(@bot, '!wiki cliinton')).first.text)
41
+ .to include("I couldn't find anything for that search, did you mean 'clinton'?")
34
42
  end
35
43
 
36
44
  # disambiguation
37
45
  it 'should return helful information when a disambuation page' do
38
- @plugin.send(:get_def, 'hipster').
39
- should include('is too vague and lead to a disambiguation page')
46
+ expect(get_replies(make_message(@bot, '!wiki hacker')).first.text)
47
+ .to include('is too vague and lead to a disambiguation page')
40
48
  end
41
49
  end
@@ -1,22 +1,5 @@
1
- require 'coveralls'
2
- Coveralls.wear!
3
- require 'cinch-wikipedia'
4
-
5
- def fake_bot
6
- bot = Cinch::Bot.new
7
- bot.loggers.level = :fatal
8
- bot
9
- return bot
10
- end
1
+ require "codeclimate-test-reporter"
2
+ CodeClimate::TestReporter.start
11
3
 
12
- module Cinch
13
- module Plugin
14
- def initialize(opts = {})
15
- @bot = fake_bot
16
- @handlers = []
17
- @timers = []
18
- # Don't init the bot
19
- # __register
20
- end
21
- end
22
- end
4
+ require 'cinch-wikipedia'
5
+ require 'cinch/test'
metadata CHANGED
@@ -1,112 +1,131 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cinch-wikipedia
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
5
- prerelease:
4
+ version: 1.0.6
6
5
  platform: ruby
7
6
  authors:
8
7
  - Brian Haberer
9
- autorequire:
8
+ autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-06-09 00:00:00.000000000 Z
11
+ date: 2021-01-27 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
- version: '0'
19
+ version: 12.3.3
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: '0'
26
+ version: 12.3.3
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rspec
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - "~>"
36
32
  - !ruby/object:Gem::Version
37
- version: '0'
33
+ version: '3'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - "~>"
44
39
  - !ruby/object:Gem::Version
45
- version: '0'
40
+ version: '3'
46
41
  - !ruby/object:Gem::Dependency
47
- name: coveralls
42
+ name: cinch-test
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - "~>"
52
46
  - !ruby/object:Gem::Version
53
- version: '0'
47
+ version: '0.1'
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 0.1.1
54
51
  type: :development
55
52
  prerelease: false
56
53
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
54
  requirements:
59
- - - ! '>='
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: '0.1'
58
+ - - ">="
60
59
  - !ruby/object:Gem::Version
61
- version: '0'
60
+ version: 0.1.1
61
+ - !ruby/object:Gem::Dependency
62
+ name: codeclimate-test-reporter
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '0.4'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '0.4'
62
75
  - !ruby/object:Gem::Dependency
63
76
  name: cinch
64
77
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
78
  requirements:
67
- - - ~>
79
+ - - "~>"
68
80
  - !ruby/object:Gem::Version
69
- version: 2.0.4
81
+ version: '2'
70
82
  type: :runtime
71
83
  prerelease: false
72
84
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
85
  requirements:
75
- - - ~>
86
+ - - "~>"
76
87
  - !ruby/object:Gem::Version
77
- version: 2.0.4
88
+ version: '2'
78
89
  - !ruby/object:Gem::Dependency
79
- name: cinch-toolbox
90
+ name: cinch-cooldown
80
91
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
92
  requirements:
83
- - - ~>
93
+ - - "~>"
84
94
  - !ruby/object:Gem::Version
85
- version: 1.0.0
95
+ version: '1.1'
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: 1.1.7
86
99
  type: :runtime
87
100
  prerelease: false
88
101
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
102
  requirements:
91
- - - ~>
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: '1.1'
106
+ - - ">="
92
107
  - !ruby/object:Gem::Version
93
- version: 1.0.0
108
+ version: 1.1.7
94
109
  - !ruby/object:Gem::Dependency
95
- name: cinch-cooldown
110
+ name: cinch-toolbox
96
111
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
112
  requirements:
99
- - - ~>
113
+ - - "~>"
100
114
  - !ruby/object:Gem::Version
101
- version: 1.0.0
115
+ version: '1.1'
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: 1.1.6
102
119
  type: :runtime
103
120
  prerelease: false
104
121
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
122
  requirements:
107
- - - ~>
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: '1.1'
126
+ - - ">="
108
127
  - !ruby/object:Gem::Version
109
- version: 1.0.0
128
+ version: 1.1.6
110
129
  description: Cinch plugin that fetches a truncated blurb from the head of a wikipedia
111
130
  page.
112
131
  email:
@@ -115,43 +134,41 @@ executables: []
115
134
  extensions: []
116
135
  extra_rdoc_files: []
117
136
  files:
118
- - .gitignore
119
- - .travis.yml
137
+ - ".gitignore"
138
+ - ".travis.yml"
120
139
  - Gemfile
121
140
  - LICENSE.txt
122
141
  - README.md
123
142
  - Rakefile
124
143
  - cinch-wikipedia.gemspec
125
144
  - lib/cinch-wikipedia.rb
145
+ - lib/cinch/plugins/wikipedia.rb
126
146
  - lib/cinch/plugins/wikipedia/version.rb
127
- - lib/cinch/plugins/wikipedia/wikipedia.rb
128
147
  - spec/cinch-wikipedia_spec.rb
129
148
  - spec/spec_helper.rb
130
149
  homepage: https://github.com/bhaberer/cinch-wikipedia
131
- licenses: []
132
- post_install_message:
150
+ licenses:
151
+ - MIT
152
+ metadata: {}
153
+ post_install_message:
133
154
  rdoc_options: []
134
155
  require_paths:
135
156
  - lib
136
157
  required_ruby_version: !ruby/object:Gem::Requirement
137
- none: false
138
158
  requirements:
139
- - - ! '>='
159
+ - - ">="
140
160
  - !ruby/object:Gem::Version
141
161
  version: '0'
142
162
  required_rubygems_version: !ruby/object:Gem::Requirement
143
- none: false
144
163
  requirements:
145
- - - ! '>='
164
+ - - ">="
146
165
  - !ruby/object:Gem::Version
147
166
  version: '0'
148
167
  requirements: []
149
- rubyforge_project:
150
- rubygems_version: 1.8.24
151
- signing_key:
152
- specification_version: 3
168
+ rubygems_version: 3.2.6
169
+ signing_key:
170
+ specification_version: 4
153
171
  summary: Cinch Wikipedia Plugin
154
172
  test_files:
155
173
  - spec/cinch-wikipedia_spec.rb
156
174
  - spec/spec_helper.rb
157
- has_rdoc:
@@ -1,62 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- require 'cinch'
3
- require 'cinch-toolbox'
4
- require 'cinch-cooldown'
5
-
6
- module Cinch::Plugins
7
- class Wikipedia
8
- include Cinch::Plugin
9
-
10
- enforce_cooldown
11
-
12
- self.help = "Use .wiki <term> to see the Wikipedia info for that term."
13
-
14
- match /wiki (.*)/
15
- match /wikipedia (.*)/
16
-
17
- def initialize(*args)
18
- super
19
- @max_length = config[:max_length] || 300
20
- end
21
-
22
- def execute(m, term)
23
- m.reply get_def(term)
24
- end
25
-
26
- private
27
-
28
- def get_def(term)
29
- # URI Encode
30
- term = URI.escape(term, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
31
- url = "http://en.wikipedia.org/w/index.php?search=#{term}"
32
-
33
- cats = Cinch::Toolbox.get_html_element(url, '#mw-normal-catlinks')
34
- if cats && cats.include?('Disambiguation')
35
- wiki_text = "'#{term} is too vague and lead to a disambiguation page."
36
- else
37
- # Grab the text
38
- wiki_text = Cinch::Toolbox.get_html_element(url, '#mw-content-text p')
39
-
40
- # Check for search errors
41
- return not_found(wiki_text, url) if wiki_text.include?('Help:Searching')
42
- end
43
-
44
- # Truncate text and url if they are too long
45
- text = Cinch::Toolbox.truncate(wiki_text, @max_length)
46
- url = Cinch::Toolbox.shorten(url)
47
-
48
- return "Wikipedia ∴ #{text} [#{url}]"
49
- end
50
-
51
- def not_found(wiki_text, url)
52
- msg = "I couldn't find anything for that search"
53
- if alt_term_text = Cinch::Toolbox.get_html_element(url, '.searchdidyoumean')
54
- alt_term = alt_term_text[/\ADid you mean: (\w+)\z/, 1]
55
- msg << ", did you mean '#{alt_term}'?"
56
- else
57
- msg << ", sorry!"
58
- end
59
- return msg
60
- end
61
- end
62
- end