wit_bot 0.3.3 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0bbbc51b2c56bfa6a606d1d370e56446fca0dd26
4
- data.tar.gz: 22acb9bfc4d056deb8e809e3332ccf8f96ad9b2f
3
+ metadata.gz: 2822b54c41afb8236a1ae7c1e14480a18d589652
4
+ data.tar.gz: 1faa556ee9be09bfaec737127f8d91e5a648e811
5
5
  SHA512:
6
- metadata.gz: 93d0c8c4c3d1700572345033f7acc343f2b66f40a2bf86712ace196799a4514ee30f41f26dac2f39ef1d1c25d5ed4579a9494764bdbaba6f7e8f8257bcfad949
7
- data.tar.gz: 945dbe402861679adcff5eb1afaa8fb59ad59b5d2c875f7d05a7175a3d6cbc16050d54d7a60c38e27357db258e35d8cbc96a33e9dd339a53cf5a661b66b4c08f
6
+ metadata.gz: cd98b6c765b838f0d0fb21db89bd96ba2ce61a1d2adca4272f2dd75947020b392915090dd79b14622298560325668ee23c1ffcccd73208b5e2aa8418a768ace9
7
+ data.tar.gz: 7c2f7f111dd129e6a7bbce791621fccad40678b0cca120a3e4252581eb54c852a66bd0789c93d5c1df81798d0f0fe9fed701c84e747ee1d3788413b2a9e86d4d
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.2.4
@@ -1,9 +1,11 @@
1
- class Configuration
2
- attr_accessor :token, :host, :minimum_confidence, :version
3
- def initialize
4
- @token = nil
5
- @host = 'https://api.wit.ai'
6
- @minimum_confidence = 0
7
- @version = "20160313"
1
+ module WitBot
2
+ class Configuration
3
+ attr_accessor :token, :host, :minimum_confidence, :version
4
+ def initialize
5
+ @token = nil
6
+ @host = 'https://api.wit.ai'
7
+ @minimum_confidence = 0
8
+ @version = '20160313'
9
+ end
8
10
  end
9
11
  end
@@ -31,8 +31,16 @@ module WitBot
31
31
  @location = h[:location]
32
32
  self
33
33
  end
34
+
34
35
  def self.from_hash(json)
35
36
  self.new.from_hash json
36
37
  end
38
+
39
+ def ==(other)
40
+ self.state == other.state &&
41
+ self.reference_time == other.reference_time &&
42
+ self.entities == other.entities &&
43
+ self.location == other.location
44
+ end
37
45
  end
38
46
  end
@@ -1,5 +1,8 @@
1
1
  module WitBot
2
2
  class ContextEntities
3
+ attr_reader :id
4
+ attr_accessor :values
5
+
3
6
  def initialize
4
7
  @hash = {}
5
8
  end
@@ -23,5 +26,9 @@ module WitBot
23
26
  def self.from_hash(json)
24
27
  self.new.from_hash json
25
28
  end
29
+
30
+ def ==(other)
31
+ self.id == other.id && self.values == other.values
32
+ end
26
33
  end
27
34
  end
@@ -36,6 +36,7 @@ module WitBot
36
36
  self
37
37
  end
38
38
  def self.from_hash(thread, id, json)
39
+ json = json.with_indifferent_access
39
40
  return Bot::Message.from_hash thread, id, json if json[:bot]
40
41
  self.new(thread, json[:text], id: id).from_hash json
41
42
  end
@@ -68,7 +69,7 @@ module WitBot
68
69
  end
69
70
 
70
71
  def parse_outcomes(outcomes=@_outcomes)
71
- outcomes.each_with_index.map { |outcome, i| Outcome.new self, outcome, i }
72
+ outcomes.each_with_index.map { |outcome, i| Outcome.new self, outcome, i } if outcomes
72
73
  end
73
74
 
74
75
  def parse_outcomes!(outcomes=@_outcomes)
@@ -78,5 +79,16 @@ module WitBot
78
79
  def outcome
79
80
  outcomes.first
80
81
  end
82
+
83
+ def ==(other)
84
+ self.text == other.text &&
85
+ self._text == other._text &&
86
+ self.id == other.id &&
87
+ self.bot? == other.bot? &&
88
+ self.sent == other.sent &&
89
+ self._outcomes == other._outcomes &&
90
+ self.thread.equals_without_messages(other.thread) &&
91
+ self.outcomes == other.outcomes
92
+ end
81
93
  end
