class Adhearsion::CallController::MenuDSL::MenuBuilder

Attributes

menu_callbacks[RW]
patterns[RW]

Public Class Methods

new() click to toggle source
# File lib/adhearsion/call_controller/menu_dsl/menu_builder.rb, line 11
def initialize
  @patterns = []
  @menu_callbacks = {}
  @context = nil
end

Public Instance Methods

build(&block) click to toggle source
# File lib/adhearsion/call_controller/menu_dsl/menu_builder.rb, line 17
def build(&block)
  @context = eval "self", block.binding
  instance_eval(&block)
end
calculate_matches_for(result) click to toggle source
# File lib/adhearsion/call_controller/menu_dsl/menu_builder.rb, line 72
def calculate_matches_for(result)
  CalculatedMatchCollection.new.tap do |collection|
    weighted_match_calculators.each do |pattern|
      collection << pattern.match(result)
    end
  end
end
execute_hook_for(symbol, input) click to toggle source
# File lib/adhearsion/call_controller/menu_dsl/menu_builder.rb, line 46
def execute_hook_for(symbol, input)
  callback = @menu_callbacks[symbol]
  return unless callback
  @context.instance_exec input, &callback
end
failure(&block) click to toggle source
# File lib/adhearsion/call_controller/menu_dsl/menu_builder.rb, line 62
def failure(&block)
  raise LocalJumpError, "Must supply a block!" unless block_given?
  @menu_callbacks[:failure] = block
end
has_matchers?() click to toggle source
# File lib/adhearsion/call_controller/menu_dsl/menu_builder.rb, line 42
def has_matchers?
  @patterns.size > 0
end
invalid(&block) click to toggle source
# File lib/adhearsion/call_controller/menu_dsl/menu_builder.rb, line 52
def invalid(&block)
  raise LocalJumpError, "Must supply a block!" unless block_given?
  @menu_callbacks[:invalid] = block
end
match(*args, &block) click to toggle source
# File lib/adhearsion/call_controller/menu_dsl/menu_builder.rb, line 22
def match(*args, &block)
  payload = if block_given?
    raise ArgumentError, "You cannot specify both a block and a controller name." if args.last.is_a? Class
    nil
  else
    raise ArgumentError, "You need to provide a block or a controller name." unless args.last.is_a? Class
    args.pop
  end

  raise ArgumentError, "You cannot call this method without patterns." if args.empty?

  args.each do |pattern|
    @patterns << MatchCalculator.build_with_pattern(pattern, payload, &block)
  end
end
method_missing(method_name, *args, &block) click to toggle source
Calls superclass method
# File lib/adhearsion/call_controller/menu_dsl/menu_builder.rb, line 80
def method_missing(method_name, *args, &block)
  if @context
    @context.send method_name, *args, &block
  else
    super
  end
end
timeout(&block) click to toggle source
# File lib/adhearsion/call_controller/menu_dsl/menu_builder.rb, line 57
def timeout(&block)
  raise LocalJumpError, "Must supply a block!" unless block_given?
  @menu_callbacks[:timeout] = block
end
validator(&block) click to toggle source
# File lib/adhearsion/call_controller/menu_dsl/menu_builder.rb, line 67
def validator(&block)
  raise LocalJumpError, "Must supply a block!" unless block_given?
  @menu_callbacks[:validator] = block
end
weighted_match_calculators() click to toggle source
# File lib/adhearsion/call_controller/menu_dsl/menu_builder.rb, line 38
def weighted_match_calculators
  @patterns
end