embient 0.0.6 → 0.0.8

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/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- embient (0.0.6)
4
+ embient (0.0.8)
5
5
  emberjs-rails
6
6
  rails (>= 3.1.0)
7
7
 
@@ -41,8 +41,11 @@ GEM
41
41
  hamlbars
42
42
  rails (~> 3.1)
43
43
  erubis (2.7.0)
44
+ execjs (1.3.0)
45
+ multi_json (~> 1.0)
44
46
  haml (3.1.4)
45
- hamlbars (2012.2.22)
47
+ hamlbars (2012.3.21)
48
+ execjs (>= 1.2)
46
49
  haml
47
50
  sprockets
48
51
  tilt
@@ -50,11 +53,11 @@ GEM
50
53
  i18n (0.6.0)
51
54
  journey (1.0.3)
52
55
  json (1.6.5)
53
- mail (2.4.3)
56
+ mail (2.4.4)
54
57
  i18n (>= 0.4.0)
55
58
  mime-types (~> 1.16)
56
59
  treetop (~> 1.4.8)
57
- mime-types (1.17.2)
60
+ mime-types (1.18)
58
61
  multi_json (1.1.0)
59
62
  polyglot (0.3.3)
60
63
  rack (1.4.1)
@@ -1,3 +1,3 @@
1
1
  module Embient
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.8"
3
3
  end
@@ -123,7 +123,7 @@ Ember.LayoutState = Ember.State.extend({
123
123
  // the layoutStates property.
124
124
  var viewClass = get(this, 'viewClass');
125
125
  if(viewClass) {
126
- var layoutStates = get(viewClass, 'proto').layoutStates;
126
+ var layoutStates = viewClass.proto().layoutStates;
127
127
  set(this, 'states', layoutStates);
128
128
  }
129
129
 
@@ -143,7 +143,6 @@ Ember.LayoutState = Ember.State.extend({
143
143
  if (view) {
144
144
  ember_assert('view must be an Ember.View', view instanceof Ember.View);
145
145
 
146
-
147
146
  // if there is another view in the hierarchy then
148
147
  // set its content
149
148
  var parentView = get(this, 'parentView') || get(stateManager, 'rootView');
@@ -240,9 +240,9 @@ Ember.RouteManager = Ember.StateManager.extend({
240
240
  } else {
241
241
  // we don't use a Ember.Timer because we don't want
242
242
  // a run loop to be triggered at each ping
243
- var invokeHashChange = function() {
244
- this.hashChange();
245
- this._timerId = setTimeout(invokeHashChange, 100);
243
+ var _this = this, invokeHashChange = function() {
244
+ _this.hashChange();
245
+ _this._timerId = setTimeout(invokeHashChange, 100);
246
246
  };
247
247
 
248
248
  invokeHashChange();
@@ -316,10 +316,15 @@ Ember.RouteManager = Ember.StateManager.extend({
316
316
  var cleanState = result.cleanStates.join('.');
317
317
  this.goToState(cleanState);
318
318
  }
319
+
319
320
  // 2. We transition to the dirty state. This forces dirty
320
321
  // states to be transitioned.
321
322
  if(result.dirtyStates.length > 0) {
322
323
  var dirtyState = result.cleanStates.concat(result.dirtyStates).join('.');
324
+ // Special case for re-entering the root state on a parameter change
325
+ if(this.currentState && dirtyState === this.currentState.get('path')) {
326
+ this.goToState('__nullState');
327
+ }
323
328
  this.goToState(dirtyState);
324
329
  }
325
330
  } else {
@@ -437,7 +442,7 @@ Ember.RouteManager = Ember.StateManager.extend({
437
442
  }
438
443
  var part = parts.shift();
439
444
  var partDefinition = partDefinitions[i];
440
- var partParams = this._matchPart(partDefinition, part);
445
+ var partParams = this._matchPart(partDefinition, part, state);
441
446
  if(!partParams) {
442
447
  return false;
443
448
  }
@@ -451,10 +456,9 @@ Ember.RouteManager = Ember.StateManager.extend({
451
456
  }
452
457
  }
453
458
 
454
- if(Ember.typeOf(state.willAccept) == 'function') {
455
- if(!state.willAccept(params)) {
456
- return false;
457
- }
459
+ var enabled = get(state, 'enabled');
460
+ if(enabled !== undefined && !enabled) {
461
+ return false;
458
462
  }
459
463
 
460
464
  return {
@@ -467,7 +471,9 @@ Ember.RouteManager = Ember.StateManager.extend({
467
471
  /** @private
468
472
  Returns params if the part matches the partDefinition
469
473
  */
470
- _matchPart: function(partDefinition, part) {
474
+ _matchPart: function(partDefinition, part, state) {
475
+ var params = {};
476
+
471
477
  // Handle string parts
472
478
  if( typeof partDefinition == "string") {
473
479
 
@@ -475,7 +481,6 @@ Ember.RouteManager = Ember.StateManager.extend({
475
481
  // 1. dynamic routes
476
482
  case ':':
477
483
  var name = partDefinition.slice(1, partDefinition.length);
478
- var params = {};
479
484
  params[name] = part;
480
485
  return params;
481
486
 
@@ -493,8 +498,26 @@ Ember.RouteManager = Ember.StateManager.extend({
493
498
  return false;
494
499
  }
495
500
 
496
- // Handle RegExp parts
497
- return partDefinition.test(part) ? {} : false;
501
+ if (partDefinition instanceof RegExp) {
502
+ // JS doesn't support named capture groups in Regexes so instead
503
+ // we can define a list of 'captures' which maps to the matched groups
504
+ var captures = get(state, 'captures');
505
+ var matches = partDefinition.exec(part);
506
+
507
+ if (matches) {
508
+ if (captures) {
509
+ var len = captures.length, i;
510
+ for(i = 0; i < len; ++i) {
511
+ params[captures[i]] = matches[i+1];
512
+ }
513
+ }
514
+ return params;
515
+ } else {
516
+ return false;
517
+ }
518
+ }
519
+
520
+ return false;
498
521
  },
499
522
 
500
523
  /**
@@ -542,7 +565,10 @@ Ember.RouteManager = Ember.StateManager.extend({
542
565
  }
543
566
  }
544
567
  routes._skipRoute = false;
545
- }
568
+ },
569
+
570
+ // This is used to re-enter a dirty root state
571
+ __nullState: Ember.State.create({enabled: false})
546
572
 
547
573
  });
548
574
 
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.6
4
+ version: 0.0.8
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-03-20 00:00:00.000000000 Z
12
+ date: 2012-03-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &2160652320 !ruby/object:Gem::Requirement
16
+ requirement: &2152345520 !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: *2160652320
24
+ version_requirements: *2152345520
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: emberjs-rails
27
- requirement: &2160651840 !ruby/object:Gem::Requirement
27
+ requirement: &2152356700 !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: *2160651840
35
+ version_requirements: *2152356700
36
36
  description: Pulls together various existing ember/sproutcore addons and provides
37
37
  structure for future extensions.
38
38
  email:
@@ -71,7 +71,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
71
71
  version: '0'
72
72
  segments:
73
73
  - 0
74
- hash: -431204952262710765
74
+ hash: -3816048520545035377
75
75
  required_rubygems_version: !ruby/object:Gem::Requirement
76
76
  none: false
77
77
  requirements:
@@ -80,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
80
  version: '0'
81
81
  segments:
82
82
  - 0
83
- hash: -431204952262710765
83
+ hash: -3816048520545035377
84
84
  requirements: []
85
85
  rubyforge_project:
86
86
  rubygems_version: 1.8.10