82
94
  end
@@ -18,7 +18,7 @@ module WitBot
18
18
  def messages_list(user: true, bot: false)
19
19
  bot_messages = bot ? @bot_messages.values : []
20
20
  user_messages = user ? @messages.values : []
21
- bot_messages + user_messages
21
+ user_messages + bot_messages
22
22
  end
23
23
 
24
24
  def create_message(text, id=SecureRandom.uuid)
@@ -54,13 +54,28 @@ module WitBot
54
54
  @messages = WitBot::Message.many_from_hash(self, m[:user])
55
55
  @bot_messages = WitBot::Message.many_from_hash(self, m[:bot])
56
56
 
57
- @context = Context.from_hash json[:context]
57
+ @context = Context.from_hash json[:context] if json[:context]
58
58
  @metadata = json[:metadata]
59
59
  self
60
60
  end
61
61
 
62
62
  def self.from_hash(json)
63
+ json = json.with_indifferent_access
63
64
  self.new(json[:id]).from_hash json
64
65
  end
66
+
67
+ def ==(other)
68
+ self.id == other.id &&
69
+ self.context == other.context &&
70
+ self.bot_messages == other.bot_messages &&
71
+ self.messages == other.messages &&
72
+ self.metadata == other.metadata
73
+ end
74
+
75
+ def equals_without_messages(other)
76
+ self.id == other.id &&
77
+ self.context == other.context &&
78
+ self.metadata == other.metadata
79
+ end
65
80
  end
66
81
  end
@@ -10,16 +10,7 @@ module WitBot
10
10
  @_text = @raw[:_text]
11
11
 
12
12
  @intent = WitModel::Intent.find raw[:intent]
13
- @entities = @raw[:entities].each.inject({}) do |entities, entity_info|
14
- role, all = entity_info
15
- all = all.map { |data| WitModel::Entity.find(data[:entity], create: false).model role, data }
16
-
17
- data = all.shift
18
- data.others = all
19
-
20
- entities[role] = data
21
- entities
22
- end.with_indifferent_access
13
+ @entities = EntityModelProxy.new raw[:entities]
23
14
 
24
15
  raise LowConfidenceError self if i == 0 && low_confidence?
25
16
  end
@@ -27,5 +18,14 @@ module WitBot
27
18
  def low_confidence?
28
19
  @confidence < WitBot.config.minimum_confidence
29
20
  end
21
+
22
+ def ==(other)
23
+ self.message == other.message &&
24
+ self.raw == other.raw &&
25
+ self._text == other._text &&
26
+ self.confidence == other.confidence &&
27
+ self.intent == other.intent &&
28
+ self.entities == other.entities
29
+ end
30
30
  end
31
31
  end
@@ -26,6 +26,10 @@ module WitBot
26
26
  @@entities[name] || create && Entity.new(id: name, request: true)
27
27
  end
28
28
 
29
+ def ==(other)
30
+ self.name == other.name
31
+ end
32
+
29
33
  protected
30
34
 
31
35
  def process_values(values)
@@ -1,6 +1,30 @@
1
1
  module WitBot
2
+ class EntityModelProxy < HashWithIndifferentAccess
3
+ attr_reader :raw
4
+
5
+ def initialize(raw_entities)
6
+ @raw = raw_entities
7
+
8
+ super Hash[*raw_entities.map do |(role, all)|
9
+ all = all.map { |data| WitModel::Entity.find(data[:entity], create: false).model role, data }
10
+
11
+ data = all.first
12
+
13
+ data.all = all
14
+
15
+ create_getter role
16
+
17
+ [role, data]
18
+ end.flatten]
19
+ end
20
+
21
+ private
22
+ def create_getter(var)
23
+ self.class.send(:define_method, var, -> { self[var] })
24
+ end
25
+ end
2
26
  class EntityModel
3
- attr_accessor :others
27
+ attr_accessor :all
4
28
  attr_reader :entity, :role, :raw, :value
5
29
 
6
30
  def initialize(entity, role, raw)
@@ -18,6 +42,14 @@ module WitBot
18
42
  @others = []
