class Adapt::RoutingBuilder
Public Class Methods
new()
click to toggle source
# File lib/adapt/routing_builder.rb, line 29 def initialize @keywords = {} @regexps = [] @intents = [] end
Public Instance Methods
build(engine, python_builder)
click to toggle source
# File lib/adapt/routing_builder.rb, line 52 def build(engine, python_builder) @keywords.each do |group, words| words.each do |word| engine.register_entity(word, group) end end @regexps.each do |regexp| engine.register_regex_entity(regexp) end @intents.each do |intent| builder = python_builder.new(intent.name) intent.entities.each do |entity| entity, method = entity.first case method when :required builder.require(entity) when :optional builder.optionally(entity) else raise InvalidState.new('You should never end up here') end adapt_intent = builder.build engine.register_intent_parser(adapt_intent) end end @intents end
intent(name)
click to toggle source
# File lib/adapt/routing_builder.rb, line 45 def intent(name) intent = Intent.new(name) @intents << intent intent end
register_keywords(category, word, *words)
click to toggle source
# File lib/adapt/routing_builder.rb, line 35 def register_keywords(category, word, *words) words = [word] + words (@keywords[category] ||= []).push(words).flatten! end
register_regex(regex)
click to toggle source
# File lib/adapt/routing_builder.rb, line 41 def register_regex(regex) @regexps << regex end