embient 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embient
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-23 00:00:00.000000000 Z
12
+ date: 2012-02-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &2156051080 !ruby/object:Gem::Requirement
16
+ requirement: &2156523240 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.1.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2156051080
24
+ version_requirements: *2156523240
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: emberjs-rails
27
- requirement: &2156049640 !ruby/object:Gem::Requirement
27
+ requirement: &2156521860 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2156049640
35
+ version_requirements: *2156521860
36
36
  description: Pulls together various existing ember/sproutcore addons and provides
37
37
  structure for future extensions.
38
38
  email:
@@ -52,10 +52,9 @@ files:
52
52
  - lib/embient/engine.rb
53
53
  - lib/embient/version.rb
54
54
  - lib/tasks/embient_tasks.rake
55
- - vendor/assets/javascripts/embient/addons/ember-data.js
56
- - vendor/assets/javascripts/embient/addons/sproutcore-routing.js
57
- - vendor/assets/javascripts/embient/addons/sproutcore-statechart.js
58
- - vendor/assets/javascripts/embient/require.js
55
+ - vendor/assets/javascripts/embient/ember-data.js
56
+ - vendor/assets/javascripts/embient/ember-layout.js
57
+ - vendor/assets/javascripts/embient/ember-routemanager.js
59
58
  homepage: https://github.com/DominikGuzei/embient
60
59
  licenses: []
61
60
  post_install_message:
@@ -70,7 +69,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
70
69
  version: '0'
71
70
  segments:
72
71
  - 0
73
- hash: 4054166985331096963
72
+ hash: 551516566059444014
74
73
  required_rubygems_version: !ruby/object:Gem::Requirement
75
74
  none: false
76
75
  requirements:
@@ -79,7 +78,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
79
78
  version: '0'
80
79
  segments:
81
80
  - 0
82
- hash: 4054166985331096963
81
+ hash: 551516566059444014
83
82
  requirements: []
84
83
  rubyforge_project:
85
84
  rubygems_version: 1.8.10
