embient 0.0.6 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
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