class Attentive::Listener
Attributes
listeners[R]
phrases[R]
Public Class Methods
new(listeners, phrases, options, callback)
click to toggle source
# File lib/attentive/listener.rb, line 8 def initialize(listeners, phrases, options, callback) context_options = options.fetch(:context, {}) @required_contexts = context_options.fetch(:in, Attentive.default_required_contexts) @required_contexts = [] if @required_contexts == :any @required_contexts = Set[*@required_contexts] @prohibited_contexts = context_options.fetch(:not_in, Attentive.default_prohibited_contexts) @prohibited_contexts = Set[*@prohibited_contexts] @listeners = listeners @phrases = tokenize_phrases!(phrases) @callback = callback end
Public Instance Methods
call(e)
click to toggle source
# File lib/attentive/listener.rb, line 32 def call(e) @callback.call(e) end
matches_context?(message)
click to toggle source
# File lib/attentive/listener.rb, line 21 def matches_context?(message) return false unless message.contexts.superset? @required_contexts return false unless message.contexts.disjoint? @prohibited_contexts true end
stop_listening!()
click to toggle source
# File lib/attentive/listener.rb, line 27 def stop_listening! listeners.delete self self end
Private Instance Methods
tokenize_phrase!(phrase)
click to toggle source
# File lib/attentive/listener.rb, line 45 def tokenize_phrase!(phrase) Attentive::Tokenizer.tokenize(phrase, entities: true, regexps: true) end
tokenize_phrases!(phrases)
click to toggle source
# File lib/attentive/listener.rb, line 39 def tokenize_phrases!(phrases) phrases.map do |phrase| tokenize_phrase!(phrase) end end