wit_bot 0.3.3 → 0.4.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.
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: