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/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