charyf 0.1.1 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +2 -105
  3. data/README.md +7 -1
  4. data/lib/charyf/engine/all.rb +3 -0
  5. data/lib/charyf/engine/context.rb +1 -53
  6. data/lib/charyf/engine/controller/controller.rb +6 -3
  7. data/lib/charyf/engine/controller/helpers.rb +7 -3
  8. data/lib/charyf/engine/controller/renderers.rb +2 -2
  9. data/lib/charyf/engine/dispatcher/base.rb +47 -40
  10. data/lib/charyf/engine/dispatcher/default.rb +8 -18
  11. data/lib/charyf/engine/intent/intent.rb +7 -42
  12. data/lib/charyf/engine/intent/processors/dummy.rb +0 -8
  13. data/lib/charyf/engine/intent/processors/helpers.rb +1 -11
  14. data/lib/charyf/engine/intent/processors/processor.rb +6 -32
  15. data/lib/charyf/engine/interface/interface.rb +25 -18
  16. data/lib/charyf/engine/interface/program.rb +15 -1
  17. data/lib/charyf/engine/request.rb +6 -18
  18. data/lib/charyf/engine/response.rb +7 -26
  19. data/lib/charyf/engine/routing/default.rb +58 -0
  20. data/lib/charyf/engine/routing/result.rb +25 -0
  21. data/lib/charyf/engine/routing/router.rb +33 -0
  22. data/lib/charyf/engine/session/processors/processor.rb +4 -15
  23. data/lib/charyf/engine/skill/skill.rb +0 -2
  24. data/lib/charyf/utils/all.rb +3 -2
  25. data/lib/charyf/utils/app_engine.rb +28 -0
  26. data/lib/charyf/utils/application/bootstrap.rb +21 -62
  27. data/lib/charyf/utils/application/configuration.rb +5 -5
  28. data/lib/charyf/utils/application.rb +15 -2
  29. data/lib/charyf/utils/command/actions.rb +10 -2
  30. data/lib/charyf/utils/commands/all.rb +1 -0
  31. data/lib/charyf/utils/commands/cli/cli_command.rb +12 -1
  32. data/lib/charyf/utils/commands/help/USAGE +2 -0
  33. data/lib/charyf/utils/commands/server/server_command.rb +31 -0
  34. data/lib/charyf/utils/generators/app/app_generator.rb +1 -0
  35. data/lib/charyf/utils/generators/app/templates/app/skill_controller.rb.tt +6 -1
  36. data/lib/charyf/utils/generators/app/templates/config/routes.rb.tt +6 -0
  37. data/lib/charyf/utils/generators/defaults.rb +11 -2
  38. data/lib/charyf/utils/generators/intents/intents_generator.rb +1 -1
  39. data/lib/charyf/utils/parser/parser.rb +6 -13
  40. data/lib/charyf/utils/pipeline.rb +28 -0
  41. data/lib/charyf/utils/storage/provider.rb +5 -13
  42. data/lib/charyf/utils/strategy/base_class.rb +50 -0
  43. data/lib/charyf/utils/strategy/owner_class.rb +23 -0
  44. data/lib/charyf/version.rb +2 -2
  45. data/todo.md +8 -3
  46. metadata +10 -4
  47. data/lib/charyf/engine/skill/routing.rb +0 -57
  48. data/lib/charyf/utils/strategy.rb +0 -44
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3f6cd1074674be31d7a9551c96c778d039a6f73e
4
- data.tar.gz: 980dbf8c8a5da5bab08be6f2f8e338c50f87dfc5
3
+ metadata.gz: efad5ad87a312bfef51179279205bfe5b60585d5
4
+ data.tar.gz: ac9413d5cbf58b5bd492cd9e62b22d7045ca21d6
5
5
  SHA512:
6
- metadata.gz: b8bc6dfa44d70033e22587490d88f3374b1377bf43f2fc4843d0549abb63bed4a7698044935e480fb0390de32d38e972c8724a522f19a7bae7a3e12571f48dcc
7
- data.tar.gz: 397067fb3ade945d097759617ac7f81548f87ab003ae66e2286e5b882f08006e9e80786706b91b25097368193f6bd5e08bd8a6bd3ad872e011b4b37a1a08998f
6
+ metadata.gz: d05a975f29957417fad8da4b6d805bd93ce0f90fdeecc5af6ce462142461546f7b2dec294c35b5e84cd25c906bae7e6eb7d9ea2797d82f8eb1ea27f0b07e73db
7
+ data.tar.gz: 3bb190b57931d0b6bcd75a3f6c579e10d233450d41e10d6aeccc37b597a00aebec9b76d52a2d69e2232f2645c22e39022fd7458648f89d98406678007636754d
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- charyf (0.1.1)
4
+ charyf (0.2.5)
5
5
  charyf_sig (~> 1.1.2)
