class Adhearsion::CallController::MenuDSL::MenuBuilder
Attributes
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