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