mochiscript 0.4.0.pre10 → 0.4.0.pre12
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/lib/mochiscript/core.rb +1091 -0
- data/lib/mochiscript/rails/engine.rb +28 -0
- data/lib/mochiscript.rb +2 -1054
- data/mochiscript.gemspec +2 -0
- data/vendor/assets/javascripts/mochiscript.js +211 -0
- metadata +28 -4
- data/mochiscript/lib/mochiscript.rb +0 -5
data/mochiscript.gemspec
CHANGED
@@ -19,6 +19,8 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.require_paths = ["lib"]
|
20
20
|
|
21
21
|
# specify any dependencies here; for example:
|
22
|
+
s.add_dependency 'therubyracer'
|
23
|
+
s.add_dependency 'json'
|
22
24
|
# s.add_development_dependency "rspec"
|
23
25
|
# s.add_runtime_dependency "rest-client"
|
24
26
|
end
|
@@ -0,0 +1,211 @@
|
|
1
|
+
(function (window) {
|
2
|
+
var $m = {
|
3
|
+
ROOT: window,
|
4
|
+
ADAPTER: {
|
5
|
+
out: console.log,
|
6
|
+
outs: console.log,
|
7
|
+
},
|
8
|
+
PLATFORM: 'browser'
|
9
|
+
};
|
10
|
+
|
11
|
+
window.$m = $m;
|
12
|
+
|
13
|
+
// CLASS HELPERS
|
14
|
+
(function (undefined, $m) {
|
15
|
+
|
16
|
+
var OO = function (klass, par) {
|
17
|
+
this.klass = klass;
|
18
|
+
this.par = par;
|
19
|
+
|
20
|
+
this.members = {};
|
21
|
+
this.staticMembers = {};
|
22
|
+
this.children = [];
|
23
|
+
this.included = [];
|
24
|
+
|
25
|
+
if (this.par) this.par.OO.children.push(klass);
|
26
|
+
};
|
27
|
+
|
28
|
+
OO.prototype = {
|
29
|
+
forbiddenMembers: {
|
30
|
+
'prototype': undefined,
|
31
|
+
'OO': undefined
|
32
|
+
},
|
33
|
+
|
34
|
+
include: function(module) {
|
35
|
+
this.included.push(module);
|
36
|
+
var members = module.OO.members;
|
37
|
+
for (var name in members) {
|
38
|
+
if (members.hasOwnProperty(name)) {
|
39
|
+
this.addMember(name, members[name]);
|
40
|
+
}
|
41
|
+
}
|
42
|
+
|
43
|
+
var staticMembers = module.OO.staticMembers;
|
44
|
+
for (var name in staticMembers) {
|
45
|
+
if (staticMembers.hasOwnProperty(name)) {
|
46
|
+
this.addStaticMember(name, staticMembers[name]);
|
47
|
+
}
|
48
|
+
}
|
49
|
+
|
50
|
+
if (typeof staticMembers['included'] == 'function') {
|
51
|
+
staticMembers['included'](this.klass);
|
52
|
+
}
|
53
|
+
},
|
54
|
+
|
55
|
+
createNamespace: function(name) {
|
56
|
+
var splitted = name.split('.');
|
57
|
+
var klassName = splitted.pop();
|
58
|
+
var root = $m.ROOT;
|
59
|
+
|
60
|
+
while (splitted.length > 0) {
|
61
|
+
var name = splitted.shift();
|
62
|
+
if (!root[name]) root[name] = $m.Class.extend({});
|
63
|
+
root = root[name];
|
64
|
+
}
|
65
|
+
|
66
|
+
return [ root, klassName ];
|
67
|
+
},
|
68
|
+
|
69
|
+
makeSuper: function(newMethod, oldMethod) {
|
70
|
+
if (!oldMethod) return newMethod;
|
71
|
+
|
72
|
+
return function() {
|
73
|
+
this.$super = oldMethod;
|
74
|
+
return newMethod.apply(this, arguments);
|
75
|
+
};
|
76
|
+
},
|
77
|
+
|
78
|
+
addMember: function(name, member) {
|
79
|
+
if (this.forbiddenMembers.hasOwnProperty(name)) return;
|
80
|
+
|
81
|
+
var proto = this.klass.prototype;
|
82
|
+
if (typeof proto[name] == 'function' && !(proto[name] instanceof RegExp)) {
|
83
|
+
member = this.makeSuper(member, proto[name]);
|
84
|
+
}
|
85
|
+
|
86
|
+
proto[name] = member;
|
87
|
+
this.members[name] = member;
|
88
|
+
},
|
89
|
+
|
90
|
+
addStaticMember: function(name, member) {
|
91
|
+
if (this.forbiddenMembers.hasOwnProperty(name)) return;
|
92
|
+
|
93
|
+
if (typeof this.klass[name] == 'function') {
|
94
|
+
if (!this.klass.hasOwnProperty(name)) {
|
95
|
+
member = this.makeSuper(member, this.klass[name]);
|
96
|
+
}
|
97
|
+
}
|
98
|
+
|
99
|
+
this.klass[name] = member;
|
100
|
+
this.staticMembers[name] = member;
|
101
|
+
}
|
102
|
+
};
|
103
|
+
|
104
|
+
$m.Class = function() { this.initialize.apply(this, arguments); };
|
105
|
+
$m.Class.OO = new OO($m.Class);
|
106
|
+
$m.Class.prototype = {
|
107
|
+
initialize: function () {},
|
108
|
+
oo: $m.Class.OO
|
109
|
+
};
|
110
|
+
|
111
|
+
var namedClasses = {};
|
112
|
+
$m.getClass = function(name) {
|
113
|
+
return namedClasses[name];
|
114
|
+
};
|
115
|
+
|
116
|
+
var noInit = false;
|
117
|
+
$m.Class.extend = function(name, klassDef) {
|
118
|
+
var klass = function() { if (!noInit) this.initialize.apply(this, arguments); };
|
119
|
+
klass.OO = new OO(klass, this);
|
120
|
+
|
121
|
+
if (typeof name != 'string') {
|
122
|
+
klassDef = name;
|
123
|
+
} else {
|
124
|
+
namedClasses[name] = klass;
|
125
|
+
var namespace = this.OO.createNamespace(name);
|
126
|
+
namespace[0][namespace[1]] = klass;
|
127
|
+
}
|
128
|
+
|
129
|
+
// create instance of this as prototype for new this
|
130
|
+
noInit = true;
|
131
|
+
var proto = new this();
|
132
|
+
noInit = false;
|
133
|
+
|
134
|
+
klass.prototype = proto;
|
135
|
+
var oo = klass.OO;
|
136
|
+
proto.OO = oo;
|
137
|
+
|
138
|
+
for (var name in this) {
|
139
|
+
oo.addStaticMember(name, this[name]);
|
140
|
+
}
|
141
|
+
|
142
|
+
if (typeof klassDef == 'function') {
|
143
|
+
klassDef(klass, oo);
|
144
|
+
} else {
|
145
|
+
for (var name in klassDef) {
|
146
|
+
oo.addMember(name, klassDef[name]);
|
147
|
+
}
|
148
|
+
}
|
149
|
+
|
150
|
+
return klass;
|
151
|
+
};
|
152
|
+
|
153
|
+
$m.Module = $m.Class;
|
154
|
+
|
155
|
+
var assert = {
|
156
|
+
'eq': function(expected, actual) { if (expected != actual) $m.outs("Expected "+expected+", but got "+actual+".") },
|
157
|
+
'isFalse': function(val) { if (val) $m.outs("Expected false, but got "+JSON.stringify(val)+".") },
|
158
|
+
'isTrue': function(val) { if (!val) $m.outs("Expected true, but got " +val+".") }
|
159
|
+
};
|
160
|
+
|
161
|
+
$m.test = function(message, callback) {
|
162
|
+
if (!callback) callback = message;
|
163
|
+
callback(assert);
|
164
|
+
};
|
165
|
+
|
166
|
+
function addListener(type, listener) {
|
167
|
+
var events = this.__$events || (this.__$events = {});
|
168
|
+
this.emit('newListener', type, listener);
|
169
|
+
if (!events[type]) events[type] = [];
|
170
|
+
events[type].push(listener);
|
171
|
+
}
|
172
|
+
|
173
|
+
$m.EventEmitter = $m.Module.extend({
|
174
|
+
emit: function () {
|
175
|
+
// TODO optimize
|
176
|
+
var type = arguments[0];
|
177
|
+
var events = this.__$events || (this.__$events = {});
|
178
|
+
var handlers = events[type];
|
179
|
+
|
180
|
+
if (!handlers) return false;
|
181
|
+
|
182
|
+
var args = [];
|
183
|
+
for (var i=1,len=arguments.length; i<len; i++) args[i-1] = arguments[i];
|
184
|
+
for (var i=0,len=handlers.length; i<len; i++) handlers[i].apply(this, args);
|
185
|
+
},
|
186
|
+
|
187
|
+
addListener: addListener,
|
188
|
+
on: addListener
|
189
|
+
});
|
190
|
+
|
191
|
+
$m.out = function () {
|
192
|
+
for(var i=0,_c1=arguments,_l1=_c1.length,arg;(arg=_c1[i])||(i<_l1);i++){
|
193
|
+
$m.ADAPTER.out(arg);
|
194
|
+
if (i < arguments.length-1) {
|
195
|
+
$m.ADAPTER.out(',');
|
196
|
+
}
|
197
|
+
}
|
198
|
+
};
|
199
|
+
|
200
|
+
$m.outs = function () {
|
201
|
+
for(var _i1=0,_c1=arguments,_l1=_c1.length,arg;(arg=_c1[_i1])||(_i1<_l1);_i1++){
|
202
|
+
$m.ADAPTER.outs(arg);
|
203
|
+
}
|
204
|
+
};
|
205
|
+
|
206
|
+
|
207
|
+
return $m;
|
208
|
+
})(undefined, $m);
|
209
|
+
|
210
|
+
|
211
|
+
})(window);
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mochiscript
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.0.
|
4
|
+
version: 0.4.0.pre12
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,8 +9,30 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-10-
|
13
|
-
dependencies:
|
12
|
+
date: 2011-10-31 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: therubyracer
|
16
|
+
requirement: &70230521509580 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70230521509580
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: json
|
27
|
+
requirement: &70230521508960 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70230521508960
|
14
36
|
description: Javascript Dessert
|
15
37
|
email:
|
16
38
|
- me@jeffsu.com
|
@@ -22,8 +44,10 @@ files:
|
|
22
44
|
- Gemfile
|
23
45
|
- Rakefile
|
24
46
|
- lib/mochiscript.rb
|
47
|
+
- lib/mochiscript/core.rb
|
48
|
+
- lib/mochiscript/rails/engine.rb
|
25
49
|
- mochiscript.gemspec
|
26
|
-
-
|
50
|
+
- vendor/assets/javascripts/mochiscript.js
|
27
51
|
homepage: ''
|
28
52
|
licenses: []
|
29
53
|
post_install_message:
|