Class: Adapt::RoutingBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/adapt/routing_builder.rb

Defined Under Namespace

Classes: Intent, InvalidState

Instance Method Summary collapse

Constructor Details

#initializeRoutingBuilder

End of Intent.class



29
30
31
32
33
# File 'lib/adapt/routing_builder.rb', line 29

def initialize
  @keywords = {}
  @regexps = []
  @intents = []
end

Instance Method Details

#build(engine, python_builder) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# 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) ⇒ Object



45
46
47
48
49
50
# File 'lib/adapt/routing_builder.rb', line 45

def intent(name)
  intent = Intent.new(name)
  @intents << intent

  intent
end

#register_keywords(category, word, *words) ⇒ Object



35
36
37
38
39
# 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) ⇒ Object



41
42
43
# File 'lib/adapt/routing_builder.rb', line 41

def register_regex(regex)
  @regexps << regex
end