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.
Files changed (149) hide show
  1. data/CHANGELOG +8 -2
  2. data/EVENTS +11 -0
  3. data/Rakefile +92 -26
  4. data/adhearsion.gemspec +131 -23
  5. data/app_generators/ahn/ahn_generator.rb +21 -7
  6. data/app_generators/ahn/templates/.ahnrc +10 -4
  7. data/app_generators/ahn/templates/Rakefile +7 -2
  8. data/app_generators/ahn/templates/components/ami_remote/ami_remote.rb +15 -0
  9. data/app_generators/ahn/templates/components/disabled/HOW_TO_ENABLE +7 -0
  10. data/app_generators/ahn/templates/components/disabled/stomp_gateway/README.markdown +47 -0
  11. data/app_generators/ahn/templates/components/disabled/stomp_gateway/config.yml +12 -0
  12. data/app_generators/ahn/templates/components/disabled/stomp_gateway/stomp_gateway.rb +34 -0
  13. data/app_generators/ahn/templates/components/simon_game/{lib/simon_game.rb → simon_game.rb} +14 -19
  14. data/app_generators/ahn/templates/config/startup.rb +3 -6
  15. data/app_generators/ahn/templates/dialplan.rb +2 -3
  16. data/app_generators/ahn/templates/events.rb +32 -6
  17. data/bin/jahn +10 -0
  18. data/examples/asterisk_manager_interface/standalone.rb +51 -0
  19. data/lib/adhearsion/cli.rb +140 -23
  20. data/lib/adhearsion/component_manager/component_tester.rb +55 -0
  21. data/lib/adhearsion/component_manager/spec_framework.rb +24 -0
  22. data/lib/adhearsion/component_manager.rb +169 -238
  23. data/lib/adhearsion/events_support.rb +59 -237
  24. data/lib/adhearsion/{core_extensions → foundation}/all.rb +0 -0
  25. data/lib/adhearsion/{blank_slate.rb → foundation/blank_slate.rb} +0 -0
  26. data/lib/adhearsion/{core_extensions → foundation}/custom_daemonizer.rb +0 -0
  27. data/lib/adhearsion/foundation/event_socket.rb +203 -0
  28. data/lib/adhearsion/foundation/future_resource.rb +36 -0
  29. data/lib/adhearsion/{core_extensions → foundation}/global.rb +0 -0
  30. data/lib/adhearsion/{core_extensions → foundation}/metaprogramming.rb +0 -0
  31. data/lib/adhearsion/foundation/numeric.rb +13 -0
  32. data/lib/adhearsion/foundation/pseudo_guid.rb +10 -0
  33. data/lib/adhearsion/{core_extensions → foundation}/relationship_properties.rb +2 -0
  34. data/lib/adhearsion/foundation/string.rb +26 -0
  35. data/lib/adhearsion/foundation/synchronized_hash.rb +96 -0
  36. data/lib/adhearsion/{core_extensions → foundation}/thread_safety.rb +0 -0
  37. data/lib/adhearsion/host_definitions.rb +5 -1
  38. data/lib/adhearsion/initializer/asterisk.rb +33 -11
  39. data/lib/adhearsion/initializer/configuration.rb +58 -6
  40. data/lib/adhearsion/initializer/database.rb +3 -46
  41. data/lib/adhearsion/initializer/drb.rb +9 -3
  42. data/lib/adhearsion/initializer/freeswitch.rb +3 -3
  43. data/lib/adhearsion/initializer/rails.rb +1 -1
  44. data/lib/adhearsion/initializer.rb +213 -87
  45. data/lib/adhearsion/tasks/deprecations.rb +59 -0
  46. data/lib/adhearsion/tasks.rb +2 -1
  47. data/lib/adhearsion/version.rb +3 -3
  48. data/lib/adhearsion/voip/asterisk/agi_server.rb +6 -6
  49. data/lib/adhearsion/voip/asterisk/commands.rb +100 -2
  50. data/lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rb +1754 -0
  51. data/lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb +286 -0
  52. data/lib/adhearsion/voip/asterisk/manager_interface/ami_messages.rb +78 -0
  53. data/lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl +87 -0
  54. data/lib/adhearsion/voip/asterisk/manager_interface.rb +562 -0
  55. data/lib/adhearsion/voip/asterisk/super_manager.rb +19 -0
  56. data/lib/adhearsion/voip/asterisk.rb +1 -8
  57. data/lib/adhearsion/voip/call.rb +5 -1
  58. data/lib/adhearsion/voip/dial_plan.rb +74 -61
  59. data/lib/adhearsion/voip/dsl/dialing_dsl.rb +1 -1
  60. data/lib/adhearsion/voip/dsl/dialplan/parser.rb +2 -6
  61. data/lib/adhearsion/voip/dsl/numerical_string.rb +2 -2
  62. data/lib/adhearsion/voip/freeswitch/oes_server.rb +2 -2
  63. data/lib/adhearsion.rb +16 -11
  64. data/lib/theatre/README.markdown +64 -0
  65. data/lib/theatre/callback_definition_loader.rb +84 -0
  66. data/lib/theatre/guid.rb +23 -0
  67. data/lib/theatre/invocation.rb +121 -0
  68. data/lib/theatre/namespace_manager.rb +153 -0
  69. data/lib/theatre/version.rb +2 -0
  70. data/lib/theatre.rb +151 -0
  71. metadata +60 -147
  72. data/Manifest.txt +0 -151
  73. data/README.txt +0 -5
  74. data/ahn_generators/component/USAGE +0 -5
  75. data/ahn_generators/component/component_generator.rb +0 -57
  76. data/ahn_generators/component/templates/configuration.rb +0 -0
  77. data/ahn_generators/component/templates/lib/lib.rb.erb +0 -3
  78. data/ahn_generators/component/templates/test/test.rb.erb +0 -12
  79. data/ahn_generators/component/templates/test/test_helper.rb +0 -14
  80. data/app_generators/ahn/templates/components/simon_game/configuration.rb +0 -0
  81. data/app_generators/ahn/templates/components/simon_game/test/test_helper.rb +0 -14
  82. data/app_generators/ahn/templates/components/simon_game/test/test_simon_game.rb +0 -31
  83. data/lib/adhearsion/core_extensions/array.rb +0 -0
  84. data/lib/adhearsion/core_extensions/guid.rb +0 -5
  85. data/lib/adhearsion/core_extensions/hash.rb +0 -0
  86. data/lib/adhearsion/core_extensions/numeric.rb +0 -4
  87. data/lib/adhearsion/core_extensions/proc.rb +0 -0
  88. data/lib/adhearsion/core_extensions/pseudo_uuid.rb +0 -11
  89. data/lib/adhearsion/core_extensions/publishable.rb +0 -73
  90. data/lib/adhearsion/core_extensions/string.rb +0 -26
  91. data/lib/adhearsion/core_extensions/thread.rb +0 -13
  92. data/lib/adhearsion/core_extensions/time.rb +0 -0
  93. data/lib/adhearsion/distributed/gateways/dbus_gateway.rb +0 -0
  94. data/lib/adhearsion/distributed/gateways/osa_gateway.rb +0 -0
  95. data/lib/adhearsion/distributed/gateways/rest_gateway.rb +0 -9
  96. data/lib/adhearsion/distributed/gateways/soap_gateway.rb +0 -9
  97. data/lib/adhearsion/distributed/gateways/xmlrpc_gateway.rb +0 -9
  98. data/lib/adhearsion/distributed/peer_finder.rb +0 -0
  99. data/lib/adhearsion/distributed/remote_cli.rb +0 -0
  100. data/lib/adhearsion/hooks.rb +0 -57
  101. data/lib/adhearsion/initializer/paths.rb +0 -55
  102. data/lib/adhearsion/voip/asterisk/ami/actions.rb +0 -238
  103. data/lib/adhearsion/voip/asterisk/ami/machine.rb +0 -871
  104. data/lib/adhearsion/voip/asterisk/ami/machine.rl +0 -109
  105. data/lib/adhearsion/voip/asterisk/ami/parser.rb +0 -262
  106. data/lib/adhearsion/voip/asterisk/ami.rb +0 -147
  107. data/spec/fixtures/dialplan.rb +0 -3
  108. data/spec/initializer/test_configuration.rb +0 -267
  109. data/spec/initializer/test_loading.rb +0 -162
  110. data/spec/initializer/test_paths.rb +0 -43
  111. data/spec/sample.rb +0 -9
  112. data/spec/silence.rb +0 -10
  113. data/spec/test_ahn_command.rb +0 -149
  114. data/spec/test_code_quality.rb +0 -87
  115. data/spec/test_component_manager.rb +0 -97
  116. data/spec/test_constants.rb +0 -8
  117. data/spec/test_drb.rb +0 -104
  118. data/spec/test_events.rb +0 -136
  119. data/spec/test_helper.rb +0 -106
  120. data/spec/test_hooks.rb +0 -15
  121. data/spec/test_host_definitions.rb +0 -79
  122. data/spec/test_initialization.rb +0 -124
  123. data/spec/test_logging.rb +0 -80
  124. data/spec/test_relationship_properties.rb +0 -54
  125. data/spec/voip/asterisk/ami_response_definitions.rb +0 -23
  126. data/spec/voip/asterisk/config_file_generators/test_agents.rb +0 -253
  127. data/spec/voip/asterisk/config_file_generators/test_queues.rb +0 -325
  128. data/spec/voip/asterisk/config_file_generators/test_voicemail.rb +0 -306
  129. data/spec/voip/asterisk/menu_command/test_calculated_match.rb +0 -111
  130. data/spec/voip/asterisk/menu_command/test_matchers.rb +0 -98
  131. data/spec/voip/asterisk/mock_ami_server.rb +0 -176
  132. data/spec/voip/asterisk/test_agi_server.rb +0 -453
  133. data/spec/voip/asterisk/test_ami.rb +0 -227
  134. data/spec/voip/asterisk/test_commands.rb +0 -2006
  135. data/spec/voip/asterisk/test_config_manager.rb +0 -129
  136. data/spec/voip/dsl/dispatcher_spec_helper.rb +0 -45
  137. data/spec/voip/dsl/test_dialing_dsl.rb +0 -268
  138. data/spec/voip/dsl/test_dispatcher.rb +0 -82
  139. data/spec/voip/dsl/test_parser.rb +0 -87
  140. data/spec/voip/freeswitch/test_basic_connection_manager.rb +0 -39
  141. data/spec/voip/freeswitch/test_inbound_connection_manager.rb +0 -39
  142. data/spec/voip/freeswitch/test_oes_server.rb +0 -9
  143. data/spec/voip/test_call_routing.rb +0 -127
  144. data/spec/voip/test_dialplan_manager.rb +0 -442
  145. data/spec/voip/test_numerical_string.rb +0 -48
  146. data/spec/voip/test_phone_number.rb +0 -36
  147. data/test/test_ahn_generator.rb +0 -59
  148. data/test/test_component_generator.rb +0 -52
  149. 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,5 +0,0 @@
