Class: Adhearsion::VoIP::Menu
- Inherits:
-
Object
show all
- Defined in:
- lib/adhearsion/voip/menu_state_machine/menu_class.rb
Defined Under Namespace
Modules: MenuGetAnotherDigit
Classes: ClearableStringBuffer, MenuGetAnotherDigitOrFinish, MenuGetAnotherDigitOrTimeout, MenuResult, MenuResultFound, MenuResultInvalid
Constant Summary
collapse
- DEFAULT_MAX_NUMBER_OF_TRIES =
1
- DEFAULT_TIMEOUT =
5
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(options = {}) {|@builder| ... } ⇒ Menu
Returns a new instance of Menu.
12
13
14
15
16
17
18
19
20
21
22
|
# File 'lib/adhearsion/voip/menu_state_machine/menu_class.rb', line 12
def initialize(options={}, &block)
@tries_count = 0
@timeout = options[:timeout] || DEFAULT_TIMEOUT
@max_number_of_tries = options[:tries] || DEFAULT_MAX_NUMBER_OF_TRIES
@builder = .new
yield @builder
initialize_digit_buffer
end
|
Instance Attribute Details
Returns the value of attribute builder.
11
12
13
|
# File 'lib/adhearsion/voip/menu_state_machine/menu_class.rb', line 11
def builder
@builder
end
|
#max_number_of_tries ⇒ Object
Returns the value of attribute max_number_of_tries.
11
12
13
|
# File 'lib/adhearsion/voip/menu_state_machine/menu_class.rb', line 11
def max_number_of_tries
@max_number_of_tries
end
|
Returns the value of attribute timeout.
11
12
13
|
# File 'lib/adhearsion/voip/menu_state_machine/menu_class.rb', line 11
def timeout
@timeout
end
|
#tries_count ⇒ Object
Returns the value of attribute tries_count.
11
12
13
|
# File 'lib/adhearsion/voip/menu_state_machine/menu_class.rb', line 11
def tries_count
@tries_count
end
|
Instance Method Details
#<<(other) ⇒ Object
24
25
26
|
# File 'lib/adhearsion/voip/menu_state_machine/menu_class.rb', line 24
def <<(other)
digit_buffer << other
end
|
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/adhearsion/voip/menu_state_machine/menu_class.rb', line 40
def continue
raise MenuGetAnotherDigitOrTimeout if digit_buffer_empty?
calculated_matches = builder.calculate_matches_for digit_buffer_string
if calculated_matches.exact_match_count >= 1
first_exact_match = calculated_matches.exact_matches.first
if calculated_matches.potential_match_count.zero?
first_exact_match.match_payload, digit_buffer_string
else
get_another_digit_or_finish!(first_exact_match.match_payload, first_exact_match.query)
end
elsif calculated_matches.potential_match_count >= 1
get_another_digit_or_timeout!
else
invalid!
end
end
|
#digit_buffer ⇒ Object
28
29
30
|
# File 'lib/adhearsion/voip/menu_state_machine/menu_class.rb', line 28
def digit_buffer
@digit_buffer
end
|
#digit_buffer_empty? ⇒ Boolean
36
37
38
|
# File 'lib/adhearsion/voip/menu_state_machine/menu_class.rb', line 36
def digit_buffer_empty?
digit_buffer.empty?
end
|
#digit_buffer_string ⇒ Object
32
33
34
|
# File 'lib/adhearsion/voip/menu_state_machine/menu_class.rb', line 32
def digit_buffer_string
digit_buffer.to_s
end
|
#execute_failure_hook ⇒ Object
77
78
79
|
# File 'lib/adhearsion/voip/menu_state_machine/menu_class.rb', line 77
def execute_failure_hook
builder.execute_hook_for(:failure, digit_buffer_string)
end
|
#execute_invalid_hook ⇒ Object
69
70
71
|
# File 'lib/adhearsion/voip/menu_state_machine/menu_class.rb', line 69
def execute_invalid_hook
builder.execute_hook_for(:invalid, digit_buffer_string)
end
|
#execute_timeout_hook ⇒ Object
73
74
75
|
# File 'lib/adhearsion/voip/menu_state_machine/menu_class.rb', line 73
def execute_timeout_hook
builder.execute_hook_for(:premature_timeout, digit_buffer_string)
end
|
64
65
66
67
|
# File 'lib/adhearsion/voip/menu_state_machine/menu_class.rb', line 64
def restart!
@tries_count += 1
digit_buffer.clear!
end
|
#should_continue? ⇒ Boolean
60
61
62
|
# File 'lib/adhearsion/voip/menu_state_machine/menu_class.rb', line 60
def should_continue?
tries_count < max_number_of_tries
end
|