6
6
  colorize (~> 0.8)
7
7
  i18n (~> 0.9)
@@ -10,97 +10,17 @@ PATH
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- actioncable (5.1.4)
14
- actionpack (= 5.1.4)
15
- nio4r (~> 2.0)
16
- websocket-driver (~> 0.6.1)
17
- actionmailer (5.1.4)
18
- actionpack (= 5.1.4)
19
- actionview (= 5.1.4)
20
- activejob (= 5.1.4)
21
- mail (~> 2.5, >= 2.5.4)
22
- rails-dom-testing (~> 2.0)
23
- actionpack (5.1.4)
24
- actionview (= 5.1.4)
25
- activesupport (= 5.1.4)
26
- rack (~> 2.0)
27
- rack-test (>= 0.6.3)
28
- rails-dom-testing (~> 2.0)
29
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
30
- actionview (5.1.4)
31
- activesupport (= 5.1.4)
32
- builder (~> 3.1)
33
- erubi (~> 1.4)
34
- rails-dom-testing (~> 2.0)
35
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
36
- activejob (5.1.4)
37
- activesupport (= 5.1.4)
38
- globalid (>= 0.3.6)
39
- activemodel (5.1.4)
40
- activesupport (= 5.1.4)
41
- activerecord (5.1.4)
42
- activemodel (= 5.1.4)
43
- activesupport (= 5.1.4)
44
- arel (~> 8.0)
45
- activesupport (5.1.4)
46
- concurrent-ruby (~> 1.0, >= 1.0.2)
47
- i18n (~> 0.7)
48
- minitest (~> 5.1)
49
- tzinfo (~> 1.1)
50
- arel (8.0.0)
51
- builder (3.2.3)
52
13
  charyf_sig (1.1.2)
53
14
  coderay (1.1.2)
54
15
  colorize (0.8.1)
55
16
  concurrent-ruby (1.0.5)
56
- crass (1.0.3)
57
17
  diff-lcs (1.3)
58
- erubi (1.7.0)
59
- globalid (0.4.1)
60
- activesupport (>= 4.2.0)
61
- i18n (0.9.1)
18
+ i18n (0.9.5)
62
19
  concurrent-ruby (~> 1.0)
63
- loofah (2.1.1)
64
- crass (~> 1.0.2)
65
- nokogiri (>= 1.5.9)
66
- mail (2.7.0)
67
- mini_mime (>= 0.1.1)
68
20
  method_source (0.9.0)
69
- mini_mime (1.0.0)
70
- mini_portile2 (2.3.0)
71
- minitest (5.10.3)
72
- nio4r (2.2.0)
73
- nokogiri (1.8.1)
74
- mini_portile2 (~> 2.3.0)
75
21
  pry (0.11.3)
76
22
  coderay (~> 1.1.0)
77
23
  method_source (~> 0.9.0)
78
- rack (2.0.3)
79
- rack-test (0.8.2)
80
- rack (>= 1.0, < 3)
81
- rails (5.1.4)
82
- actioncable (= 5.1.4)
83
- actionmailer (= 5.1.4)
84
- actionpack (= 5.1.4)
85
- actionview (= 5.1.4)
86
- activejob (= 5.1.4)
87
- activemodel (= 5.1.4)
88
- activerecord (= 5.1.4)
89
- activesupport (= 5.1.4)
90
- bundler (>= 1.3.0)
91
- railties (= 5.1.4)
92
- sprockets-rails (>= 2.0.0)
93
- rails-dom-testing (2.0.3)
94
- activesupport (>= 4.2.0)
95
- nokogiri (>= 1.6)
96
- rails-html-sanitizer (1.0.3)
97
- loofah (~> 2.0)
98
- railties (5.1.4)
99
- actionpack (= 5.1.4)
100
- activesupport (= 5.1.4)
101
- method_source
102
- rake (>= 0.8.7)
103
- thor (>= 0.18.1, < 2.0)
104
24
  rake (10.5.0)
105
25
  rspec (3.7.0)
106
26
  rspec-core (~> 3.7.0)