1
- Description:
2
-
3
-
4
- Usage:
5
-
@@ -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,3 +0,0 @@
1
- class <%= class_name %>
2
-
3
- end
@@ -1,12 +0,0 @@
1
- require File.dirname(__FILE__) + "/test_helper"
2
-
3
- class Test<%= class_name %> < Test::Unit::TestCase
4
-
5
- def setup
6
- @<%= name %> = <%= class_name %>.new
7
- end
8
-
9
- def test_truth
10
-
11
- end
12
- end
@@ -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,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
@@ -1,5 +0,0 @@
1
- module Kernel
2
- def new_guid(args)
3
-
4
- end
5
- end
File without changes
@@ -1,4 +0,0 @@
1
- class Numeric
2
- def digit() self end
3
- def digits() self end
4
- end
File without changes
@@ -1,11 +0,0 @@
1
- module PseudoUuidGenerator
2
- def uuid
3
- returning Array.new(32) { String.random_char } do |string|
4
- [8, 13, 18, 23].each do |index|
5
- string.insert index, '-'
6
- end
7
- end.join
8
- end
9
- end
10
-
11
- include PseudoUuidGenerator
@@ -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
@@ -1,13 +0,0 @@
1
- class Thread
2
- class << self
3
-
4
- # Syntactically sugar Thread.current since it's used so much.
5
- #
6
- # Allows:
7
- # Thread.me.extend DSL::Dialplan::ThreadMixin
8
- # Thread.my.call.io = io
9
-
10
- alias me current
11
- alias my current
12
- end
13
- end
File without changes
File without changes
File without changes
@@ -1,9 +0,0 @@
1
- module Adhearsion
2
- module Distributed
3
- module Gateway
4
- module REST
5
-
6
- end
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- module Adhearsion
2
- module Distributed
3
- module Gateway
4
- module SOAP
5
-
6
- end
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- module Adhearsion
2
- module Distributed
3
- module Gateway
4
- module XMLRPC
5
-
6
- end
7
- end
8
- end
9
- end
File without changes
File without changes
@@ -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