sevenscale-adhearsion 0.7.1003 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +8 -2
- data/EVENTS +11 -0
- data/Rakefile +92 -26
- data/adhearsion.gemspec +131 -23
- data/app_generators/ahn/ahn_generator.rb +21 -7
- data/app_generators/ahn/templates/.ahnrc +10 -4
- data/app_generators/ahn/templates/Rakefile +7 -2
- data/app_generators/ahn/templates/components/ami_remote/ami_remote.rb +15 -0
- data/app_generators/ahn/templates/components/disabled/HOW_TO_ENABLE +7 -0
- data/app_generators/ahn/templates/components/disabled/stomp_gateway/README.markdown +47 -0
- data/app_generators/ahn/templates/components/disabled/stomp_gateway/config.yml +12 -0
- data/app_generators/ahn/templates/components/disabled/stomp_gateway/stomp_gateway.rb +34 -0
- data/app_generators/ahn/templates/components/simon_game/{lib/simon_game.rb → simon_game.rb} +14 -19
- data/app_generators/ahn/templates/config/startup.rb +3 -6
- data/app_generators/ahn/templates/dialplan.rb +2 -3
- data/app_generators/ahn/templates/events.rb +32 -6
- data/bin/jahn +10 -0
- data/examples/asterisk_manager_interface/standalone.rb +51 -0
- data/lib/adhearsion/cli.rb +140 -23
- data/lib/adhearsion/component_manager/component_tester.rb +55 -0
- data/lib/adhearsion/component_manager/spec_framework.rb +24 -0
- data/lib/adhearsion/component_manager.rb +169 -238
- data/lib/adhearsion/events_support.rb +59 -237
- data/lib/adhearsion/{core_extensions → foundation}/all.rb +0 -0
- data/lib/adhearsion/{blank_slate.rb → foundation/blank_slate.rb} +0 -0
- data/lib/adhearsion/{core_extensions → foundation}/custom_daemonizer.rb +0 -0
- data/lib/adhearsion/foundation/event_socket.rb +203 -0
- data/lib/adhearsion/foundation/future_resource.rb +36 -0
- data/lib/adhearsion/{core_extensions → foundation}/global.rb +0 -0
- data/lib/adhearsion/{core_extensions → foundation}/metaprogramming.rb +0 -0
- data/lib/adhearsion/foundation/numeric.rb +13 -0
- data/lib/adhearsion/foundation/pseudo_guid.rb +10 -0
- data/lib/adhearsion/{core_extensions → foundation}/relationship_properties.rb +2 -0
- data/lib/adhearsion/foundation/string.rb +26 -0
- data/lib/adhearsion/foundation/synchronized_hash.rb +96 -0
- data/lib/adhearsion/{core_extensions → foundation}/thread_safety.rb +0 -0
- data/lib/adhearsion/host_definitions.rb +5 -1
- data/lib/adhearsion/initializer/asterisk.rb +33 -11
- data/lib/adhearsion/initializer/configuration.rb +58 -6
- data/lib/adhearsion/initializer/database.rb +3 -46
- data/lib/adhearsion/initializer/drb.rb +9 -3
- data/lib/adhearsion/initializer/freeswitch.rb +3 -3
- data/lib/adhearsion/initializer/rails.rb +1 -1
- data/lib/adhearsion/initializer.rb +213 -87
- data/lib/adhearsion/tasks/deprecations.rb +59 -0
- data/lib/adhearsion/tasks.rb +2 -1
- data/lib/adhearsion/version.rb +3 -3
- data/lib/adhearsion/voip/asterisk/agi_server.rb +6 -6
- data/lib/adhearsion/voip/asterisk/commands.rb +100 -2
- data/lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rb +1754 -0
- data/lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb +286 -0
- data/lib/adhearsion/voip/asterisk/manager_interface/ami_messages.rb +78 -0
- data/lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl +87 -0
- data/lib/adhearsion/voip/asterisk/manager_interface.rb +562 -0
- data/lib/adhearsion/voip/asterisk/super_manager.rb +19 -0
- data/lib/adhearsion/voip/asterisk.rb +1 -8
- data/lib/adhearsion/voip/call.rb +5 -1
- data/lib/adhearsion/voip/dial_plan.rb +74 -61
- data/lib/adhearsion/voip/dsl/dialing_dsl.rb +1 -1
- data/lib/adhearsion/voip/dsl/dialplan/parser.rb +2 -6
- data/lib/adhearsion/voip/dsl/numerical_string.rb +2 -2
- data/lib/adhearsion/voip/freeswitch/oes_server.rb +2 -2
- data/lib/adhearsion.rb +16 -11
- data/lib/theatre/README.markdown +64 -0
- data/lib/theatre/callback_definition_loader.rb +84 -0
- data/lib/theatre/guid.rb +23 -0
- data/lib/theatre/invocation.rb +121 -0
- data/lib/theatre/namespace_manager.rb +153 -0
- data/lib/theatre/version.rb +2 -0
- data/lib/theatre.rb +151 -0
- metadata +60 -147
- data/Manifest.txt +0 -151
- data/README.txt +0 -5
- data/ahn_generators/component/USAGE +0 -5
- data/ahn_generators/component/component_generator.rb +0 -57
- data/ahn_generators/component/templates/configuration.rb +0 -0
- data/ahn_generators/component/templates/lib/lib.rb.erb +0 -3
- data/ahn_generators/component/templates/test/test.rb.erb +0 -12
- data/ahn_generators/component/templates/test/test_helper.rb +0 -14
- data/app_generators/ahn/templates/components/simon_game/configuration.rb +0 -0
- data/app_generators/ahn/templates/components/simon_game/test/test_helper.rb +0 -14
- data/app_generators/ahn/templates/components/simon_game/test/test_simon_game.rb +0 -31
- data/lib/adhearsion/core_extensions/array.rb +0 -0
- data/lib/adhearsion/core_extensions/guid.rb +0 -5
- data/lib/adhearsion/core_extensions/hash.rb +0 -0
- data/lib/adhearsion/core_extensions/numeric.rb +0 -4
- data/lib/adhearsion/core_extensions/proc.rb +0 -0
- data/lib/adhearsion/core_extensions/pseudo_uuid.rb +0 -11
- data/lib/adhearsion/core_extensions/publishable.rb +0 -73
- data/lib/adhearsion/core_extensions/string.rb +0 -26
- data/lib/adhearsion/core_extensions/thread.rb +0 -13
- data/lib/adhearsion/core_extensions/time.rb +0 -0
- data/lib/adhearsion/distributed/gateways/dbus_gateway.rb +0 -0
- data/lib/adhearsion/distributed/gateways/osa_gateway.rb +0 -0
- data/lib/adhearsion/distributed/gateways/rest_gateway.rb +0 -9
- data/lib/adhearsion/distributed/gateways/soap_gateway.rb +0 -9
- data/lib/adhearsion/distributed/gateways/xmlrpc_gateway.rb +0 -9
- data/lib/adhearsion/distributed/peer_finder.rb +0 -0
- data/lib/adhearsion/distributed/remote_cli.rb +0 -0
- data/lib/adhearsion/hooks.rb +0 -57
- data/lib/adhearsion/initializer/paths.rb +0 -55
- data/lib/adhearsion/voip/asterisk/ami/actions.rb +0 -238
- data/lib/adhearsion/voip/asterisk/ami/machine.rb +0 -871
- data/lib/adhearsion/voip/asterisk/ami/machine.rl +0 -109
- data/lib/adhearsion/voip/asterisk/ami/parser.rb +0 -262
- data/lib/adhearsion/voip/asterisk/ami.rb +0 -147
- data/spec/fixtures/dialplan.rb +0 -3
- data/spec/initializer/test_configuration.rb +0 -267
- data/spec/initializer/test_loading.rb +0 -162
- data/spec/initializer/test_paths.rb +0 -43
- data/spec/sample.rb +0 -9
- data/spec/silence.rb +0 -10
- data/spec/test_ahn_command.rb +0 -149
- data/spec/test_code_quality.rb +0 -87
- data/spec/test_component_manager.rb +0 -97
- data/spec/test_constants.rb +0 -8
- data/spec/test_drb.rb +0 -104
- data/spec/test_events.rb +0 -136
- data/spec/test_helper.rb +0 -106
- data/spec/test_hooks.rb +0 -15
- data/spec/test_host_definitions.rb +0 -79
- data/spec/test_initialization.rb +0 -124
- data/spec/test_logging.rb +0 -80
- data/spec/test_relationship_properties.rb +0 -54
- data/spec/voip/asterisk/ami_response_definitions.rb +0 -23
- data/spec/voip/asterisk/config_file_generators/test_agents.rb +0 -253
- data/spec/voip/asterisk/config_file_generators/test_queues.rb +0 -325
- data/spec/voip/asterisk/config_file_generators/test_voicemail.rb +0 -306
- data/spec/voip/asterisk/menu_command/test_calculated_match.rb +0 -111
- data/spec/voip/asterisk/menu_command/test_matchers.rb +0 -98
- data/spec/voip/asterisk/mock_ami_server.rb +0 -176
- data/spec/voip/asterisk/test_agi_server.rb +0 -453
- data/spec/voip/asterisk/test_ami.rb +0 -227
- data/spec/voip/asterisk/test_commands.rb +0 -2006
- data/spec/voip/asterisk/test_config_manager.rb +0 -129
- data/spec/voip/dsl/dispatcher_spec_helper.rb +0 -45
- data/spec/voip/dsl/test_dialing_dsl.rb +0 -268
- data/spec/voip/dsl/test_dispatcher.rb +0 -82
- data/spec/voip/dsl/test_parser.rb +0 -87
- data/spec/voip/freeswitch/test_basic_connection_manager.rb +0 -39
- data/spec/voip/freeswitch/test_inbound_connection_manager.rb +0 -39
- data/spec/voip/freeswitch/test_oes_server.rb +0 -9
- data/spec/voip/test_call_routing.rb +0 -127
- data/spec/voip/test_dialplan_manager.rb +0 -442
- data/spec/voip/test_numerical_string.rb +0 -48
- data/spec/voip/test_phone_number.rb +0 -36
- data/test/test_ahn_generator.rb +0 -59
- data/test/test_component_generator.rb +0 -52
- data/test/test_generator_helper.rb +0 -20
data/Manifest.txt
DELETED
@@ -1,151 +0,0 @@
|
|
1
|
-
CHANGELOG
|
2
|
-
LICENSE
|
3
|
-
Manifest.txt
|
4
|
-
README.txt
|
5
|
-
Rakefile
|
6
|
-
adhearsion.gemspec
|
7
|
-
ahn_generators/component/USAGE
|
8
|
-
ahn_generators/component/component_generator.rb
|
9
|
-
ahn_generators/component/templates/configuration.rb
|
10
|
-
ahn_generators/component/templates/lib/lib.rb.erb
|
11
|
-
ahn_generators/component/templates/test/test.rb.erb
|
12
|
-
ahn_generators/component/templates/test/test_helper.rb
|
13
|
-
app_generators/ahn/USAGE
|
14
|
-
app_generators/ahn/ahn_generator.rb
|
15
|
-
app_generators/ahn/templates/.ahnrc
|
16
|
-
app_generators/ahn/templates/README
|
17
|
-
app_generators/ahn/templates/Rakefile
|
18
|
-
app_generators/ahn/templates/components/simon_game/configuration.rb
|
19
|
-
app_generators/ahn/templates/components/simon_game/lib/simon_game.rb
|
20
|
-
app_generators/ahn/templates/components/simon_game/test/test_helper.rb
|
21
|
-
app_generators/ahn/templates/components/simon_game/test/test_simon_game.rb
|
22
|
-
app_generators/ahn/templates/config/startup.rb
|
23
|
-
app_generators/ahn/templates/dialplan.rb
|
24
|
-
app_generators/ahn/templates/events.rb
|
25
|
-
bin/ahn
|
26
|
-
bin/ahnctl
|
27
|
-
bin/jahn
|
28
|
-
lib/adhearsion.rb
|
29
|
-
lib/adhearsion/blank_slate.rb
|
30
|
-
lib/adhearsion/cli.rb
|
31
|
-
lib/adhearsion/component_manager.rb
|
32
|
-
lib/adhearsion/core_extensions/all.rb
|
33
|
-
lib/adhearsion/core_extensions/array.rb
|
34
|
-
lib/adhearsion/core_extensions/custom_daemonizer.rb
|
35
|
-
lib/adhearsion/core_extensions/global.rb
|
36
|
-
lib/adhearsion/core_extensions/guid.rb
|
37
|
-
lib/adhearsion/core_extensions/hash.rb
|
38
|
-
lib/adhearsion/core_extensions/metaprogramming.rb
|
39
|
-
lib/adhearsion/core_extensions/numeric.rb
|
40
|
-
lib/adhearsion/core_extensions/proc.rb
|
41
|
-
lib/adhearsion/core_extensions/pseudo_uuid.rb
|
42
|
-
lib/adhearsion/core_extensions/publishable.rb
|
43
|
-
lib/adhearsion/core_extensions/relationship_properties.rb
|
44
|
-
lib/adhearsion/core_extensions/string.rb
|
45
|
-
lib/adhearsion/core_extensions/thread.rb
|
46
|
-
lib/adhearsion/core_extensions/thread_safety.rb
|
47
|
-
lib/adhearsion/core_extensions/time.rb
|
48
|
-
lib/adhearsion/distributed/gateways/dbus_gateway.rb
|
49
|
-
lib/adhearsion/distributed/gateways/osa_gateway.rb
|
50
|
-
lib/adhearsion/distributed/gateways/rest_gateway.rb
|
51
|
-
lib/adhearsion/distributed/gateways/soap_gateway.rb
|
52
|
-
lib/adhearsion/distributed/gateways/xmlrpc_gateway.rb
|
53
|
-
lib/adhearsion/distributed/peer_finder.rb
|
54
|
-
lib/adhearsion/distributed/remote_cli.rb
|
55
|
-
lib/adhearsion/events_support.rb
|
56
|
-
lib/adhearsion/hooks.rb
|
57
|
-
lib/adhearsion/host_definitions.rb
|
58
|
-
lib/adhearsion/initializer.rb
|
59
|
-
lib/adhearsion/initializer/asterisk.rb
|
60
|
-
lib/adhearsion/initializer/configuration.rb
|
61
|
-
lib/adhearsion/initializer/database.rb
|
62
|
-
lib/adhearsion/initializer/drb.rb
|
63
|
-
lib/adhearsion/initializer/freeswitch.rb
|
64
|
-
lib/adhearsion/initializer/paths.rb
|
65
|
-
lib/adhearsion/initializer/rails.rb
|
66
|
-
lib/adhearsion/logging.rb
|
67
|
-
lib/adhearsion/tasks.rb
|
68
|
-
lib/adhearsion/tasks/database.rb
|
69
|
-
lib/adhearsion/tasks/generating.rb
|
70
|
-
lib/adhearsion/tasks/lint.rb
|
71
|
-
lib/adhearsion/tasks/testing.rb
|
72
|
-
lib/adhearsion/version.rb
|
73
|
-
lib/adhearsion/voip/asterisk.rb
|
74
|
-
lib/adhearsion/voip/asterisk/agi_server.rb
|
75
|
-
lib/adhearsion/voip/asterisk/ami.rb
|
76
|
-
lib/adhearsion/voip/asterisk/ami/actions.rb
|
77
|
-
lib/adhearsion/voip/asterisk/ami/machine.rb
|
78
|
-
lib/adhearsion/voip/asterisk/ami/machine.rl
|
79
|
-
lib/adhearsion/voip/asterisk/ami/parser.rb
|
80
|
-
lib/adhearsion/voip/asterisk/commands.rb
|
81
|
-
lib/adhearsion/voip/asterisk/config_generators/agents.conf.rb
|
82
|
-
lib/adhearsion/voip/asterisk/config_generators/config_generator.rb
|
83
|
-
lib/adhearsion/voip/asterisk/config_generators/queues.conf.rb
|
84
|
-
lib/adhearsion/voip/asterisk/config_generators/voicemail.conf.rb
|
85
|
-
lib/adhearsion/voip/asterisk/config_manager.rb
|
86
|
-
lib/adhearsion/voip/asterisk/special_dial_plan_managers.rb
|
87
|
-
lib/adhearsion/voip/call.rb
|
88
|
-
lib/adhearsion/voip/call_routing.rb
|
89
|
-
lib/adhearsion/voip/commands.rb
|
90
|
-
lib/adhearsion/voip/constants.rb
|
91
|
-
lib/adhearsion/voip/conveniences.rb
|
92
|
-
lib/adhearsion/voip/dial_plan.rb
|
93
|
-
lib/adhearsion/voip/dsl/dialing_dsl.rb
|
94
|
-
lib/adhearsion/voip/dsl/dialing_dsl/dialing_dsl_monkey_patches.rb
|
95
|
-
lib/adhearsion/voip/dsl/dialplan/control_passing_exception.rb
|
96
|
-
lib/adhearsion/voip/dsl/dialplan/dispatcher.rb
|
97
|
-
lib/adhearsion/voip/dsl/dialplan/parser.rb
|
98
|
-
lib/adhearsion/voip/dsl/dialplan/thread_mixin.rb
|
99
|
-
lib/adhearsion/voip/dsl/numerical_string.rb
|
100
|
-
lib/adhearsion/voip/freeswitch/basic_connection_manager.rb
|
101
|
-
lib/adhearsion/voip/freeswitch/event_handler.rb
|
102
|
-
lib/adhearsion/voip/freeswitch/freeswitch_dialplan_command_factory.rb
|
103
|
-
lib/adhearsion/voip/freeswitch/inbound_connection_manager.rb
|
104
|
-
lib/adhearsion/voip/freeswitch/oes_server.rb
|
105
|
-
lib/adhearsion/voip/menu_state_machine/calculated_match.rb
|
106
|
-
lib/adhearsion/voip/menu_state_machine/matchers.rb
|
107
|
-
lib/adhearsion/voip/menu_state_machine/menu_builder.rb
|
108
|
-
lib/adhearsion/voip/menu_state_machine/menu_class.rb
|
109
|
-
spec/fixtures/dialplan.rb
|
110
|
-
spec/initializer/test_configuration.rb
|
111
|
-
spec/initializer/test_loading.rb
|
112
|
-
spec/initializer/test_paths.rb
|
113
|
-
spec/sample.rb
|
114
|
-
spec/silence.rb
|
115
|
-
spec/test_ahn_command.rb
|
116
|
-
spec/test_code_quality.rb
|
117
|
-
spec/test_component_manager.rb
|
118
|
-
spec/test_constants.rb
|
119
|
-
spec/test_drb.rb
|
120
|
-
spec/test_events.rb
|
121
|
-
spec/test_helper.rb
|
122
|
-
spec/test_hooks.rb
|
123
|
-
spec/test_host_definitions.rb
|
124
|
-
spec/test_initialization.rb
|
125
|
-
spec/test_logging.rb
|
126
|
-
spec/test_relationship_properties.rb
|
127
|
-
spec/voip/asterisk/ami_response_definitions.rb
|
128
|
-
spec/voip/asterisk/config_file_generators/test_agents.rb
|
129
|
-
spec/voip/asterisk/config_file_generators/test_queues.rb
|
130
|
-
spec/voip/asterisk/config_file_generators/test_voicemail.rb
|
131
|
-
spec/voip/asterisk/menu_command/test_calculated_match.rb
|
132
|
-
spec/voip/asterisk/menu_command/test_matchers.rb
|
133
|
-
spec/voip/asterisk/mock_ami_server.rb
|
134
|
-
spec/voip/asterisk/test_agi_server.rb
|
135
|
-
spec/voip/asterisk/test_ami.rb
|
136
|
-
spec/voip/asterisk/test_commands.rb
|
137
|
-
spec/voip/asterisk/test_config_manager.rb
|
138
|
-
spec/voip/dsl/dispatcher_spec_helper.rb
|
139
|
-
spec/voip/dsl/test_dialing_dsl.rb
|
140
|
-
spec/voip/dsl/test_dispatcher.rb
|
141
|
-
spec/voip/dsl/test_parser.rb
|
142
|
-
spec/voip/freeswitch/test_basic_connection_manager.rb
|
143
|
-
spec/voip/freeswitch/test_inbound_connection_manager.rb
|
144
|
-
spec/voip/freeswitch/test_oes_server.rb
|
145
|
-
spec/voip/test_call_routing.rb
|
146
|
-
spec/voip/test_dialplan_manager.rb
|
147
|
-
spec/voip/test_numerical_string.rb
|
148
|
-
spec/voip/test_phone_number.rb
|
149
|
-
test/test_ahn_generator.rb
|
150
|
-
test/test_component_generator.rb
|
151
|
-
test/test_generator_helper.rb
|
data/README.txt
DELETED
@@ -1,5 +0,0 @@
|
|
1
|
-
Adhearsion
|
2
|
-
by Jay Phillips, et. al
|
3
|
-
http://adhearsion.com
|
4
|
-
|
5
|
-
Adhearsion is an open-source framework written in Ruby designed to vastly improve Voice over IP development. It rests atop established telephony platforms (such as Asterisk and Freeswitch) and abstracts their complexity with the beauty of a well-designed, high-level suite of solutions.
|
@@ -1,57 +0,0 @@
|
|
1
|
-
class ComponentGenerator < RubiGen::Base
|
2
|
-
|
3
|
-
default_options :author => nil
|
4
|
-
|
5
|
-
attr_reader :name, :class_name
|
6
|
-
|
7
|
-
def initialize(runtime_args, runtime_options = {})
|
8
|
-
super
|
9
|
-
usage if args.empty?
|
10
|
-
@name = args.shift
|
11
|
-
@name = @name.underscore
|
12
|
-
@class_name = @name.camelize
|
13
|
-
extract_options
|
14
|
-
end
|
15
|
-
|
16
|
-
def manifest
|
17
|
-
record do |m|
|
18
|
-
# Ensure appropriate folder(s) exists
|
19
|
-
m.directory "components/#{name}/lib"
|
20
|
-
m.directory "components/#{name}/test"
|
21
|
-
|
22
|
-
# Create stubs
|
23
|
-
m.file "configuration.rb", "components/#{name}/configuration.rb"
|
24
|
-
m.template "lib/lib.rb.erb", "components/#{name}/lib/#{name}.rb"
|
25
|
-
m.template "test/test.rb.erb", "components/#{name}/test/test_#{name}.rb"
|
26
|
-
m.file "test/test_helper.rb", "components/#{name}/test/test_helper.rb"
|
27
|
-
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
protected
|
32
|
-
def banner
|
33
|
-
<<-EOS
|
34
|
-
Creates a ...
|
35
|
-
|
36
|
-
USAGE: #{$0} #{spec.name} name"
|
37
|
-
EOS
|
38
|
-
end
|
39
|
-
|
40
|
-
def add_options!(opts)
|
41
|
-
# opts.separator ''
|
42
|
-
# opts.separator 'Options:'
|
43
|
-
# For each option below, place the default
|
44
|
-
# at the top of the file next to "default_options"
|
45
|
-
# opts.on("-a", "--author=\"Your Name\"", String,
|
46
|
-
# "Some comment about this option",
|
47
|
-
# "Default: none") { |options[:author]| }
|
48
|
-
# opts.on("-v", "--version", "Show the #{File.basename($0)} version number and quit.")
|
49
|
-
end
|
50
|
-
|
51
|
-
def extract_options
|
52
|
-
# for each option, extract it into a local variable (and create an "attr_reader :author" at the top)
|
53
|
-
# Templates can access these value via the attr_reader-generated methods, but not the
|
54
|
-
# raw instance variable value.
|
55
|
-
# @author = options[:author]
|
56
|
-
end
|
57
|
-
end
|
File without changes
|
@@ -1,14 +0,0 @@
|
|
1
|
-
$:.unshift File.dirname(__FILE__) + '/../../../../../lib'
|
2
|
-
require 'adhearsion'
|
3
|
-
require 'test/unit'
|
4
|
-
require 'flexmock/test_unit'
|
5
|
-
AHN_ROOT = Adhearsion::PathString.new(File.dirname(__FILE__) + '/../../..')
|
6
|
-
Adhearsion::ComponentManager.load
|
7
|
-
Adhearsion::ComponentManager.start
|
8
|
-
|
9
|
-
class Test::Unit::TestCase
|
10
|
-
Adhearsion::ComponentManager.components_with_call_context.each_pair do |component_class_name, component_configuration|
|
11
|
-
const_set(component_class_name, component_configuration.component_class)
|
12
|
-
const_get(component_class_name).send(:attr_accessor, :call_context)
|
13
|
-
end
|
14
|
-
end
|
File without changes
|
@@ -1,14 +0,0 @@
|
|
1
|
-
$:.unshift File.dirname(__FILE__) + '/../../../../../lib'
|
2
|
-
require 'adhearsion'
|
3
|
-
require 'test/unit'
|
4
|
-
require 'flexmock/test_unit'
|
5
|
-
AHN_ROOT = Adhearsion::PathString.new(File.dirname(__FILE__) + '/../../..')
|
6
|
-
Adhearsion::ComponentManager.load
|
7
|
-
Adhearsion::ComponentManager.start
|
8
|
-
|
9
|
-
class Test::Unit::TestCase
|
10
|
-
Adhearsion::ComponentManager.components_with_call_context.each_pair do |component_class_name, component_configuration|
|
11
|
-
const_set(component_class_name, component_configuration.component_class)
|
12
|
-
const_get(component_class_name).send(:attr_accessor, :call_context)
|
13
|
-
end
|
14
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + "/test_helper"
|
2
|
-
|
3
|
-
class TestSimonGame < Test::Unit::TestCase
|
4
|
-
attr_reader :game
|
5
|
-
def setup
|
6
|
-
@game = SimonGame.new
|
7
|
-
@game.call_context = mock_call_context
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_game_executes_say_digits_when_asked_to_say_number
|
11
|
-
flexmock(game).should_receive(:random_number).and_return("2")
|
12
|
-
mock_call_context.should_receive(:say_digits).once.with('2')
|
13
|
-
@game.say_number
|
14
|
-
end
|
15
|
-
|
16
|
-
|
17
|
-
# Didn't get very far on this
|
18
|
-
def xtest_can_play_one_round_and_receive_the_players_score
|
19
|
-
flexmock(game).should_receive(:random_number).and_return("2")
|
20
|
-
assert_equal(3, 'x')
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
def mock_call_context
|
25
|
-
@mock_call_context ||= flexmock("Mock Call Context")
|
26
|
-
end
|
27
|
-
|
28
|
-
def stub_random_number
|
29
|
-
|
30
|
-
end
|
31
|
-
end
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,73 +0,0 @@
|
|
1
|
-
module Adhearsion
|
2
|
-
class DrbDoor
|
3
|
-
|
4
|
-
include Singleton
|
5
|
-
|
6
|
-
def add(interface, name, meth)
|
7
|
-
@interfaces ||= {}
|
8
|
-
@interfaces[interface] ||= returning(Object.new) { |obj| obj.metaclass.send(:attr_accessor, :__methods) }
|
9
|
-
obj = @interfaces[interface]
|
10
|
-
obj.__methods ||= {}
|
11
|
-
obj.__methods[name] = meth
|
12
|
-
obj.instance_eval(<<-STR, __FILE__, __LINE__)
|
13
|
-
def #{name}(*args, &block)
|
14
|
-
begin
|
15
|
-
__methods["#{name}"].call(*args, &block)
|
16
|
-
rescue => exception
|
17
|
-
raise RuntimeError, exception.message, exception.backtrace
|
18
|
-
end
|
19
|
-
end
|
20
|
-
STR
|
21
|
-
end
|
22
|
-
|
23
|
-
def method_missing(name, *args, &block)
|
24
|
-
return Module.const_get(name) if name.to_s =~ /^[A-Z]/
|
25
|
-
super unless @interfaces && @interfaces.has_key?(name.to_s)
|
26
|
-
@interfaces[name.to_s]
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
module Publishable
|
31
|
-
def self.included(base)
|
32
|
-
base.send(:alias_method_chain, :initialize, :publishable)
|
33
|
-
base.extend(ClassMethods)
|
34
|
-
end
|
35
|
-
|
36
|
-
def initialize_with_publishable(*args, &block)
|
37
|
-
initialize_without_publishable(*args, &block)
|
38
|
-
self.class.published_instance_methods.each do |(sym, interface)|
|
39
|
-
DrbDoor.instance.add(interface, sym.to_s, self.method(sym))
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
module ClassMethods
|
44
|
-
attr_reader :interface
|
45
|
-
attr_reader :published_instance_methods
|
46
|
-
|
47
|
-
def publish(options={}, &block)
|
48
|
-
@interface = options.delete(:through).to_s || self.to_s
|
49
|
-
begin
|
50
|
-
@capture = true
|
51
|
-
yield
|
52
|
-
ensure
|
53
|
-
@capture = false
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
def method_added(sym)
|
58
|
-
return if not @capture
|
59
|
-
if sym.to_s !~ /method_added/
|
60
|
-
@published_instance_methods ||= []
|
61
|
-
@published_instance_methods << [sym, @interface]
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
def singleton_method_added(sym)
|
66
|
-
return if not @capture
|
67
|
-
if sym.to_s !~ /method_added/
|
68
|
-
DrbDoor.instance.add(@interface, sym.to_s, method(sym.to_s))
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
class String
|
2
|
-
|
3
|
-
def unindent
|
4
|
-
gsub(/^\s*/,'')
|
5
|
-
end
|
6
|
-
|
7
|
-
def unindent!
|
8
|
-
gsub!(/^\s*/,'')
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.random_char
|
12
|
-
case random_digit = rand(62)
|
13
|
-
when 0...10 : random_digit.to_s
|
14
|
-
when 10...36 : (random_digit + 55).chr
|
15
|
-
when 36...62 : (random_digit + 61).chr
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.random(length_of_string=8)
|
20
|
-
Array.new(length_of_string) { random_char }.join
|
21
|
-
end
|
22
|
-
|
23
|
-
def nameify() downcase.gsub(/[^\w]/, '') end
|
24
|
-
def nameify!() replace nameify end
|
25
|
-
|
26
|
-
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/lib/adhearsion/hooks.rb
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
module Adhearsion
|
2
|
-
|
3
|
-
|
4
|
-
module Hooks
|
5
|
-
|
6
|
-
class GenericHook
|
7
|
-
|
8
|
-
def initialize
|
9
|
-
@hooks = []
|
10
|
-
end
|
11
|
-
|
12
|
-
def create_hook(&block)
|
13
|
-
@hooks.synchronize do
|
14
|
-
@hooks << block
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
# TODO: This is hardly thread safe!
|
19
|
-
def trigger_hooks
|
20
|
-
@hooks.each &:call
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
24
|
-
|
25
|
-
class HookWithArguments < GenericHook
|
26
|
-
def trigger_hooks(*args)
|
27
|
-
@hooks.each { |hook| hook.call(*args) }
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
ThreadsJoinedAfterInitialized = GenericHook.new
|
32
|
-
|
33
|
-
OnFailedCall = HookWithArguments.new
|
34
|
-
OnHungupCall = HookWithArguments.new
|
35
|
-
AfterInitialized = GenericHook.new
|
36
|
-
BeforeCall = GenericHook.new
|
37
|
-
AfterCall = GenericHook.new
|
38
|
-
TearDown = GenericHook.new
|
39
|
-
|
40
|
-
class << TearDown
|
41
|
-
def aliases
|
42
|
-
[:before_shutdown]
|
43
|
-
end
|
44
|
-
|
45
|
-
def catch_termination_signals
|
46
|
-
%w'INT TERM'.each do |sig|
|
47
|
-
trap sig do
|
48
|
-
ahn_log "Shutting down gracefully at #{Time.now}."
|
49
|
-
Adhearsion::Hooks::TearDown.trigger_hooks
|
50
|
-
exit
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|
57
|
-
end
|
@@ -1,55 +0,0 @@
|
|
1
|
-
module Adhearsion
|
2
|
-
|
3
|
-
# Paths are a way for helpers to have Adhearsion manage dynamic
|
4
|
-
# paths.
|
5
|
-
module Paths
|
6
|
-
|
7
|
-
# May need to build some kind of namespacing?
|
8
|
-
|
9
|
-
@@path_managers = {}
|
10
|
-
|
11
|
-
def self.manager_for(name, hash)
|
12
|
-
globs = Array hash[:pattern] || hash[:patterns]
|
13
|
-
directory = hash[:directory]
|
14
|
-
name = name.to_s.underscore
|
15
|
-
singular, plural = name.singularize, name.pluralize
|
16
|
-
@@path_managers[singular] = globs
|
17
|
-
#TODO: YAGNI. Bad magic
|
18
|
-
Kernel.module_eval do
|
19
|
-
define_method "#{singular}_path" do |query|
|
20
|
-
target = nil
|
21
|
-
globs.each do |mgr|
|
22
|
-
Dir.glob(mgr).each do |f|
|
23
|
-
#return f if File.basename(f) == query
|
24
|
-
target = File.expand_path(f) if File.basename(f) == query
|
25
|
-
end
|
26
|
-
end
|
27
|
-
target
|
28
|
-
end
|
29
|
-
define_method "all_#{plural}" do
|
30
|
-
globs.map { |g| Dir.glob g }.flatten
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def self.manager_for?(name)
|
36
|
-
@@path_managers[name.to_s.underscore.singularize]
|
37
|
-
end
|
38
|
-
|
39
|
-
def self.remove_manager_for(name)
|
40
|
-
name = name.to_s
|
41
|
-
singular, plural = name.singularize, name.pluralize
|
42
|
-
Kernel.module_eval do
|
43
|
-
undef_method "all_#{plural}", "#{singular}_path"
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
# When creating with a combined managers, the first
|
48
|
-
# writable directory is returned.
|
49
|
-
def self.combine_managers(name, *managers)
|
50
|
-
# TODO: Searches several managers in sequence.
|
51
|
-
name = name.to_s.underscore
|
52
|
-
singular, plural = name.singularize, name.pluralize
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|