cleverbot 0.0.1 → 0.1.0
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.
- data/Gemfile +2 -0
- data/Gemfile.lock +6 -0
- data/README.rdoc +22 -0
- data/VERSION +1 -1
- data/cleverbot.gemspec +9 -2
- data/lib/cleverbot.rb +3 -0
- data/lib/cleverbot/client.rb +91 -0
- data/lib/cleverbot/parser.rb +44 -0
- data/spec/cleverbot/client_spec.rb +181 -0
- data/spec/cleverbot/parser_spec.rb +84 -0
- metadata +28 -13
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -3,10 +3,15 @@ GEM
|
|
3
3
|
specs:
|
4
4
|
diff-lcs (1.1.3)
|
5
5
|
git (1.2.5)
|
6
|
+
httparty (0.8.0)
|
7
|
+
multi_json
|
8
|
+
multi_xml
|
6
9
|
jeweler (1.6.4)
|
7
10
|
bundler (~> 1.0)
|
8
11
|
git (>= 1.2.5)
|
9
12
|
rake
|
13
|
+
multi_json (1.0.3)
|
14
|
+
multi_xml (0.4.0)
|
10
15
|
rake (0.9.2)
|
11
16
|
rcov (0.9.10)
|
12
17
|
rdoc (3.9.4)
|
@@ -24,6 +29,7 @@ PLATFORMS
|
|
24
29
|
|
25
30
|
DEPENDENCIES
|
26
31
|
bundler (~> 1.0)
|
32
|
+
httparty (~> 0.8.0)
|
27
33
|
jeweler (~> 1.6)
|
28
34
|
rcov (~> 0.9)
|
29
35
|
rdoc (~> 3.9)
|
data/README.rdoc
CHANGED
@@ -2,6 +2,28 @@
|
|
2
2
|
|
3
3
|
Ruby wrapper for Cleverbot.
|
4
4
|
|
5
|
+
== Examples
|
6
|
+
|
7
|
+
=== Talk to Cleverbot with Cleverbot::Client.write
|
8
|
+
|
9
|
+
@params = Cleverbot::Client.write 'Hi.'
|
10
|
+
@params['message'] # => "How are you?"
|
11
|
+
@params['sessionid'] # => "ABC01234567"
|
12
|
+
|
13
|
+
@params.keep_if { |key, value| Cleverbot::Client::DEFAULT_PARAMS.keys.include? key }
|
14
|
+
@params['message'] # => nil
|
15
|
+
@params['sessionid'] # => "ABC01234567"
|
16
|
+
|
17
|
+
@params = Cleverbot::Client.write 'Good, you?', @params
|
18
|
+
@params['message'] # => "Good."
|
19
|
+
@params['sessionid'] # => "ABC01234567"
|
20
|
+
|
21
|
+
=== Talk to Cleverbot with Cleverbot::Client#write to manage parameters.
|
22
|
+
|
23
|
+
@client = Cleverbot::Client.new
|
24
|
+
@client.write 'Hi.' # => "How are you?"
|
25
|
+
@client.write 'Good, you?' # => "Good."
|
26
|
+
|
5
27
|
== Contributing to cleverbot
|
6
28
|
|
7
29
|
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
data/cleverbot.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{cleverbot}
|
8
|
-
s.version = "0.0
|
8
|
+
s.version = "0.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Benjamin Manns"]
|
12
|
-
s.date = %q{2011-09-
|
12
|
+
s.date = %q{2011-09-16}
|
13
13
|
s.description = %q{Ruby wrapper for Cleverbot.}
|
14
14
|
s.email = %q{benmanns@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -28,6 +28,10 @@ Gem::Specification.new do |s|
|
|
28
28
|
"VERSION",
|
29
29
|
"cleverbot.gemspec",
|
30
30
|
"lib/cleverbot.rb",
|
31
|
+
"lib/cleverbot/client.rb",
|
32
|
+
"lib/cleverbot/parser.rb",
|
33
|
+
"spec/cleverbot/client_spec.rb",
|
34
|
+
"spec/cleverbot/parser_spec.rb",
|
31
35
|
"spec/cleverbot_spec.rb",
|
32
36
|
"spec/spec_helper.rb"
|
33
37
|
]
|
@@ -41,12 +45,14 @@ Gem::Specification.new do |s|
|
|
41
45
|
s.specification_version = 3
|
42
46
|
|
43
47
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
48
|
+
s.add_runtime_dependency(%q<httparty>, ["~> 0.8.0"])
|
44
49
|
s.add_development_dependency(%q<bundler>, ["~> 1.0"])
|
45
50
|
s.add_development_dependency(%q<jeweler>, ["~> 1.6"])
|
46
51
|
s.add_development_dependency(%q<rcov>, ["~> 0.9"])
|
47
52
|
s.add_development_dependency(%q<rdoc>, ["~> 3.9"])
|
48
53
|
s.add_development_dependency(%q<rspec>, ["~> 2.3"])
|
49
54
|
else
|
55
|
+
s.add_dependency(%q<httparty>, ["~> 0.8.0"])
|
50
56
|
s.add_dependency(%q<bundler>, ["~> 1.0"])
|
51
57
|
s.add_dependency(%q<jeweler>, ["~> 1.6"])
|
52
58
|
s.add_dependency(%q<rcov>, ["~> 0.9"])
|
@@ -54,6 +60,7 @@ Gem::Specification.new do |s|
|
|
54
60
|
s.add_dependency(%q<rspec>, ["~> 2.3"])
|
55
61
|
end
|
56
62
|
else
|
63
|
+
s.add_dependency(%q<httparty>, ["~> 0.8.0"])
|
57
64
|
s.add_dependency(%q<bundler>, ["~> 1.0"])
|
58
65
|
s.add_dependency(%q<jeweler>, ["~> 1.6"])
|
59
66
|
s.add_dependency(%q<rcov>, ["~> 0.9"])
|
data/lib/cleverbot.rb
CHANGED
@@ -0,0 +1,91 @@
|
|
1
|
+
require 'cleverbot/parser'
|
2
|
+
|
3
|
+
module Cleverbot
|
4
|
+
# Ruby wrapper for Cleverbot.com.
|
5
|
+
class Client
|
6
|
+
include HTTParty
|
7
|
+
|
8
|
+
# The default form variables for POSTing to Cleverbot.com
|
9
|
+
DEFAULT_PARAMS = {
|
10
|
+
'stimulus' => '',
|
11
|
+
'start' => 'y',
|
12
|
+
'sessionid' => '',
|
13
|
+
'vText8' => '',
|
14
|
+
'vText7' => '',
|
15
|
+
'vText6' => '',
|
16
|
+
'vText5' => '',
|
17
|
+
'vText4' => '',
|
18
|
+
'vText3' => '',
|
19
|
+
'vText2' => '',
|
20
|
+
'icognoid' => 'wsf',
|
21
|
+
'icognocheck' => '',
|
22
|
+
'fno' => '0',
|
23
|
+
'prevref' => '',
|
24
|
+
'emotionaloutput' => '',
|
25
|
+
'emotionalhistory' => '',
|
26
|
+
'asbotname' => '',
|
27
|
+
'ttsvoice' => '',
|
28
|
+
'typing' => '',
|
29
|
+
'lineref' => '',
|
30
|
+
'sub' => 'Say',
|
31
|
+
'islearning' => '1',
|
32
|
+
'cleanslate' => 'false',
|
33
|
+
}
|
34
|
+
|
35
|
+
# The path to the form endpoint on Cleverbot.com.
|
36
|
+
PATH = '/webservicemin'
|
37
|
+
|
38
|
+
base_uri 'http://www.cleverbot.com'
|
39
|
+
|
40
|
+
parser Parser
|
41
|
+
|
42
|
+
# Holds the parameters for an instantiated Cleverbot::Base.
|
43
|
+
attr_reader :params
|
44
|
+
|
45
|
+
# Creates a digest from the form parameters.
|
46
|
+
#
|
47
|
+
# ==== Parameters
|
48
|
+
#
|
49
|
+
# [<tt>body</tt>] <tt>String</tt> to be digested.
|
50
|
+
def self.digest body
|
51
|
+
Digest::MD5.hexdigest body[9...29]
|
52
|
+
end
|
53
|
+
|
54
|
+
# Sends a message to Cleverbot.com and returns a <tt>Hash</tt> containing the parameters received.
|
55
|
+
#
|
56
|
+
# ==== Parameters
|
57
|
+
#
|
58
|
+
# [<tt>message</tt>] Optional <tt>String</tt> holding the message to be sent. Defaults to <tt>''</tt>.
|
59
|
+
# [<tt>params</tt>] Optional <tt>Hash</tt> with form parameters. Merged with DEFAULT_PARAMS. Defaults to <tt>{}</tt>.
|
60
|
+
def self.write message='', params={}
|
61
|
+
body = DEFAULT_PARAMS.merge params
|
62
|
+
body['stimulus'] = message
|
63
|
+
body['icognocheck'] = digest HashConversions.to_params(body)
|
64
|
+
|
65
|
+
post(PATH, :body => body).parsed_response
|
66
|
+
end
|
67
|
+
|
68
|
+
# Initializes a Cleverbot::Base with given parameters.
|
69
|
+
#
|
70
|
+
# ==== Parameters
|
71
|
+
#
|
72
|
+
# [<tt>params</tt>] Optional <tt>Hash</tt> holding the initial parameters. Defaults to <tt>{}</tt>.
|
73
|
+
def initialize params={}
|
74
|
+
@params = params
|
75
|
+
end
|
76
|
+
|
77
|
+
# Sends a message and returns a <tt>String</tt> with the message received. Updates #params to maintain state.
|
78
|
+
#
|
79
|
+
# ==== Parameters
|
80
|
+
#
|
81
|
+
# [<tt>message</tt>] Optional <tt>String</tt> holding the message to be sent. Defaults to <tt>''</tt>.
|
82
|
+
def write message=''
|
83
|
+
response = self.class.write message, @params
|
84
|
+
message = response['message']
|
85
|
+
response.keep_if { |key, value| DEFAULT_PARAMS.keys.include? key }
|
86
|
+
@params.merge! response
|
87
|
+
@params.delete_if { |key, value| DEFAULT_PARAMS[key] == value }
|
88
|
+
message
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'httparty'
|
2
|
+
|
3
|
+
module Cleverbot
|
4
|
+
# Used in Cleverbot::Client to parse responses from Cleverbot.com.
|
5
|
+
class Parser < HTTParty::Parser
|
6
|
+
# Keys that correspond to the <tt>Array</tt> that Cleverbot.com returns.
|
7
|
+
# They are combined with the <tt>Array</tt> to form a response <tt>Hash</tt>.
|
8
|
+
KEYS = [
|
9
|
+
'message',
|
10
|
+
'sessionid',
|
11
|
+
'logurl',
|
12
|
+
'vText8',
|
13
|
+
'vText7',
|
14
|
+
'vText6',
|
15
|
+
'vText5',
|
16
|
+
'vText4',
|
17
|
+
'vText3',
|
18
|
+
'vText2',
|
19
|
+
'prevref',
|
20
|
+
nil,
|
21
|
+
'emotionalhistory',
|
22
|
+
'ttsLocMP3',
|
23
|
+
'ttsLocTXT',
|
24
|
+
'ttsLocTXT3',
|
25
|
+
'ttsText',
|
26
|
+
'lineref',
|
27
|
+
'lineURL',
|
28
|
+
'linePOST',
|
29
|
+
'lineChoices',
|
30
|
+
'lineChoicesAbbrev',
|
31
|
+
'typingData',
|
32
|
+
'divert',
|
33
|
+
]
|
34
|
+
|
35
|
+
# Formats supported by the parser.
|
36
|
+
# Parser handles <tt>text/html</tt> responses only with #html.
|
37
|
+
SupportedFormats = { 'text/html' => :html }
|
38
|
+
|
39
|
+
# Splits the body on <tt>"\\r"</tt> and zips the result with KEYS, which is then formed into a <tt>Hash</tt>.
|
40
|
+
def html
|
41
|
+
Hash[KEYS.zip(body.split("\r"))]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,181 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
|
2
|
+
|
3
|
+
describe Cleverbot::Client do
|
4
|
+
subject { Cleverbot::Client }
|
5
|
+
|
6
|
+
it { should <= HTTParty }
|
7
|
+
|
8
|
+
describe '::DEFAULT_PARAMS' do
|
9
|
+
subject { Cleverbot::Client::DEFAULT_PARAMS }
|
10
|
+
|
11
|
+
it do
|
12
|
+
should == {
|
13
|
+
'stimulus' => '',
|
14
|
+
'start' => 'y',
|
15
|
+
'sessionid' => '',
|
16
|
+
'vText8' => '',
|
17
|
+
'vText7' => '',
|
18
|
+
'vText6' => '',
|
19
|
+
'vText5' => '',
|
20
|
+
'vText4' => '',
|
21
|
+
'vText3' => '',
|
22
|
+
'vText2' => '',
|
23
|
+
'icognoid' => 'wsf',
|
24
|
+
'icognocheck' => '',
|
25
|
+
'fno' => '0',
|
26
|
+
'prevref' => '',
|
27
|
+
'emotionaloutput' => '',
|
28
|
+
'emotionalhistory' => '',
|
29
|
+
'asbotname' => '',
|
30
|
+
'ttsvoice' => '',
|
31
|
+
'typing' => '',
|
32
|
+
'lineref' => '',
|
33
|
+
'sub' => 'Say',
|
34
|
+
'islearning' => '1',
|
35
|
+
'cleanslate' => 'false',
|
36
|
+
}
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '::PATH' do
|
41
|
+
subject { Cleverbot::Client::PATH }
|
42
|
+
|
43
|
+
it { should == '/webservicemin' }
|
44
|
+
end
|
45
|
+
|
46
|
+
describe '.base_uri' do
|
47
|
+
subject { Cleverbot::Client.base_uri }
|
48
|
+
|
49
|
+
it { should == 'http://www.cleverbot.com' }
|
50
|
+
end
|
51
|
+
|
52
|
+
describe '.parser' do
|
53
|
+
subject { Cleverbot::Client.parser }
|
54
|
+
|
55
|
+
it { should == Cleverbot::Parser }
|
56
|
+
end
|
57
|
+
|
58
|
+
describe '.digest' do
|
59
|
+
subject { Cleverbot::Client.digest @body }
|
60
|
+
context 'given a body of 0123456789abcdefghijklmnopqrstuvwxyz' do
|
61
|
+
before :each do
|
62
|
+
@body = '0123456789abcdefghijklmnopqrstuvwxyz'
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'should call Digest::MD5.hexdigest with 9abcdefghijklmnopqrs' do
|
66
|
+
Digest::MD5.should_receive(:hexdigest).with @body[9..28]
|
67
|
+
subject
|
68
|
+
end
|
69
|
+
|
70
|
+
context 'when Digest::MD5.hexdigest returns abcd' do
|
71
|
+
before :each do
|
72
|
+
Digest::MD5.stub!(:hexdigest).and_return 'abcd'
|
73
|
+
end
|
74
|
+
|
75
|
+
it { should == 'abcd' }
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe '.write' do
|
81
|
+
subject { Cleverbot::Client.write @message, @params }
|
82
|
+
|
83
|
+
context 'with params {}' do
|
84
|
+
before :each do
|
85
|
+
@params = {}
|
86
|
+
end
|
87
|
+
|
88
|
+
context 'with an empty message' do
|
89
|
+
before :each do
|
90
|
+
@message = ''
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'should post to PATH' do
|
94
|
+
Cleverbot::Client.should_receive(:post).with(Cleverbot::Client::PATH, hash_including).and_return mock(:parsed_response => {})
|
95
|
+
subject
|
96
|
+
end
|
97
|
+
|
98
|
+
Cleverbot::Client::DEFAULT_PARAMS.each do |key, value|
|
99
|
+
next if ['stimulus', 'icognocheck'].include? key
|
100
|
+
it "should add #{key} => #{value.inspect} to the post body" do
|
101
|
+
Cleverbot::Client.should_receive(:post).with(Cleverbot::Client::PATH, :body => hash_including(key => value)).and_return mock(:parsed_response => {})
|
102
|
+
subject
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
it 'should add stimulus => "" to the post body' do
|
107
|
+
Cleverbot::Client.should_receive(:post).with(Cleverbot::Client::PATH, :body => hash_including('stimulus' => '')).and_return mock(:parsed_response => {})
|
108
|
+
subject
|
109
|
+
end
|
110
|
+
|
111
|
+
context 'when digest returns abcd' do
|
112
|
+
before :each do
|
113
|
+
Digest::MD5.stub!(:hexdigest).and_return 'abcd'
|
114
|
+
end
|
115
|
+
|
116
|
+
it 'should add icognocheck => "abcd" to the post body' do
|
117
|
+
Cleverbot::Client.should_receive(:post).with(Cleverbot::Client::PATH, :body => hash_including('icognocheck' => 'abcd')).and_return mock(:parsed_response => {})
|
118
|
+
subject
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
context 'when the parsed response is {}' do
|
123
|
+
before :each do
|
124
|
+
Cleverbot::Client.stub!(:post).and_return mock(:parsed_response => {})
|
125
|
+
end
|
126
|
+
|
127
|
+
it { should == {} }
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
describe '#initialize' do
|
134
|
+
subject { Cleverbot::Client.new @params }
|
135
|
+
|
136
|
+
context 'with params { "a" => "b" }' do
|
137
|
+
before :each do
|
138
|
+
@params = { 'a' => 'b' }
|
139
|
+
end
|
140
|
+
|
141
|
+
it 'sets #params to { "a" => "b" }' do
|
142
|
+
subject.params.should == { 'a' => 'b' }
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
describe '#write' do
|
148
|
+
before :each do
|
149
|
+
@client = Cleverbot::Client.new
|
150
|
+
end
|
151
|
+
|
152
|
+
subject { @client.write @message }
|
153
|
+
|
154
|
+
context 'with an empty message' do
|
155
|
+
before :each do
|
156
|
+
@message = ''
|
157
|
+
end
|
158
|
+
|
159
|
+
it 'should call .write with "" and #params' do
|
160
|
+
Cleverbot::Client.should_receive(:write).with(@message, @client.params).and_return({})
|
161
|
+
subject
|
162
|
+
end
|
163
|
+
|
164
|
+
context 'when .write returns { "message" => "Hi.", "sessionid" => "abcd" }' do
|
165
|
+
before :each do
|
166
|
+
Cleverbot::Client.stub!(:write).and_return 'message' => 'Hi.', 'sessionid' => 'abcd'
|
167
|
+
end
|
168
|
+
|
169
|
+
it 'should set #params[sessionid] to abcd' do
|
170
|
+
subject
|
171
|
+
@client.params['sessionid'].should == 'abcd'
|
172
|
+
end
|
173
|
+
|
174
|
+
it 'should not set #params[message] to Hi.' do
|
175
|
+
subject
|
176
|
+
@client.params['message'].should_not == 'abcd'
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
|
2
|
+
|
3
|
+
describe Cleverbot::Parser do
|
4
|
+
subject { Cleverbot::Parser }
|
5
|
+
|
6
|
+
it { should <= HTTParty::Parser }
|
7
|
+
|
8
|
+
it { should be_supports_format :html }
|
9
|
+
|
10
|
+
describe '::KEYS' do
|
11
|
+
subject { Cleverbot::Parser::KEYS }
|
12
|
+
|
13
|
+
it do
|
14
|
+
should == [
|
15
|
+
'message',
|
16
|
+
'sessionid',
|
17
|
+
'logurl',
|
18
|
+
'vText8',
|
19
|
+
'vText7',
|
20
|
+
'vText6',
|
21
|
+
'vText5',
|
22
|
+
'vText4',
|
23
|
+
'vText3',
|
24
|
+
'vText2',
|
25
|
+
'prevref',
|
26
|
+
nil,
|
27
|
+
'emotionalhistory',
|
28
|
+
'ttsLocMP3',
|
29
|
+
'ttsLocTXT',
|
30
|
+
'ttsLocTXT3',
|
31
|
+
'ttsText',
|
32
|
+
'lineref',
|
33
|
+
'lineURL',
|
34
|
+
'linePOST',
|
35
|
+
'lineChoices',
|
36
|
+
'lineChoicesAbbrev',
|
37
|
+
'typingData',
|
38
|
+
'divert',
|
39
|
+
]
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe '#call' do
|
44
|
+
subject { Cleverbot::Parser.call @body, @format }
|
45
|
+
|
46
|
+
context 'with a format of :html' do
|
47
|
+
before :each do
|
48
|
+
@format = :html
|
49
|
+
end
|
50
|
+
|
51
|
+
context 'with an empty body' do
|
52
|
+
before :each do
|
53
|
+
@body = ''
|
54
|
+
end
|
55
|
+
|
56
|
+
it { should be_nil }
|
57
|
+
end
|
58
|
+
|
59
|
+
context 'with an body of 0\r1\r2' do
|
60
|
+
before :each do
|
61
|
+
@body = (0..2).to_a.join "\r"
|
62
|
+
end
|
63
|
+
|
64
|
+
(0..2).each do |key|
|
65
|
+
it { should include({ Cleverbot::Parser::KEYS[key] => key.to_s }) }
|
66
|
+
end
|
67
|
+
(3..(Cleverbot::Parser::KEYS.length - 1)).each do |key|
|
68
|
+
it { should include({ Cleverbot::Parser::KEYS[key] => nil }) }
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context 'with a body of length greater than KEYS.length' do
|
73
|
+
before :each do
|
74
|
+
@body = (0..Cleverbot::Parser::KEYS.length).to_a.join "\r"
|
75
|
+
end
|
76
|
+
|
77
|
+
(0..(Cleverbot::Parser::KEYS.length - 1)).each do |key|
|
78
|
+
it { should include({ Cleverbot::Parser::KEYS[key] => key.to_s }) }
|
79
|
+
end
|
80
|
+
it { should_not have_key Cleverbot::Parser::KEYS.length }
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cleverbot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,23 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-09-
|
12
|
+
date: 2011-09-16 00:00:00.000000000 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: httparty
|
17
|
+
requirement: &17723180 !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ~>
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.8.0
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: *17723180
|
15
26
|
- !ruby/object:Gem::Dependency
|
16
27
|
name: bundler
|
17
|
-
requirement: &
|
28
|
+
requirement: &17722640 !ruby/object:Gem::Requirement
|
18
29
|
none: false
|
19
30
|
requirements:
|
20
31
|
- - ~>
|
@@ -22,10 +33,10 @@ dependencies:
|
|
22
33
|
version: '1.0'
|
23
34
|
type: :development
|
24
35
|
prerelease: false
|
25
|
-
version_requirements: *
|
36
|
+
version_requirements: *17722640
|
26
37
|
- !ruby/object:Gem::Dependency
|
27
38
|
name: jeweler
|
28
|
-
requirement: &
|
39
|
+
requirement: &17722040 !ruby/object:Gem::Requirement
|
29
40
|
none: false
|
30
41
|
requirements:
|
31
42
|
- - ~>
|
@@ -33,10 +44,10 @@ dependencies:
|
|
33
44
|
version: '1.6'
|
34
45
|
type: :development
|
35
46
|
prerelease: false
|
36
|
-
version_requirements: *
|
47
|
+
version_requirements: *17722040
|
37
48
|
- !ruby/object:Gem::Dependency
|
38
49
|
name: rcov
|
39
|
-
requirement: &
|
50
|
+
requirement: &17719820 !ruby/object:Gem::Requirement
|
40
51
|
none: false
|
41
52
|
requirements:
|
42
53
|
- - ~>
|
@@ -44,10 +55,10 @@ dependencies:
|
|
44
55
|
version: '0.9'
|
45
56
|
type: :development
|
46
57
|
prerelease: false
|
47
|
-
version_requirements: *
|
58
|
+
version_requirements: *17719820
|
48
59
|
- !ruby/object:Gem::Dependency
|
49
60
|
name: rdoc
|
50
|
-
requirement: &
|
61
|
+
requirement: &17719320 !ruby/object:Gem::Requirement
|
51
62
|
none: false
|
52
63
|
requirements:
|
53
64
|
- - ~>
|
@@ -55,10 +66,10 @@ dependencies:
|
|
55
66
|
version: '3.9'
|
56
67
|
type: :development
|
57
68
|
prerelease: false
|
58
|
-
version_requirements: *
|
69
|
+
version_requirements: *17719320
|
59
70
|
- !ruby/object:Gem::Dependency
|
60
71
|
name: rspec
|
61
|
-
requirement: &
|
72
|
+
requirement: &17718800 !ruby/object:Gem::Requirement
|
62
73
|
none: false
|
63
74
|
requirements:
|
64
75
|
- - ~>
|
@@ -66,7 +77,7 @@ dependencies:
|
|
66
77
|
version: '2.3'
|
67
78
|
type: :development
|
68
79
|
prerelease: false
|
69
|
-
version_requirements: *
|
80
|
+
version_requirements: *17718800
|
70
81
|
description: Ruby wrapper for Cleverbot.
|
71
82
|
email: benmanns@gmail.com
|
72
83
|
executables: []
|
@@ -86,6 +97,10 @@ files:
|
|
86
97
|
- VERSION
|
87
98
|
- cleverbot.gemspec
|
88
99
|
- lib/cleverbot.rb
|
100
|
+
- lib/cleverbot/client.rb
|
101
|
+
- lib/cleverbot/parser.rb
|
102
|
+
- spec/cleverbot/client_spec.rb
|
103
|
+
- spec/cleverbot/parser_spec.rb
|
89
104
|
- spec/cleverbot_spec.rb
|
90
105
|
- spec/spec_helper.rb
|
91
106
|
has_rdoc: true
|
@@ -104,7 +119,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
104
119
|
version: '0'
|
105
120
|
segments:
|
106
121
|
- 0
|
107
|
-
hash:
|
122
|
+
hash: 1100025997213852890
|
108
123
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
124
|
none: false
|
110
125
|
requirements:
|