19
43
  end
20
44
 
45
+ def others
46
+ all - [self]
47
+ end
48
+
49
+ def ==(other)
50
+ self.entity == other.entity && self.value == other.value
51
+ end
52
+
21
53
  def to_s
22
54
  value.to_s
23
55
  end
@@ -26,6 +26,10 @@ module WitBot
26
26
  @@intents[name] || self.new(name, request: true)
27
27
  end
28
28
 
29
+ def ==(other)
30
+ self.name == other.name
31
+ end
32
+
29
33
  protected
30
34
 
31
35
  def process_expressions(expressions)
@@ -1,3 +1,3 @@
1
1
  module WitBot
2
- VERSION = '0.3.3'
2
+ VERSION = '0.4.0'
3
3
  end
data/wit_bot.gemspec CHANGED
@@ -20,9 +20,11 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.11"
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "rspec", "~> 3.4"
24
+ spec.add_development_dependency "simplecov", ">= 0"
23
25
 
24
- spec.add_dependency "http", "~> 1.0.2"
26
+ spec.add_dependency "http", ">= 1.0.2"
25
27
  spec.add_dependency "activesupport", ">= 4"
26
- spec.add_dependency "require_all", "~> 1.3.3"
27
- spec.add_dependency "awesome_print", "~> 1.6.1"
28
+ spec.add_dependency "require_all", ">= 1.3.3"
29
+ spec.add_dependency "awesome_print", ">= 1.6.1"
28
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wit_bot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben (@penne12_)
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-31 00:00:00.000000000 Z
11
+ date: 2016-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -39,17 +39,45 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: http
42
+ name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.4'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.4'
55
+ - !ruby/object:Gem::Dependency
56
+ name: simplecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: http
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
46
74
  - !ruby/object:Gem::Version
47
75
  version: 1.0.2
48
76
  type: :runtime
49
77
  prerelease: false
50
78
  version_requirements: !ruby/object:Gem::Requirement
51
79
  requirements:
52
- - - "~>"
80
+ - - ">="
53
81
  - !ruby/object:Gem::Version
54
82
  version: 1.0.2
55
83
  - !ruby/object:Gem::Dependency
@@ -70,28 +98,28 @@ dependencies:
70
98
  name: require_all
71
99
  requirement: !ruby/object:Gem::Requirement
72
100
  requirements:
73
- - - "~>"
101
+ - - ">="
74
102
  - !ruby/object:Gem::Version
75
103
  version: 1.3.3
76
104
  type: :runtime
77
105
  prerelease: false
78
106
  version_requirements: !ruby/object:Gem::Requirement
79
107
  requirements:
80
- - - "~>"
108
+ - - ">="
81
109
  - !ruby/object:Gem::Version
82
110
  version: 1.3.3
83
111
  - !ruby/object:Gem::Dependency
84
112
  name: awesome_print
85
113
  requirement: !ruby/object:Gem::Requirement
86
114
  requirements:
87
- - - "~>"
115
+ - - ">="
88
116
  - !ruby/object:Gem::Version
89
117
  version: 1.6.1
90
118
  type: :runtime
91
119
  prerelease: false
92
120
  version_requirements: !ruby/object:Gem::Requirement
93
121
  requirements:
94
- - - "~>"
122
+ - - ">="
95
123
  - !ruby/object:Gem::Version
96
124
  version: 1.6.1
97
125
  description: A better wit.ai client for Ruby. Written in Ruby. With an api for creating
@@ -104,6 +132,7 @@ extensions: []
104
132
  extra_rdoc_files: []
105
133
  files:
106
134
  - ".gitignore"
135
+ - ".ruby-version"
107
136
  - CODE_OF_CONDUCT.md
108
137
  - Gemfile
109
138
  - LICENSE.txt
@@ -171,10 +200,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
171
200
  version: '0'
172
201
  requirements: []
173
202
  rubyforge_project:
174
- rubygems_version: 2.4.5
203
+ rubygems_version: 2.4.5.1
175
204
  signing_key:
176
205
  specification_version: 4
177
206
  summary: A better wit.ai client for Ruby. Written in Ruby. With an api for creating
178
207
  bots.
179
208
  test_files: []
180
- has_rdoc: