cronus 0.0.1
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 +1 -0
- data/Gemfile +8 -0
- data/Gemfile.lock +93 -0
- data/LICENSE +21 -0
- data/Manifest +25 -0
- data/README.rdoc +0 -0
- data/Rakefile +33 -0
- data/assets/scripts/coffee/cronus/multi_signal_relay.coffee +17 -0
- data/assets/scripts/coffee/cronus/signal.coffee +50 -0
- data/assets/scripts/coffee/cronus/signal_relay.coffee +16 -0
- data/bin/cronus.js +8 -0
- data/config/assets.rb +7 -0
- data/cronus.gemspec +36 -0
- data/lib/cronus.rb +1 -0
- data/lib/cronus/symbols.rb +11 -0
- data/spec/jasmine.yml +44 -0
- data/spec/runner.html +59 -0
- data/spec/support/classes.coffee +0 -0
- data/spec/support/helpers.coffee +22 -0
- data/spec/support/mocks.coffee +0 -0
- data/spec/support/objects.coffee +0 -0
- data/spec/support/requirements.coffee +0 -0
- data/spec/tests/multisignal_relay_spec.coffee +28 -0
- data/spec/tests/signal_relay_spec.coffee +21 -0
- data/spec/tests/signal_spec.coffee +60 -0
- metadata +115 -0
data/CHANGELOG
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
v0.0.1 new library
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
GIT
|
2
|
+
remote: git://github.com/jpeace/keystone.git
|
3
|
+
revision: 3680c30328bf3b93af7c7f1b1bad685cbaec35dd
|
4
|
+
specs:
|
5
|
+
keystone (0.0.1)
|
6
|
+
closure-compiler
|
7
|
+
coffee-script
|
8
|
+
sass
|
9
|
+
sinatra
|
10
|
+
|
11
|
+
GEM
|
12
|
+
remote: http://rubygems.org/
|
13
|
+
specs:
|
14
|
+
allison (2.0.3)
|
15
|
+
childprocess (0.3.9)
|
16
|
+
ffi (~> 1.0, >= 1.0.11)
|
17
|
+
closure-compiler (1.1.8)
|
18
|
+
coffee-script (2.2.0)
|
19
|
+
coffee-script-source
|
20
|
+
execjs
|
21
|
+
coffee-script-source (1.6.2)
|
22
|
+
diff-lcs (1.2.4)
|
23
|
+
echoe (4.6.3)
|
24
|
+
allison (>= 2.0.3)
|
25
|
+
gemcutter (>= 0.7.0)
|
26
|
+
rake (>= 0.9.2)
|
27
|
+
rdoc (>= 3.6.1)
|
28
|
+
rubyforge (>= 2.0.4)
|
29
|
+
execjs (1.4.0)
|
30
|
+
multi_json (~> 1.0)
|
31
|
+
ffi (1.8.1)
|
32
|
+
gemcutter (0.7.1)
|
33
|
+
hike (1.2.2)
|
34
|
+
jasmine (1.3.2)
|
35
|
+
jasmine-core (~> 1.3.1)
|
36
|
+
rack (~> 1.0)
|
37
|
+
rspec (>= 1.3.1)
|
38
|
+
selenium-webdriver (>= 0.1.3)
|
39
|
+
jasmine-core (1.3.1)
|
40
|
+
jasmine-headless-webkit (0.8.4)
|
41
|
+
coffee-script
|
42
|
+
jasmine-core (~> 1.1)
|
43
|
+
multi_json
|
44
|
+
rainbow
|
45
|
+
sprockets (~> 2)
|
46
|
+
json (1.7.7)
|
47
|
+
json_pure (1.7.7)
|
48
|
+
multi_json (1.7.2)
|
49
|
+
rack (1.5.2)
|
50
|
+
rack-protection (1.5.0)
|
51
|
+
rack
|
52
|
+
rainbow (1.1.4)
|
53
|
+
rake (10.0.4)
|
54
|
+
rdoc (4.0.1)
|
55
|
+
json (~> 1.4)
|
56
|
+
rspec (2.13.0)
|
57
|
+
rspec-core (~> 2.13.0)
|
58
|
+
rspec-expectations (~> 2.13.0)
|
59
|
+
rspec-mocks (~> 2.13.0)
|
60
|
+
rspec-core (2.13.1)
|
61
|
+
rspec-expectations (2.13.0)
|
62
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
63
|
+
rspec-mocks (2.13.1)
|
64
|
+
rubyforge (2.0.4)
|
65
|
+
json_pure (>= 1.1.7)
|
66
|
+
rubyzip (0.9.9)
|
67
|
+
sass (3.2.8)
|
68
|
+
selenium-webdriver (2.32.1)
|
69
|
+
childprocess (>= 0.2.5)
|
70
|
+
multi_json (~> 1.0)
|
71
|
+
rubyzip
|
72
|
+
websocket (~> 1.0.4)
|
73
|
+
sinatra (1.4.2)
|
74
|
+
rack (~> 1.5, >= 1.5.2)
|
75
|
+
rack-protection (~> 1.4)
|
76
|
+
tilt (~> 1.3, >= 1.3.4)
|
77
|
+
sprockets (2.9.3)
|
78
|
+
hike (~> 1.2)
|
79
|
+
multi_json (~> 1.0)
|
80
|
+
rack (~> 1.0)
|
81
|
+
tilt (~> 1.1, != 1.3.0)
|
82
|
+
tilt (1.3.7)
|
83
|
+
websocket (1.0.7)
|
84
|
+
|
85
|
+
PLATFORMS
|
86
|
+
ruby
|
87
|
+
|
88
|
+
DEPENDENCIES
|
89
|
+
echoe
|
90
|
+
jasmine
|
91
|
+
jasmine-headless-webkit
|
92
|
+
keystone!
|
93
|
+
rake
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2013 Tim Shelburne
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/Manifest
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
CHANGELOG
|
2
|
+
Gemfile
|
3
|
+
Gemfile.lock
|
4
|
+
LICENSE
|
5
|
+
Manifest
|
6
|
+
README.rdoc
|
7
|
+
Rakefile
|
8
|
+
assets/scripts/coffee/cronus/multi_signal_relay.coffee
|
9
|
+
assets/scripts/coffee/cronus/signal.coffee
|
10
|
+
assets/scripts/coffee/cronus/signal_relay.coffee
|
11
|
+
bin/cronus.js
|
12
|
+
config/assets.rb
|
13
|
+
cronus.gemspec
|
14
|
+
lib/cronus.rb
|
15
|
+
lib/cronus/symbols.rb
|
16
|
+
spec/jasmine.yml
|
17
|
+
spec/runner.html
|
18
|
+
spec/support/classes.coffee
|
19
|
+
spec/support/helpers.coffee
|
20
|
+
spec/support/mocks.coffee
|
21
|
+
spec/support/objects.coffee
|
22
|
+
spec/support/requirements.coffee
|
23
|
+
spec/tests/multisignal_relay_spec.coffee
|
24
|
+
spec/tests/signal_relay_spec.coffee
|
25
|
+
spec/tests/signal_spec.coffee
|
data/README.rdoc
ADDED
File without changes
|
data/Rakefile
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'jasmine-headless-webkit'
|
3
|
+
require 'keystone'
|
4
|
+
require 'echoe'
|
5
|
+
|
6
|
+
Echoe.new("cronus") do |p|
|
7
|
+
p.author = "Tim Shelburne"
|
8
|
+
p.email = "shelburt02@gmail.com"
|
9
|
+
p.url = "https://github.com/tshelburne/cronus-js"
|
10
|
+
|
11
|
+
p.ignore_pattern = FileList[".gitignore"]
|
12
|
+
p.development_dependencies = [ "jasmine", "jasmine-headless-webkit" ]
|
13
|
+
end
|
14
|
+
|
15
|
+
desc "Default"
|
16
|
+
task default: :'test:jasmine'
|
17
|
+
|
18
|
+
namespace :test do
|
19
|
+
|
20
|
+
desc "Run Jasmine tests"
|
21
|
+
Jasmine::Headless::Task.new(jasmine: :assets) do |t|
|
22
|
+
t.colors = true
|
23
|
+
t.keep_on_error = true
|
24
|
+
t.jasmine_config = './spec/jasmine.yml'
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
desc "Build assets"
|
30
|
+
Keystone::RakeTask.new :assets do |t|
|
31
|
+
t.config_file = "config/assets.rb"
|
32
|
+
t.output_path = 'bin'
|
33
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
Signal = require "cronus/signal"
|
2
|
+
|
3
|
+
#
|
4
|
+
# @author - Tim Shelburne <tim@musiconelive.com>
|
5
|
+
#
|
6
|
+
# can relay messages coming from multiple signals
|
7
|
+
#
|
8
|
+
class MultiSignalRelay extends Signal
|
9
|
+
constructor: (signals)->
|
10
|
+
super()
|
11
|
+
for signal in signals
|
12
|
+
signal.add(@dispatch)
|
13
|
+
|
14
|
+
applyListeners: (rest)->
|
15
|
+
listener.apply(listener, rest) for listener in @listeners
|
16
|
+
|
17
|
+
return MultiSignalRelay
|
@@ -0,0 +1,50 @@
|
|
1
|
+
#
|
2
|
+
# @author - Tim Shelburne <tim@musiconelive.com>
|
3
|
+
#
|
4
|
+
# a basic implementation of a signal dispatcher to mimic AS3-Signals
|
5
|
+
#
|
6
|
+
class Signal
|
7
|
+
constructor: ->
|
8
|
+
@isApplyingListeners = false
|
9
|
+
@listeners = []
|
10
|
+
@onceListeners = []
|
11
|
+
@removeCache = []
|
12
|
+
|
13
|
+
add: (listener)->
|
14
|
+
@listeners.push listener
|
15
|
+
|
16
|
+
addOnce: (listener)->
|
17
|
+
@onceListeners.push listener
|
18
|
+
@add(listener)
|
19
|
+
|
20
|
+
remove: (listener)->
|
21
|
+
if @isApplyingListeners
|
22
|
+
@removeCache.push listener
|
23
|
+
else
|
24
|
+
@listeners.splice(@listeners.indexOf(listener), 1) unless @listeners.indexOf(listener) is -1
|
25
|
+
|
26
|
+
removeAll: ->
|
27
|
+
@listeners = []
|
28
|
+
|
29
|
+
numListeners: ->
|
30
|
+
@listeners.length
|
31
|
+
|
32
|
+
dispatch: (rest...)=>
|
33
|
+
@isApplyingListeners = true
|
34
|
+
@applyListeners(rest)
|
35
|
+
@removeOnceListeners()
|
36
|
+
@isApplyingListeners = false
|
37
|
+
@clearRemoveCache()
|
38
|
+
|
39
|
+
applyListeners: (rest)->
|
40
|
+
listener.apply(listener, rest) for listener in @listeners
|
41
|
+
|
42
|
+
removeOnceListeners: ->
|
43
|
+
@remove listener for listener in @onceListeners
|
44
|
+
@onceListeners = []
|
45
|
+
|
46
|
+
clearRemoveCache: ->
|
47
|
+
@remove(listener) for listener in @removeCache
|
48
|
+
@removeCache = []
|
49
|
+
|
50
|
+
return Signal
|
@@ -0,0 +1,16 @@
|
|
1
|
+
Signal = require "cronus/signal"
|
2
|
+
|
3
|
+
#
|
4
|
+
# @author - Tim Shelburne <tim@musiconelive.com>
|
5
|
+
#
|
6
|
+
# relays a dispatched signal
|
7
|
+
#
|
8
|
+
class SignalRelay extends Signal
|
9
|
+
constructor: (signal)->
|
10
|
+
super()
|
11
|
+
signal.add(@dispatch)
|
12
|
+
|
13
|
+
applyListeners: (rest)->
|
14
|
+
listener.apply(listener, rest) for listener in @listeners
|
15
|
+
|
16
|
+
return SignalRelay
|
data/bin/cronus.js
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
(function(){var f=window.modules||[],b=null;f.cronus__multi_signal_relay=function(){if(null===b){var f={}.hasOwnProperty,a=require("cronus/signal"),e=function(d){var a,c,b;e.__super__.constructor.call(this);c=0;for(b=d.length;c<b;c++)a=d[c],a.add(this.dispatch)},d=e,g=function(){this.constructor=d},c;for(c in a)f.call(a,c)&&(d[c]=a[c]);g.prototype=a.prototype;d.prototype=new g;d.__super__=a.prototype;e.prototype.applyListeners=function(e){var d,a,c,b,g;b=this.listeners;g=[];a=0;for(c=b.length;a<c;a++)d=
|
2
|
+
b[a],g.push(d.apply(d,e));return g};b=e}return b};window.modules=f})();
|
3
|
+
(function(){var f=window.modules||[],b=null;f.cronus__signal=function(){if(null===b){var f=[].slice,a=function(){var e=this.dispatch,d=this;this.dispatch=function(){return e.apply(d,arguments)};this.isApplyingListeners=!1;this.listeners=[];this.onceListeners=[];this.removeCache=[]};a.prototype.add=function(e){return this.listeners.push(e)};a.prototype.addOnce=function(e){this.onceListeners.push(e);return this.add(e)};a.prototype.remove=function(e){if(this.isApplyingListeners)return this.removeCache.push(e);
|
4
|
+
if(-1!==this.listeners.indexOf(e))return this.listeners.splice(this.listeners.indexOf(e),1)};a.prototype.removeAll=function(){return this.listeners=[]};a.prototype.numListeners=function(){return this.listeners.length};a.prototype.dispatch=function(){var e;e=1<=arguments.length?f.call(arguments,0):[];this.isApplyingListeners=!0;this.applyListeners(e);this.removeOnceListeners();this.isApplyingListeners=!1;return this.clearRemoveCache()};a.prototype.applyListeners=function(e){var d,a,c,b,f;b=this.listeners;
|
5
|
+
f=[];a=0;for(c=b.length;a<c;a++)d=b[a],f.push(d.apply(d,e));return f};a.prototype.removeOnceListeners=function(){var a,d,b,c;c=this.onceListeners;d=0;for(b=c.length;d<b;d++)a=c[d],this.remove(a);return this.onceListeners=[]};a.prototype.clearRemoveCache=function(){var a,b,f,c;c=this.removeCache;b=0;for(f=c.length;b<f;b++)a=c[b],this.remove(a);return this.removeCache=[]};b=a}return b};window.modules=f})();
|
6
|
+
(function(){var f=window.modules||[],b=null;f.cronus__signal_relay=function(){if(null===b){var f={}.hasOwnProperty,a=require("cronus/signal"),e=function(a){e.__super__.constructor.call(this);a.add(this.dispatch)},d=e,g=function(){this.constructor=d},c;for(c in a)f.call(a,c)&&(d[c]=a[c]);g.prototype=a.prototype;d.prototype=new g;d.__super__=a.prototype;e.prototype.applyListeners=function(a){var b,c,e,d,f;d=this.listeners;f=[];c=0;for(e=d.length;c<e;c++)b=d[c],f.push(b.apply(b,a));return f};b=e}return b};
|
7
|
+
window.modules=f})();(function(){var f=window.modules||[];window.require=function(b){b=b.replace(/\//g,"__");-1===b.indexOf("__")&&(b="__"+b);return null===f[b]?null:f[b]()}})();
|
8
|
+
|
data/config/assets.rb
ADDED
data/cronus.gemspec
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = "cronus"
|
5
|
+
s.version = "0.0.1"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Tim Shelburne"]
|
9
|
+
s.date = "2013-04-29"
|
10
|
+
s.description = "javascript signals engine (inspired by Robert Penner's actionscript library Signals)"
|
11
|
+
s.email = "shelburt02@gmail.com"
|
12
|
+
s.executables = ["cronus.js"]
|
13
|
+
s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README.rdoc", "bin/cronus.js", "lib/cronus.rb", "lib/cronus/symbols.rb"]
|
14
|
+
s.files = ["CHANGELOG", "Gemfile", "Gemfile.lock", "LICENSE", "Manifest", "README.rdoc", "Rakefile", "assets/scripts/coffee/cronus/multi_signal_relay.coffee", "assets/scripts/coffee/cronus/signal.coffee", "assets/scripts/coffee/cronus/signal_relay.coffee", "bin/cronus.js", "config/assets.rb", "cronus.gemspec", "lib/cronus.rb", "lib/cronus/symbols.rb", "spec/jasmine.yml", "spec/runner.html", "spec/support/classes.coffee", "spec/support/helpers.coffee", "spec/support/mocks.coffee", "spec/support/objects.coffee", "spec/support/requirements.coffee", "spec/tests/multisignal_relay_spec.coffee", "spec/tests/signal_relay_spec.coffee", "spec/tests/signal_spec.coffee"]
|
15
|
+
s.homepage = "https://github.com/tshelburne/cronus-js"
|
16
|
+
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Cronus", "--main", "README.rdoc"]
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
s.rubyforge_project = "cronus"
|
19
|
+
s.rubygems_version = "1.8.24"
|
20
|
+
s.summary = ""
|
21
|
+
|
22
|
+
if s.respond_to? :specification_version then
|
23
|
+
s.specification_version = 3
|
24
|
+
|
25
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
26
|
+
s.add_development_dependency(%q<jasmine>, [">= 0"])
|
27
|
+
s.add_development_dependency(%q<jasmine-headless-webkit>, [">= 0"])
|
28
|
+
else
|
29
|
+
s.add_dependency(%q<jasmine>, [">= 0"])
|
30
|
+
s.add_dependency(%q<jasmine-headless-webkit>, [">= 0"])
|
31
|
+
end
|
32
|
+
else
|
33
|
+
s.add_dependency(%q<jasmine>, [">= 0"])
|
34
|
+
s.add_dependency(%q<jasmine-headless-webkit>, [">= 0"])
|
35
|
+
end
|
36
|
+
end
|
data/lib/cronus.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "cronus/symbols"
|
data/spec/jasmine.yml
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
runner_output: "spec/runner.html"
|
2
|
+
|
3
|
+
# src_files
|
4
|
+
#
|
5
|
+
# Return an array of filepaths relative to src_dir to include before jasmine specs.
|
6
|
+
# Default: []
|
7
|
+
src_files:
|
8
|
+
- bin/cronus.js
|
9
|
+
|
10
|
+
# stylesheets
|
11
|
+
#
|
12
|
+
# Return an array of stylesheet filepaths relative to src_dir to include before jasmine specs.
|
13
|
+
# Default: []
|
14
|
+
stylesheets:
|
15
|
+
|
16
|
+
# helpers
|
17
|
+
#
|
18
|
+
# Return an array of filepaths relative to spec_dir to include before jasmine specs.
|
19
|
+
# Default: ["helpers/**/*.js"]
|
20
|
+
helpers:
|
21
|
+
- support/requirements.coffee
|
22
|
+
- support/helpers.coffee
|
23
|
+
- support/objects.coffee
|
24
|
+
- support/classes.coffee
|
25
|
+
- support/mocks.coffee
|
26
|
+
|
27
|
+
# spec_files
|
28
|
+
#
|
29
|
+
# Return an array of filepaths relative to spec_dir to include.
|
30
|
+
# Default: ["**/*[sS]pec.js"]
|
31
|
+
spec_files:
|
32
|
+
- ./**/*_spec.coffee
|
33
|
+
|
34
|
+
# src_dir
|
35
|
+
#
|
36
|
+
# Source directory path. Your src_files must be returned relative to this path. Will use root if left blank.
|
37
|
+
# Default: project root
|
38
|
+
src_dir:
|
39
|
+
|
40
|
+
# spec_dir
|
41
|
+
#
|
42
|
+
# Spec directory path. Your spec_files must be returned relative to this path.
|
43
|
+
# Default: spec/javascripts
|
44
|
+
spec_dir: spec
|
data/spec/runner.html
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta content="text/html;charset=UTF-8" http-equiv="Content-Type"/>
|
5
|
+
<title>Jasmine Test Runner - Generated by jasmine-headless-webkit</title>
|
6
|
+
<script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/cronus/vendor/ruby/1.9.1/gems/jasmine-headless-webkit-0.8.4/vendor/assets/javascripts/prolog.js"></script>
|
7
|
+
<script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/cronus/vendor/ruby/1.9.1/gems/jasmine-core-1.3.1/lib/jasmine-core/jasmine.js"></script>
|
8
|
+
<script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/cronus/vendor/ruby/1.9.1/gems/jasmine-core-1.3.1/lib/jasmine-core/jasmine-html.js"></script>
|
9
|
+
<link rel="stylesheet" href="/Users/tshelburne/Sites/dontlook/jslib/cronus/vendor/ruby/1.9.1/gems/jasmine-core-1.3.1/lib/jasmine-core/jasmine.css" type="text/css" />
|
10
|
+
<script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/cronus/vendor/ruby/1.9.1/gems/jasmine-headless-webkit-0.8.4/vendor/assets/javascripts/jasmine-extensions.js"></script>
|
11
|
+
<script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/cronus/vendor/ruby/1.9.1/gems/jasmine-headless-webkit-0.8.4/vendor/assets/javascripts/intense.js"></script>
|
12
|
+
<script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/cronus/vendor/ruby/1.9.1/gems/jasmine-headless-webkit-0.8.4/vendor/assets/javascripts/headless_reporter_result.js"></script>
|
13
|
+
<script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/cronus/vendor/ruby/1.9.1/gems/jasmine-headless-webkit-0.8.4/vendor/assets/javascripts/jasmine.HeadlessConsoleReporter.js"></script>
|
14
|
+
<script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/cronus/vendor/ruby/1.9.1/gems/jasmine-headless-webkit-0.8.4/vendor/assets/javascripts/jsDump.js"></script>
|
15
|
+
<script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/cronus/vendor/ruby/1.9.1/gems/jasmine-headless-webkit-0.8.4/vendor/assets/javascripts/beautify-html.js"></script>
|
16
|
+
<script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/cronus/bin/cronus.js"></script>
|
17
|
+
<script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/cronus/.jhw-cache/coffee_script/Users/tshelburne/Sites/dontlook/jslib/cronus/spec/tests/signal_spec.coffee.js"></script>
|
18
|
+
<script type="text/javascript">window.CSTF['signal_spec.coffee.js'] = '/Users/tshelburne/Sites/dontlook/jslib/cronus/spec/tests/signal_spec.coffee';</script>
|
19
|
+
<script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/cronus/.jhw-cache/coffee_script/Users/tshelburne/Sites/dontlook/jslib/cronus/spec/tests/signal_relay_spec.coffee.js"></script>
|
20
|
+
<script type="text/javascript">window.CSTF['signal_relay_spec.coffee.js'] = '/Users/tshelburne/Sites/dontlook/jslib/cronus/spec/tests/signal_relay_spec.coffee';</script>
|
21
|
+
<script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/cronus/.jhw-cache/coffee_script/Users/tshelburne/Sites/dontlook/jslib/cronus/spec/tests/multisignal_relay_spec.coffee.js"></script>
|
22
|
+
<script type="text/javascript">window.CSTF['multisignal_relay_spec.coffee.js'] = '/Users/tshelburne/Sites/dontlook/jslib/cronus/spec/tests/multisignal_relay_spec.coffee';</script>
|
23
|
+
<script type="text/javascript">
|
24
|
+
if (window.JHW) { HeadlessReporterResult.specLineNumbers = {"/Users/tshelburne/Sites/dontlook/jslib/cronus/spec/tests/signal_spec.coffee":{"Signal":[7],"can add listeners":[13],"can add listeners to be run only once":[18],"can remove listeners":[25],"can schedule listeners to be removed if dispatch is being run":[30],"can get the number of current listeners":[40],"can dispatch a call to all listeners":[44],"can dispatch a call to all listeners with arguments":[53]},"/Users/tshelburne/Sites/dontlook/jslib/cronus/spec/tests/signal_relay_spec.coffee":{"SignalRelay":[9],"can relay a signal":[17]},"/Users/tshelburne/Sites/dontlook/jslib/cronus/spec/tests/multisignal_relay_spec.coffee":{"MultiSignalRelay":[9],"can relay a message from one of multiple signals":[19]}}; }
|
25
|
+
</script>
|
26
|
+
</head>
|
27
|
+
<body>
|
28
|
+
<script type="text/javascript">
|
29
|
+
jasmine.getEnv().console = {
|
30
|
+
log: function(msg) { JHW.stdout.puts(msg) }
|
31
|
+
}
|
32
|
+
|
33
|
+
window._onload = window.onload;
|
34
|
+
|
35
|
+
window.onload = function() {
|
36
|
+
if (window._onload && (window._onload != window.onload)) {
|
37
|
+
window._onload();
|
38
|
+
}
|
39
|
+
|
40
|
+
if (window.JHW) {
|
41
|
+
jasmine.getEnv().addReporter(new jasmine.HeadlessConsoleReporter());
|
42
|
+
} else {
|
43
|
+
types = [ 'HtmlReporter', 'TrivialReporter' ];
|
44
|
+
|
45
|
+
for (var i = 0, j = types.length; i < j; ++i) {
|
46
|
+
var type = jasmine[types[i]]
|
47
|
+
if (type) {
|
48
|
+
jasmine.getEnv().addReporter(new type());
|
49
|
+
break;
|
50
|
+
}
|
51
|
+
}
|
52
|
+
}
|
53
|
+
|
54
|
+
jasmine.getEnv().execute();
|
55
|
+
}
|
56
|
+
</script>
|
57
|
+
</body>
|
58
|
+
</html>
|
59
|
+
|
File without changes
|
@@ -0,0 +1,22 @@
|
|
1
|
+
(exports ? this).globalize = (fxn, name=null)=>
|
2
|
+
functionName = if name is null then fxn.name else name
|
3
|
+
(exports ? this)[functionName] = fxn
|
4
|
+
|
5
|
+
|
6
|
+
# MOCKING #
|
7
|
+
(exports ? this).mocks = {}
|
8
|
+
|
9
|
+
(exports ? this).addMock = (name, obj)=>
|
10
|
+
(exports ? this).mocks[name] = obj
|
11
|
+
|
12
|
+
|
13
|
+
# RUNTIME PATCHING #
|
14
|
+
(exports ? this).patches = {}
|
15
|
+
|
16
|
+
(exports ? this).patch = (method, patch)=>
|
17
|
+
(exports ? this).patches[method.name] = method
|
18
|
+
method = patch
|
19
|
+
|
20
|
+
(exports ? this).restore = (method)=>
|
21
|
+
method = (exports ? this).patches[method.name]
|
22
|
+
delete (exports ? this).patches[method.name]
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,28 @@
|
|
1
|
+
Signal = require "cronus/signal"
|
2
|
+
MultiSignalRelay = require "cronus/multi_signal_relay"
|
3
|
+
|
4
|
+
fxns =
|
5
|
+
fxn1 : (arg1 = null)-> return arg1
|
6
|
+
fxn2 : (arg1 = null)-> return arg1
|
7
|
+
|
8
|
+
|
9
|
+
describe "MultiSignalRelay", ->
|
10
|
+
signalOne = null
|
11
|
+
signalTwo = null
|
12
|
+
multiSignalRelay = null
|
13
|
+
|
14
|
+
beforeEach ->
|
15
|
+
signalOne = new Signal()
|
16
|
+
signalTwo = new Signal()
|
17
|
+
multiSignalRelay = new MultiSignalRelay([ signalOne, signalTwo ])
|
18
|
+
|
19
|
+
it "can relay a message from one of multiple signals", ->
|
20
|
+
spyOn(fxns, "fxn1")
|
21
|
+
spyOn(fxns, "fxn2")
|
22
|
+
multiSignalRelay.add(fxns.fxn1)
|
23
|
+
signalOne.dispatch("hello")
|
24
|
+
expect(fxns.fxn1).toHaveBeenCalledWith("hello")
|
25
|
+
multiSignalRelay.add(fxns.fxn2)
|
26
|
+
signalTwo.dispatch("goodbye")
|
27
|
+
expect(fxns.fxn1).toHaveBeenCalledWith("goodbye")
|
28
|
+
expect(fxns.fxn2).toHaveBeenCalledWith("goodbye")
|
@@ -0,0 +1,21 @@
|
|
1
|
+
Signal = require "cronus/signal"
|
2
|
+
SignalRelay = require "cronus/signal_relay"
|
3
|
+
|
4
|
+
fxns =
|
5
|
+
fxn1 : (arg1 = null)-> return arg1
|
6
|
+
fxn2 : (arg1 = null)-> return arg1
|
7
|
+
|
8
|
+
|
9
|
+
describe "SignalRelay", ->
|
10
|
+
signal = null
|
11
|
+
signalRelay = null
|
12
|
+
|
13
|
+
beforeEach ->
|
14
|
+
signal = new Signal()
|
15
|
+
signalRelay = new SignalRelay(signal)
|
16
|
+
|
17
|
+
it "can relay a signal", ->
|
18
|
+
spyOn(fxns, "fxn1")
|
19
|
+
signalRelay.add(fxns.fxn1)
|
20
|
+
signal.dispatch("hello")
|
21
|
+
expect(fxns.fxn1).toHaveBeenCalledWith("hello")
|
@@ -0,0 +1,60 @@
|
|
1
|
+
Signal = require "cronus/signal"
|
2
|
+
|
3
|
+
fxns =
|
4
|
+
fxn1 : (arg1 = null)-> return arg1
|
5
|
+
fxn2 : (arg1 = null)-> return arg1
|
6
|
+
|
7
|
+
describe "Signal", ->
|
8
|
+
signal = null
|
9
|
+
|
10
|
+
beforeEach ->
|
11
|
+
signal = new Signal()
|
12
|
+
|
13
|
+
it "can add listeners", ->
|
14
|
+
signal.add(fxns.fxn1)
|
15
|
+
expect(signal.listeners.length).toEqual 1
|
16
|
+
expect(signal.listeners[0]).toEqual fxns.fxn1
|
17
|
+
|
18
|
+
it "can add listeners to be run only once", ->
|
19
|
+
signal.add(fxns.fxn1)
|
20
|
+
signal.addOnce(fxns.fxn2)
|
21
|
+
expect(signal.listeners.length).toEqual 2
|
22
|
+
signal.dispatch()
|
23
|
+
expect(signal.listeners.length).toEqual 1
|
24
|
+
|
25
|
+
it "can remove listeners", ->
|
26
|
+
signal.add(fxns.fxn1)
|
27
|
+
signal.remove(fxns.fxn1)
|
28
|
+
expect(signal.listeners.length).toEqual 0
|
29
|
+
|
30
|
+
it "can schedule listeners to be removed if dispatch is being run", ->
|
31
|
+
# this prevents getting "undefined" listeners when a listener is removed before dispatch is finished
|
32
|
+
selfRemover = ->
|
33
|
+
signal.remove(selfRemover)
|
34
|
+
expect(signal.listeners.length).toEqual 2
|
35
|
+
signal.add(selfRemover)
|
36
|
+
signal.add(fxns.fxn1)
|
37
|
+
signal.dispatch()
|
38
|
+
expect(signal.listeners.length).toEqual 1
|
39
|
+
|
40
|
+
it "can get the number of current listeners", ->
|
41
|
+
signal.add(fxns.fxn1)
|
42
|
+
expect(signal.numListeners()).toEqual 1
|
43
|
+
|
44
|
+
it "can dispatch a call to all listeners", ->
|
45
|
+
spyOn(fxns, "fxn1")
|
46
|
+
spyOn(fxns, "fxn2")
|
47
|
+
signal.add(fxns.fxn1)
|
48
|
+
signal.add(fxns.fxn2)
|
49
|
+
signal.dispatch()
|
50
|
+
expect(fxns.fxn1).toHaveBeenCalled()
|
51
|
+
expect(fxns.fxn2).toHaveBeenCalled()
|
52
|
+
|
53
|
+
it "can dispatch a call to all listeners with arguments", ->
|
54
|
+
spyOn(fxns, "fxn1")
|
55
|
+
spyOn(fxns, "fxn2")
|
56
|
+
signal.add(fxns.fxn1)
|
57
|
+
signal.add(fxns.fxn2)
|
58
|
+
signal.dispatch("hello")
|
59
|
+
expect(fxns.fxn1).toHaveBeenCalledWith("hello")
|
60
|
+
expect(fxns.fxn2).toHaveBeenCalledWith("hello")
|
metadata
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cronus
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Tim Shelburne
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-04-29 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: jasmine
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: jasmine-headless-webkit
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
description: javascript signals engine (inspired by Robert Penner's actionscript library
|
47
|
+
Signals)
|
48
|
+
email: shelburt02@gmail.com
|
49
|
+
executables:
|
50
|
+
- cronus.js
|
51
|
+
extensions: []
|
52
|
+
extra_rdoc_files:
|
53
|
+
- CHANGELOG
|
54
|
+
- LICENSE
|
55
|
+
- README.rdoc
|
56
|
+
- bin/cronus.js
|
57
|
+
- lib/cronus.rb
|
58
|
+
- lib/cronus/symbols.rb
|
59
|
+
files:
|
60
|
+
- CHANGELOG
|
61
|
+
- Gemfile
|
62
|
+
- Gemfile.lock
|
63
|
+
- LICENSE
|
64
|
+
- Manifest
|
65
|
+
- README.rdoc
|
66
|
+
- Rakefile
|
67
|
+
- assets/scripts/coffee/cronus/multi_signal_relay.coffee
|
68
|
+
- assets/scripts/coffee/cronus/signal.coffee
|
69
|
+
- assets/scripts/coffee/cronus/signal_relay.coffee
|
70
|
+
- bin/cronus.js
|
71
|
+
- config/assets.rb
|
72
|
+
- cronus.gemspec
|
73
|
+
- lib/cronus.rb
|
74
|
+
- lib/cronus/symbols.rb
|
75
|
+
- spec/jasmine.yml
|
76
|
+
- spec/runner.html
|
77
|
+
- spec/support/classes.coffee
|
78
|
+
- spec/support/helpers.coffee
|
79
|
+
- spec/support/mocks.coffee
|
80
|
+
- spec/support/objects.coffee
|
81
|
+
- spec/support/requirements.coffee
|
82
|
+
- spec/tests/multisignal_relay_spec.coffee
|
83
|
+
- spec/tests/signal_relay_spec.coffee
|
84
|
+
- spec/tests/signal_spec.coffee
|
85
|
+
homepage: https://github.com/tshelburne/cronus-js
|
86
|
+
licenses: []
|
87
|
+
post_install_message:
|
88
|
+
rdoc_options:
|
89
|
+
- --line-numbers
|
90
|
+
- --inline-source
|
91
|
+
- --title
|
92
|
+
- Cronus
|
93
|
+
- --main
|
94
|
+
- README.rdoc
|
95
|
+
require_paths:
|
96
|
+
- lib
|
97
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
99
|
+
requirements:
|
100
|
+
- - ! '>='
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
|
+
none: false
|
105
|
+
requirements:
|
106
|
+
- - ! '>='
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: '1.2'
|
109
|
+
requirements: []
|
110
|
+
rubyforge_project: cronus
|
111
|
+
rubygems_version: 1.8.24
|
112
|
+
signing_key:
|
113
|
+
specification_version: 3
|
114
|
+
summary: ''
|
115
|
+
test_files: []
|