@@ -114,29 +34,8 @@ GEM
114
34
  rspec-mocks (3.7.0)
115
35
  diff-lcs (>= 1.2.0, < 2.0)
116
36
  rspec-support (~> 3.7.0)
117
- rspec-rails (3.7.2)
118
- actionpack (>= 3.0)
119
- activesupport (>= 3.0)
120
- railties (>= 3.0)
121
- rspec-core (~> 3.7.0)
122
- rspec-expectations (~> 3.7.0)
123
- rspec-mocks (~> 3.7.0)
124
- rspec-support (~> 3.7.0)
125
37
  rspec-support (3.7.0)
126
- sprockets (3.7.1)
127
- concurrent-ruby (~> 1.0)
128
- rack (> 1, < 3)
129
- sprockets-rails (3.2.1)
130
- actionpack (>= 4.0)
131
- activesupport (>= 4.0)
132
- sprockets (>= 3.0.0)
133
38
  thor (0.20.0)
134
- thread_safe (0.3.6)
135
- tzinfo (1.2.4)
136
- thread_safe (~> 0.1)
137
- websocket-driver (0.6.5)
138
- websocket-extensions (>= 0.1.0)
139
- websocket-extensions (0.1.3)
140
39
 
141
40
  PLATFORMS
142
41
  ruby
@@ -145,10 +44,8 @@ DEPENDENCIES
145
44
  bundler (~> 1.15.4)
146
45
  charyf!
147
46
  pry (~> 0.10)
148
- rails
149
47
  rake (~> 10.0)
150
48
  rspec (~> 3.0)
151
- rspec-rails
152
49
 
153
50
  BUNDLED WITH
154
51
  1.15.4