@@ -1,570 +0,0 @@
1
- // ==========================================================================
2
- // Project: SproutCore - JavaScript Application Framework
3
- // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
- // Portions ©2008-2011 Apple Inc. All rights reserved.
5
- // License: Licensed under MIT license (see license.js)
6
- // ==========================================================================
7
-
8
- var get = SC.get, set = SC.set;
9
-
10
- /**
11
- Wether the browser supports HTML5 history.
12
- */
13
- var supportsHistory = !!(window.history && window.history.pushState);
14
-
15
- /**
16
- Wether the browser supports the hashchange event.
17
- */
18
- var supportsHashChange = ('onhashchange' in window) && (document.documentMode === undefined || document.documentMode > 7);
19
-
20
- /**
21
- @class
22
-
23
- Route is a class used internally by SC.routes. The routes defined by your
24
- application are stored in a tree structure, and this is the class for the
25
- nodes.
26
- */
27
- var Route = SC.Object.extend(
28
- /** @scope Route.prototype */ {
29
-
30
- target: null,
31
-
32
- method: null,
33
-
34
- staticRoutes: null,
35
-
36
- dynamicRoutes: null,
37
-
38
- wildcardRoutes: null,
39
-
40
- add: function(parts, target, method) {
41
- var part, nextRoute;
42
-
43
- // clone the parts array because we are going to alter it
44
- parts = SC.copy(parts);
45
-
46
- if (!parts || parts.length === 0) {
47
- this.target = target;
48
- this.method = method;
49
-
50
- } else {
51
- part = parts.shift();
52
-
53
- // there are 3 types of routes
54
- switch (part.slice(0, 1)) {
55
-
56
- // 1. dynamic routes
57
- case ':':
58
- part = part.slice(1, part.length);
59
- if (!this.dynamicRoutes) this.dynamicRoutes = {};
60
- if (!this.dynamicRoutes[part]) this.dynamicRoutes[part] = this.constructor.create();
61
- nextRoute = this.dynamicRoutes[part];
62
- break;
63
-
64
- // 2. wildcard routes
65
- case '*':
66
- part = part.slice(1, part.length);
67
- if (!this.wildcardRoutes) this.wildcardRoutes = {};
68
- nextRoute = this.wildcardRoutes[part] = this.constructor.create();
69
- break;
70
-
71
- // 3. static routes
72
- default:
73
- if (!this.staticRoutes) this.staticRoutes = {};
74
- if (!this.staticRoutes[part]) this.staticRoutes[part] = this.constructor.create();
75
- nextRoute = this.staticRoutes[part];
76
- }
77
-
78
- // recursively add the rest of the route
79
- if (nextRoute) nextRoute.add(parts, target, method);
80
- }
81
- },
82
-
83
- routeForParts: function(parts, params) {
84
- var part, key, route;
85
-
86
- // clone the parts array because we are going to alter it
87
- parts = SC.copy(parts);
88
-
89
- // if parts is empty, we are done
90
- if (!parts || parts.length === 0) {
91
- return this.method ? this : null;
92
-
93
- } else {
94
- part = parts.shift();
95
-
96
- // try to match a static route
97
- if (this.staticRoutes && this.staticRoutes[part]) {
98
- route = this.staticRoutes[part].routeForParts(parts, params);
99
- if (route) {
100
- return route;
101
- }
102
- }
103
-
104
- // else, try to match a dynamic route
105
- for (key in this.dynamicRoutes) {
106
- route = this.dynamicRoutes[key].routeForParts(parts, params);
107
- if (route) {
108
- params[key] = part;
109
- return route;
110
- }
111
- }
112
-
113
- // else, try to match a wilcard route
114
- for (key in this.wildcardRoutes) {
115
- parts.unshift(part);
116
- params[key] = parts.join('/');
117
- return this.wildcardRoutes[key].routeForParts(null, params);
118
- }
119
-
120
- // if nothing was found, it means that there is no match
121
- return null;
122
- }
123
- }
124
-
125
- });
126
-
127
- /**
128
- @class
129
-
130
- SC.routes manages the browser location. You can change the hash part of the
131
- current location. The following code
132
-
133
- SC.routes.set('location', 'notes/edit/4');
134
-
135
- will change the location to http://domain.tld/my_app#notes/edit/4. Adding
136
- routes will register a handler that will be called whenever the location
137
- changes and matches the route:
138
-
139
- SC.routes.add(':controller/:action/:id', MyApp, MyApp.route);
140
-
141
- You can pass additional parameters in the location hash that will be relayed
142
- to the route handler:
143
-
144
- SC.routes.set('location', 'notes/show/4?format=xml&language=fr');
145
-
146
- The syntax for the location hash is described in the location property
147
- documentation, and the syntax for adding handlers is described in the
148
- add method documentation.
149
-
150
- Browsers keep track of the locations in their history, so when the user
151
- presses the 'back' or 'forward' button, the location is changed, SC.route
152
- catches it and calls your handler. Except for Internet Explorer versions 7
153
- and earlier, which do not modify the history stack when the location hash
154
- changes.
155
-
156
- SC.routes also supports HTML5 history, which uses a '/' instead of a '#'
157
- in the URLs, so that all your website's URLs are consistent.
158
- */
159
- var routes = SC.routes = SC.Object.create(
160
- /** @scope SC.routes.prototype */{
161
-
162
- /**
163
- Set this property to true if you want to use HTML5 history, if available on
164
- the browser, instead of the location hash.
165
-
166
- HTML 5 history uses the history.pushState method and the window's popstate
167
- event.
168
-
169
- By default it is false, so your URLs will look like:
170
-
171
- http://domain.tld/my_app#notes/edit/4
172
-
173
- If set to true and the browser supports pushState(), your URLs will look
174
- like:
175
-
176
- http://domain.tld/my_app/notes/edit/4
177
-
178
- You will also need to make sure that baseURI is properly configured, as
179
- well as your server so that your routes are properly pointing to your
180
- SproutCore application.
181
-
182
- @see http://dev.w3.org/html5/spec/history.html#the-history-interface
183
- @property
184
- @type {Boolean}
185
- */
186
- wantsHistory: false,
187
-
188
- /**
189
- A read-only boolean indicating whether or not HTML5 history is used. Based
190
- on the value of wantsHistory and the browser's support for pushState.
191
-
192
- @see wantsHistory
193
- @property
194
- @type {Boolean}
195
- */
196
- usesHistory: null,
197
-
198
- /**
199
- The base URI used to resolve routes (which are relative URLs). Only used
200
- when usesHistory is equal to true.
201
-
202
- The build tools automatically configure this value if you have the
203
- html5_history option activated in the Buildfile:
204
-
205
- config :my_app, :html5_history => true
206
-
207
- Alternatively, it uses by default the value of the href attribute of the
208
- <base> tag of the HTML document. For example:
209
-
210
- <base href="http://domain.tld/my_app">
211
-
212
- The value can also be customized before or during the exectution of the
213
- main() method.
214
-
215
- @see http://www.w3.org/TR/html5/semantics.html#the-base-element
216
- @property
217
- @type {String}
218
- */
219
- baseURI: document.baseURI,
220
-
221
- /** @private
222
- A boolean value indicating whether or not the ping method has been called
223
- to setup the SC.routes.
224
-
225
- @property
226
- @type {Boolean}
227
- */
228
- _didSetup: false,
229
-
230
- /** @private
231
- Internal representation of the current location hash.
232
-
233
- @property
234
- @type {String}
235
- */
236
- _location: null,
237
-
238
- /** @private
239
- Routes are stored in a tree structure, this is the root node.
240
-
241
- @property
242
- @type {Route}
243
- */
244
- _firstRoute: null,
245
-
246
- /** @private
247
- An internal reference to the Route class.
248
-
249
- @property
250
- */
251
- _Route: Route,
252
-
253
- /** @private
254
- Internal method used to extract and merge the parameters of a URL.
255
-
256
- @returns {Hash}
257
- */
258
- _extractParametersAndRoute: function(obj) {
259
- var params = {},
260
- route = obj.route || '',
261
- separator, parts, i, len, crumbs, key;
262
-
263
- separator = (route.indexOf('?') < 0 && route.indexOf('&') >= 0) ? '&' : '?';
264
- parts = route.split(separator);
265
- route = parts[0];
266
- if (parts.length === 1) {
267
- parts = [];
268
- } else if (parts.length === 2) {
269
- parts = parts[1].split('&');
270
- } else if (parts.length > 2) {
271
- parts.shift();
272
- }
273
-
274
- // extract the parameters from the route string
275
- len = parts.length;
276
- for (i = 0; i < len; ++i) {
277
- crumbs = parts[i].split('=');
278
- params[crumbs[0]] = crumbs[1];
279
- }
280
-
281
- // overlay any parameter passed in obj
282
- for (key in obj) {
283
- if (obj.hasOwnProperty(key) && key !== 'route') {
284
- params[key] = '' + obj[key];
285
- }
286
- }
287
-
288
- // build the route
289
- parts = [];
290
- for (key in params) {
291
- parts.push([key, params[key]].join('='));
292
- }
293
- params.params = separator + parts.join('&');
294
- params.route = route;
295
-
296
- return params;
297
- },
298
-
299
- /**
300
- The current location hash. It is the part in the browser's location after
301
- the '#' mark.
302
-
303
- The following code
304
-
305
- SC.routes.set('location', 'notes/edit/4');
306
-
307
- will change the location to http://domain.tld/my_app#notes/edit/4 and call
308
- the correct route handler if it has been registered with the add method.
309
-
310
- You can also pass additional parameters. They will be relayed to the route
311
- handler. For example, the following code
312
-
313
- SC.routes.add(':controller/:action/:id', MyApp, MyApp.route);
314
- SC.routes.set('location', 'notes/show/4?format=xml&language=fr');
315
-
316
- will change the location to
317
- http://domain.tld/my_app#notes/show/4?format=xml&language=fr and call the
318
- MyApp.route method with the following argument:
319
-
320
- { route: 'notes/show/4',
321
- params: '?format=xml&language=fr',
322
- controller: 'notes',
323
- action: 'show',
324
- id: '4',
325
- format: 'xml',
326
- language: 'fr' }
327
-
328
- The location can also be set with a hash, the following code
329
-
330
- SC.routes.set('location',
331
- { route: 'notes/edit/4', format: 'xml', language: 'fr' });
332
-
333
- will change the location to
334
- http://domain.tld/my_app#notes/show/4?format=xml&language=fr.
335
-
336
- The 'notes/show/4&format=xml&language=fr' syntax for passing parameters,
337
- using a '&' instead of a '?', as used in SproutCore 1.0 is still supported.
338
-
339
- @property
340
- @type {String}
341
- */
342
- location: function(key, value) {
343
- this._skipRoute = false;
344
- return this._extractLocation(key, value);
345
- }.property(),
346
-
347
- _extractLocation: function(key, value) {
348
- var crumbs, encodedValue;
349
-
350
- if (value !== undefined) {
351
- if (value === null) {
352
- value = '';
353
- }
354
-
355
- if (typeof(value) === 'object') {
356
- crumbs = this._extractParametersAndRoute(value);
357
- value = crumbs.route + crumbs.params;
358
- }
359
-
360
- if (!this._skipPush && (!SC.empty(value) || (this._location && this._location !== value))) {
361
- encodedValue = encodeURI(value);
362
-
363
- if (this.usesHistory) {
364
- if (encodedValue.length > 0) {
365
- encodedValue = '/' + encodedValue;
366
- }
367
- window.history.pushState(null, null, get(this, 'baseURI') + encodedValue);
368
- } else if (encodedValue.length > 0 || window.location.hash.length > 0) {
369
- window.location.hash = encodedValue;
370
- }
371
- }
372
-
373
- this._location = value;
374
- }
375
-
376
- return this._location;
377
- },
378
-
379
- updateLocation: function(loc){
380
- this._skipRoute = true;
381
- return this._extractLocation('location', loc);
382
- },
383
-
384
- /**
385
- You usually don't need to call this method. It is done automatically after
386
- the application has been initialized.
387
-
388
- It registers for the hashchange event if available. If not, it creates a
389
- timer that looks for location changes every 150ms.
390
- */
391
- ping: function() {
392
- if (!this._didSetup) {
393
- this._didSetup = true;
394
- var state;
395
-
396
- if (get(this, 'wantsHistory') && supportsHistory) {
397
- this.usesHistory = true;
398
-
399
- // Move any hash state to url state
400
- // TODO: Make sure we have a hash before adding slash
401
- state = window.location.hash.slice(1);
402
- if (state.length > 0) {
403
- state = '/' + state;
404
- window.history.replaceState(null, null, get(this, 'baseURI')+state);
405
- }
406
-
407
- popState();
408
- jQuery(window).bind('popstate', popState);
409
-
410
- } else {
411
- this.usesHistory = false;
412
-
413
- if (get(this, 'wantsHistory')) {
414
- // Move any url state to hash
415
- var base = get(this, 'baseURI');
416
- var loc = (base.charAt(0) === '/') ? document.location.pathname : document.location.href.replace(document.location.hash, '');
417
- state = loc.slice(base.length+1);
418
- if (state.length > 0) {
419
- window.location.href = base+'#'+state;
420
- }
421
- }
422
-
423
- if (supportsHashChange) {
424
- hashChange();
425
- jQuery(window).bind('hashchange', hashChange);
426
-
427
- } else {
428
- // we don't use a SC.Timer because we don't want
429
- // a run loop to be triggered at each ping
430
- var invokeHashChange = function() {
431
- hashChange();
432
- setTimeout(invokeHashChange, 100);
433
- };
434
- invokeHashChange();
435
- }
436
- }
437
- }
438
- },
439
-
440
- /**
441
- Adds a route handler. Routes have the following format:
442
-
443
- - 'users/show/5' is a static route and only matches this exact string,
444
- - ':action/:controller/:id' is a dynamic route and the handler will be
445
- called with the 'action', 'controller' and 'id' parameters passed in a
446
- hash,
447
- - '*url' is a wildcard route, it matches the whole route and the handler
448
- will be called with the 'url' parameter passed in a hash.
449
-
450
- Route types can be combined, the following are valid routes:
451
-
452
- - 'users/:action/:id'
453
- - ':controller/show/:id'
454
- - ':controller/ *url' (ignore the space, because of jslint)
455
-
456
- @param {String} route the route to be registered
457
- @param {Object} target the object on which the method will be called, or
458
- directly the function to be called to handle the route
459
- @param {Function} method the method to be called on target to handle the
460
- route, can be a function or a string
461
- */
462
- add: function(route, target, method) {
463
- if (!this._didSetup) {
464
- SC.run.once(this, 'ping');
465
- }
466
-
467
- if (method === undefined && SC.typeOf(target) === 'function') {
468
- method = target;
469
- target = null;
470
- } else if (SC.typeOf(method) === 'string') {
471
- method = target[method];
472
- }
473
-
474
- if (!this._firstRoute) this._firstRoute = Route.create();
475
- this._firstRoute.add(route.split('/'), target, method);
476
-
477
- return this;
478
- },
479
-
480
- /**
481
- Observer of the 'location' property that calls the correct route handler
482
- when the location changes.
483
- */
484
- locationDidChange: function() {
485
- this.trigger();
486
- }.observes('location'),
487
-
488
- /**
489
- Triggers a route even if already in that route (does change the location, if it
490
- is not already changed, as well).
491
-
492
- If the location is not the same as the supplied location, this simply lets "location"
493
- handle it (which ends up coming back to here).
494
- */
495
- trigger: function() {
496
- var location = get(this, 'location'),
497
- params, route;
498
-
499
- if (this._firstRoute) {
500
- params = this._extractParametersAndRoute({ route: location });
501
- location = params.route;
502
- delete params.route;
503
- delete params.params;
504
-
505
- route = this.getRoute(location, params);
506
- if (route && route.method) {
507
- route.method.call(route.target || this, params);
508
- }
509
- }
510
- },
511
-
512
- getRoute: function(route, params) {
513
- var firstRoute = this._firstRoute;
514
- if (params === null) {
515
- params = {};
516
- }
517
-
518
- return firstRoute.routeForParts(route.split('/'), params);
519
- },
520
-
521
- exists: function(route, params) {
522
- route = this.getRoute(route, params);
523
- return route !== null && route.method !== null;
524
- }
525
-
526
- });
527
-
528
- /**
529
- Event handler for the hashchange event. Called automatically by the browser
530
- if it supports the hashchange event, or by our timer if not.
531
- */
532
- function hashChange(event) {
533
- var loc = window.location.hash;
534
-
535
- // Remove the '#' prefix
536
- loc = (loc && loc.length > 0) ? loc.slice(1, loc.length) : '';
537
-
538
- if (!jQuery.browser.mozilla) {
539
- // because of bug https://bugzilla.mozilla.org/show_bug.cgi?id=483304
540
- loc = decodeURI(loc);
541
- }
542
-
543
- if (get(routes, 'location') !== loc && !routes._skipRoute) {
544
- SC.run.once(function() {
545
- routes._skipPush = true;
546
- set(routes, 'location', loc);
547
- routes._skipPush = false;
548
- });
549
- }
550
- routes._skipRoute = false;
551
- }
552
-
553
- function popState(event) {
554
- var base = get(routes, 'baseURI'),
555
- loc = (base.charAt(0) === '/') ? document.location.pathname : document.location.href;
556
-
557
- if (loc.slice(0, base.length) === base) {
558
- // Remove the base prefix and the extra '/'
559
- loc = loc.slice(base.length + 1, loc.length);
560
-
561
- if (get(routes, 'location') !== loc && !routes._skipRoute) {
562
- SC.run.once(function() {
563
- routes._skipPush = true;
564
- set(routes, 'location', loc);
565
- routes._skipPush = false;
566
- });
567
- }
568
- }
569
- routes._skipRoute = false;
570
- }