mochiscript 0.4.0.pre10 → 0.4.0.pre12

Sign up to get free protection for your applications and to get access to all the features.
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.pre10
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-30 00:00:00.000000000Z
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
- - mochiscript/lib/mochiscript.rb
50
+ - vendor/assets/javascripts/mochiscript.js
27
51
  homepage: ''
28
52
  licenses: []
29
53
  post_install_message:
@@ -1,5 +0,0 @@
1
- require "mochiscript/version"
2
-
3
- module Mochiscript
4
- # Your code goes here...
5
- end