data/README.md CHANGED
@@ -1,3 +1,9 @@
1
+ [![Gem Version](https://badge.fury.io/rb/charyf.svg)](https://badge.fury.io/rb/charyf)
2
+
3
+ [![Code Climate](https://codeclimate.com/github/Charyf/charyf-core/badges/gpa.svg)](https://codeclimate.com/github/Charyf/charyf-core)
4
+ [![Test Coverage](https://codeclimate.com/github/Charyf/charyf-core/badges/coverage.svg)](https://codeclimate.com/github/Charyf/charyf-core/coverage)
5
+ [![Issue Count](https://codeclimate.com/github/Charyf/charyf-core/badges/issue_count.svg)](https://codeclimate.com/github/Charyf/charyf-core)
6
+
1
7
  # Charyf
2
8
 
3
9
  Charyf (as **Cha**tbot **r**ub**y** **f**ramework) is a modular chatbot framework library.
@@ -15,4 +21,4 @@ For more information about using charyf, continue to [Getting Started](https://g
15
21
  To read more about roadmap continue to [Roadmap](https://github.com/Charyf/charyf-core/wiki/Roadmap)
16
22
  To report an issue follow steps in [Reporting an issue](https://github.com/Charyf/charyf-core/wiki/Reporting-an-issue)
17
23
 
18
- Continue to [wiki](https://github.com/Charyf/charyf-core/wiki)
24
+ Continue to [wiki](https://github.com/Charyf/charyf-core/wiki)
@@ -14,6 +14,9 @@ require_relative 'session/session'
14
14
  require_relative 'session/processors/processor'
15
15
  require_relative 'session/processors/default'
16
16
 
17
+ require_relative 'routing/router'
18
+ require_relative 'routing/default'
19
+
17
20
  require_relative 'skill/skill'
18
21
 
19
22
  require_relative 'charyf'
@@ -2,59 +2,7 @@ module Charyf
2
2
  module Engine
3
3
  class Context
4
4
 
5
- sig ['Charyf::Engine::Request'],'Charyf::Engine::Request',
6
- def request=(request)
7
- @_request = request
8
- end
9
-
10
- sig [], 'Charyf::Engine::Request',
11
- def request
12
- @_request
13
- end
14
-
15
- sig [['Charyf::Engine::Intent', 'NilClass']],['Charyf::Engine::Intent', 'NilClass'],
16
- def intent=(intent)
17
- @_intent = intent
18
- end
19
-
20
- sig [], ['Charyf::Engine::Intent', 'NilClass'],
21
- def intent
22
- @_intent
23
- end
24
-
25
- sig [['Charyf::Engine::Session', 'NilClass']],['Charyf::Engine::Session', 'NilClass'],
26
- def session=(session)
27
- @_session = session
28
- end
29
-
30
- sig [], ['Charyf::Engine::Session', 'NilClass'],
31
- def session
32
- @_session
33
- end
34
-
35
- def controller_name
36
- session && session.action ?
37
- session.controller :
38
- intent.controller
39
- end
40
-
41
- def full_controller_name
42
- session && session.action ?
43
- session.full_controller_name :
44
- intent.full_controller_name
45
- end
46
-
47
- def action_name
48
- session && session.action ?
49
- session.action :
50
- intent.action
51
- end
52
-
53
- def skill_name
54
- session && session.skill ?
55
- session.skill :
56
- intent.skill
57
- end
5
+ attr_accessor :request, :intent, :alternative_intents, :session, :routing
58
6
 
59
7
  end
60
8
  end
@@ -1,3 +1,5 @@
1
+ require 'securerandom'
2
+
1
3
  require_relative '../../utils'
2
4
 
3
5
  require_relative '../response'
@@ -34,7 +36,7 @@ module Charyf
34
36
  )
35
37
 
36
38
  if text.blank? && html.blank?
37
- render ||= intent.action
39
+ render ||= action_name
38
40
  ensure_responses_for(render)
39
41
  end
40
42
 
@@ -43,8 +45,9 @@ module Charyf
43
45
  html ||= render_html_response(render)
44
46
  end
45
47
 
46
- response = Charyf::Engine::Response.new(text, html)
47
-
48
+ response = Charyf::Engine::Response.new(conversation_id, SecureRandom.hex)
49
+ response.text = text
50
+ response.html = html
48
51
 
49
52
  Charyf.logger.flow_response("[FLOW] Replying on request [#{request.inspect}]" +
50
53
  " with [#{response.inspect}]"
@@ -10,15 +10,19 @@ module Charyf
10
10
  end # End of ClassMethods
11
11
 
12
12
  def controller_name
13
- context.controller_name
13
+ context.routing.controller
14
14
  end
15
15
 
16
16
  def action_name
17
- context.action_name
17
+ context.routing.action
18
18
  end
19
19
 
20
20
  def skill_name
21
- context.skill_name
21
+ skill.skill_name
22
+ end
23
+
24
+ def skill
25
+ context.routing.skill_class_name.nil? ? nil : context.routing.skill_class_name.constantize
22
26
  end
23
27
 
24
28
  def request
@@ -32,9 +32,9 @@ module Charyf
32
32
 
33
33
  # TODO sig
34
34
  def response_folder
35
- return nil if skill_name.to_s.blank?
35
+ return nil if skill.nil?
36
36
 
37
- return skill_name.to_s.constantize.skill_root.join('responses', controller_path)
37
+ return skill.skill_root.join('responses', controller_path)
38
38
  end
39
39
 
40
40
  def ensure_responses_for(action)
@@ -6,24 +6,39 @@ require_relative '../request'
6
6
  module Charyf
7
7
  module Engine
8
8
  module Dispatcher
9
+
10
+ extend Charyf::Strategy::OwnerClass
11
+
9
12
  class Base
10
13
 
11
- include Charyf::Strategy
12
- def self.base
13
- Base
14
- end
14
+ include Charyf::Strategy::BaseClass
15
15
 
16
- sig ['Charyf::Engine::Request'], nil,
17
16
  def dispatch(request)
18
- end
17
+ status, response = dispatch_internal(request)
19
18
 
20
- def self.setup
21
- # Do your setup here
19
+ {
20
+ status: status,
21
+ response: response,
22
+ request: request
23
+ }
22
24
  end
23
25
 
26
+ def dispatch_async(request)
27
+ Charyf::Pipeline.enqueue request
28
+
29
+ {
30
+ status: :ASYNC,
31
+ request: request,
32
+ response: nil
33
+ }
34
+ end
24
35
 
25
36
  protected
26
37
 
38
+ def dispatch_internal(request)
39
+ raise Charyf::Utils::NotImplemented.new
40
+ end
41
+
27
42
  def self.intent_processors
28
43
  Charyf.application.intent_processors
29
44
  end
@@ -32,6 +47,10 @@ module Charyf
32
47
  Charyf.application.session_processor
33
48
  end
34
49
 
50
+ def self.routes
51
+ Charyf.application.routes
52
+ end
53
+
35
54
  def intent_processors
36
55
  self.class.intent_processors
37
56
  end
@@ -40,51 +59,48 @@ module Charyf
40
59
  self.class.session_processor
41
60
  end
42
61
 
62
+ def routes
63
+ self.class.routes
64
+ end
65
+
43
66
  sig ['Charyf::Engine::Context'], nil,
44
67
  def spawn_controller(context)
45
- begin
46
- prepare_context context
47
68
 
48
- Charyf.logger.flow_request("[FLOW] Dispatching request [#{context.request.inspect}]" +
49
- ", detected intent: [#{context.intent.inspect}]" +
50
- ", session : [#{context.session.inspect}]"
51
- )
69
+ Charyf.logger.flow_request("[FLOW] Dispatching request [#{context.request.inspect}]" +
70
+ ", detected intent: [#{context.intent.inspect}]" +
71
+ ", session : [#{context.session.inspect}]"
72
+ )
52
73
 
53
- controller = get_controller(context)
74
+ controller = get_controller(context)
54
75
 
76
+ begin
55
77
  handle_before_actions(controller)
56
- controller.send(context.action_name)
78
+ result = controller.send(get_action_name(context))
57
79
  handle_after_actions(controller)
80
+
81
+ return :OK, result
58
82
  rescue Exception => e
59
83
  # Dispatch the error to all error handlers
60
84
  Charyf.configuration.error_handlers.handle_exception(e)
61
-
62
85
  # Catch any error that may occur inside the user controller
63
- controller.send(:reply, text: 'There was a problem processing your request. Check the logs please.')
86
+ # controller.send(:reply, text: 'There was a problem processing your request. Check the logs please.')
87
+
88
+ return :NOK, e
64
89
  end
65
90
 
66
91
  end
67
92
 
68
93
  private
69
94
 
70
- def prepare_context(context)
71
- context.intent ||= Charyf::Engine::Intent::UNKNOWN
72
-
73
- context
74
- end
75
-
76
95
  def get_controller(context)
77
- controller_name = context.full_controller_name + 'Controller'
96
+ controller_name = context.routing.controller_class_name
78
97
 
79
- Object.const_get(controller_name).new(context)
98
+ # Object.const_get(controller_name).new(context)
99
+ controller_name.constantize.new(context)
80
100
  end
81
101
 
82
102
  def get_action_name(context)
83
- if context.session && context.session.action
84
- return context.session.action
85
- end
86
-
87
- context.intent.action
103
+ context.routing.action
88
104
  end
89
105
 
90
106
  def handle_before_actions(controller)
@@ -107,15 +123,6 @@ module Charyf
107
123
  end
108
124
 
109
125
  end # End of Base.class
110
-
111
- def self.known
112
- Base.known
113
- end
114
-
115
- def self.list
116
- Base.list
117
- end
118
-
119
126
  end
120
127
  end
121
128
  end
@@ -7,11 +7,7 @@ module Charyf
7
7
 
8
8
  strategy_name :default
9
9
 
10
- def self.setup
11
-
12
- end
13
-
14
- def dispatch(request)
10
+ def dispatch_internal(request)
15
11
  # Find if session exist for this request
16
12
 
17
13
  context = Charyf::Engine::Context.new
@@ -22,13 +18,11 @@ module Charyf
22
18
 
23
19
  # Get intents
24
20
  intents = intent_processors.collect do |processor_klass|
25
- processor = processor_klass.get_for(context.session ? context.session.skill : nil)
21
+ processor = processor_klass.instance
26
22
 
27
23
  processor.determine(
28
24
  request
29
25
  )
30
- end.collect do |intent|
31
- [intent, intent.alternatives].flatten
32
26
  end.flatten.sort_by do |intent|
33
27
  intent.confidence
34
28
  end.reverse
@@ -38,19 +32,15 @@ module Charyf
38
32
 
39
33
  # Return best match with alternatives
40
34
  if best_match
41
- context.intent = Charyf::Engine::Intent.new(
42
- best_match.skill,
43
- best_match.controller,
44
- best_match.action,
45
- best_match.confidence,
46
- best_match.matches,
47
- intents
48
- )
49
-
50
35
  context.intent = best_match
36
+ context.alternative_intents = intents
51
37
  end
52
38
 
53
- # TODO
39
+ context.routing = routes.process(context)
40
+
41
+ # Freeze -> #TODO deep freeze
42
+ context.freeze
43
+
54
44
  spawn_controller(context)
55
45
  end
56
46
 
@@ -2,53 +2,18 @@ module Charyf
2
2
  module Engine
3
3
  class Intent
4
4
 
5
- sig [['Symbol', 'String', 'NilClass'], ['Symbol', 'String'], ['Symbol', 'String'], 'Numeric', 'Hash', 'Array'], nil,
6
- def initialize(skill, controller, action, confidence, matches = Hash.new, alternatives = [])
7
- @_skill = skill.to_s
8
- @_controller = controller.to_s
9
- @_action = action.to_s.downcase
10
- @_confidence = confidence
11
- @_matches = matches
12
- @_alternatives = alternatives
13
- end
14
-
15
- sig [], 'Hash',
16
- def matches
17
- @_matches
18
- end
19
-
20
- sig [], 'Numeric',
21
- def confidence
22
- @_confidence
23
- end
24
-
25
- sig [], ['Symbol', 'String'],
26
- def full_controller_name
27
- @_skill.blank? ? @_controller.camelize : @_skill.camelize + '::' + @_controller.camelize
28
- end
29
-
30
- sig [], ['Symbol', 'String'],
31
- def controller
32
- @_controller
33
- end
5
+ attr_reader :name, :confidence, :entities
34
6
 
35
- sig [], ['Symbol', 'String'],
36
- def action
37
- @_action
7
+ def initialize(name, confidence, entities = Hash.new)
8
+ @name = name
9
+ @confidence = confidence
10
+ @entities = entities || {}
38
11
  end
39
12
 
40
- sig [], 'Array',
41
- def alternatives
42
- @_alternatives
13
+ def self.unknown
14
+ Intent.new('charyf/unknown', 0)
43
15
  end
44
16
 
45
- sig [], ['String', 'Symbol'],
46
- def skill
47
- @_skill
48
- end
49
-
50
- UNKNOWN = Intent.new(nil, :Skill, :unknown, 0)
51
-
52
17
  end
53
18
  end
54
19
  end
@@ -11,18 +11,10 @@ module Charyf
11
11
 
12
12
  strategy_name :dummy
13
13
 
14
- def self.get_for(skill_name = nil)
15
- self.new
16
- end
17
-
18
14
  def determine(request)
19
15
  unknown
20
16
  end
21
17
 
22
- def load(skill_name, block)
23
- nil
24
- end
25
-
26
18
  end
27
19
  end
28
20
  end
@@ -9,20 +9,10 @@ module Charyf
9
9
  end
10
10
 
11
11
  module ClassMethods
12
-
13
- def scoped_name(skill_name, *args)
14
- ([skill_name.to_s] + args).join('_')
15
- end
16
-
17
- def unscope_name(skill_name, name)
18
- name.start_with?(skill_name.to_s) ? name.sub("#{skill_name.to_s}_", '') : name
19
- end
20
-
21
12
  end # End of ClassMethods
22
13
 
23
- sig [], 'Charyf::Engine::Intent',
24
14
  def unknown
25
- Charyf::Engine::Intent::UNKNOWN
15
+ Charyf::Engine::Intent.unknown
26
16
  end
27
17
 
28
18
  end
@@ -7,49 +7,23 @@ module Charyf
7
7
  module Engine
8
8
  class Intent
9
9
  module Processor
10
+
11
+ extend Charyf::Strategy::OwnerClass
12
+
10
13
  class Base
11
14
 
12
- include Charyf::Strategy
15
+ include Charyf::Strategy::BaseClass
13
16
  include Charyf::Engine::Intent::Processor::Helpers
14
17
 
15
- def self.base
16
- Base
18
+ def self.instance
19
+ @instance = self.new
17
20
  end
18
21
 
19
- sig ['Charyf::Engine::Request'], 'Charyf::Engine::Intent',
20
22
  def determine(request)
21
23
  raise Charyf::Utils::NotImplemented.new
22
24
  end
23
25
 
24
- #
25
- # Load single block of intent definitions
26
- #
27
- sig_self ['Symbol', 'Proc'], nil,
28
- def load(skill_name, block)
29
- raise Charyf::Utils::NotImplemented.new
30
- end
31
-
32
- sig_self ['Symbol'], 'Charyf::Engine::Intent::Processor::Base',
33
- def self.get_for(skill = nil)
34
- raise Charyf::Utils::NotImplemented.new
35
- end
36
-
37
- sig_self [], 'Charyf::Engine::Intent::Processor::Base',
38
- def self.get_global
39
- get_for(nil)
40
- end
41
-
42
- end
43
-
44
-
45
- def self.known
46
- Base.known
47
- end
48
-
49
- def self.list
50
- Base.list
51
26
  end
52
-
53
27
  end
54
28
  end
55
29
  end