spine-rails 0.0.3 → 0.0.4

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/.gitignore CHANGED
@@ -4,3 +4,4 @@
4
4
  .bundle
5
5
  .DS_Store
6
6
  *~
7
+ pkg
@@ -25,6 +25,12 @@
25
25
  }
26
26
  return this;
27
27
  },
28
+ one: function(ev, callback) {
29
+ return this.bind(ev, function() {
30
+ this.unbind(ev, arguments.callee);
31
+ return callback.apply(this, arguments);
32
+ });
33
+ },
28
34
  trigger: function() {
29
35
  var args, callback, ev, list, _i, _len, _ref;
30
36
  args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
@@ -176,21 +182,24 @@
176
182
  }
177
183
  };
178
184
  Model.refresh = function(values, options) {
179
- var record, _i, _len, _ref;
185
+ var record, records, _i, _len;
180
186
  if (options == null) {
181
187
  options = {};
182
188
  }
183
189
  if (options.clear) {
184
190
  this.records = {};
185
191
  }
186
- _ref = this.fromJSON(values);
187
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
188
- record = _ref[_i];
192
+ records = this.fromJSON(values);
193
+ if (!isArray(records)) {
194
+ records = [records];
195
+ }
196
+ for (_i = 0, _len = records.length; _i < _len; _i++) {
197
+ record = records[_i];
189
198
  record.newRecord = false;
190
199
  record.id || (record.id = guid());
191
200
  this.records[record.id] = record;
192
201
  }
193
- this.trigger('refresh');
202
+ this.trigger('refresh', !options.clear && records);
194
203
  return this;
195
204
  };
196
205
  Model.select = function(callback) {
@@ -389,16 +398,16 @@
389
398
  var error;
390
399
  error = this.validate();
391
400
  if (error) {
392
- this.trigger('error', this, error);
401
+ this.trigger('error', error);
393
402
  return false;
394
403
  }
395
- this.trigger('beforeSave', this);
404
+ this.trigger('beforeSave');
396
405
  if (this.newRecord) {
397
406
  this.create();
398
407
  } else {
399
408
  this.update();
400
409
  }
401
- this.trigger('save', this);
410
+ this.trigger('save');
402
411
  return this;
403
412
  };
404
413
  Model.prototype.updateAttribute = function(name, value) {
@@ -419,11 +428,11 @@
419
428
  return this.save();
420
429
  };
421
430
  Model.prototype.destroy = function() {
422
- this.trigger('beforeDestroy', this);
431
+ this.trigger('beforeDestroy');
423
432
  delete this.constructor.records[this.id];
424
433
  this.destroyed = true;
425
- this.trigger('destroy', this);
426
- this.trigger('change', this, 'destroy');
434
+ this.trigger('destroy');
435
+ this.trigger('change', 'destroy');
427
436
  this.unbind();
428
437
  return this;
429
438
  };
@@ -460,16 +469,16 @@
460
469
  };
461
470
  Model.prototype.update = function() {
462
471
  var clone, records;
463
- this.trigger('beforeUpdate', this);
472
+ this.trigger('beforeUpdate');
464
473
  records = this.constructor.records;
465
474
  records[this.id].load(this.attributes());
466
475
  clone = records[this.id].clone();
467
- this.trigger('update', clone);
468
- return this.trigger('change', clone, 'update');
476
+ clone.trigger('update');
477
+ return clone.trigger('change', 'update');
469
478
  };
470
479
  Model.prototype.create = function() {
471
480
  var clone, records;
472
- this.trigger('beforeCreate', this);
481
+ this.trigger('beforeCreate');
473
482
  if (!this.id) {
474
483
  this.id = guid();
475
484
  }
@@ -477,8 +486,8 @@
477
486
  records = this.constructor.records;
478
487
  records[this.id] = this.dup(false);
479
488
  clone = records[this.id].clone();
480
- this.trigger('create', clone);
481
- return this.trigger('change', clone, 'create');
489
+ clone.trigger('create');
490
+ return clone.trigger('change', 'create');
482
491
  };
483
492
  Model.prototype.bind = function(events, callback) {
484
493
  var binder, unbinder;
@@ -496,11 +505,13 @@
496
505
  return binder;
497
506
  };
498
507
  Model.prototype.trigger = function() {
499
- var _ref;
500
- return (_ref = this.constructor).trigger.apply(_ref, arguments);
508
+ var args, _ref;
509
+ args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
510
+ args.splice(1, 0, this);
511
+ return (_ref = this.constructor).trigger.apply(_ref, args);
501
512
  };
502
513
  Model.prototype.unbind = function() {
503
- return this.trigger('unbind', this);
514
+ return this.trigger('unbind');
504
515
  };
505
516
  return Model;
506
517
  })();
@@ -508,7 +519,7 @@
508
519
  __extends(Controller, Module);
509
520
  Controller.include(Events);
510
521
  Controller.include(Log);
511
- Controller.prototype.eventSplitter = /^(\w+)\s*(.*)$/;
522
+ Controller.prototype.eventSplitter = /^(\S+)\s*(.*)$/;
512
523
  Controller.prototype.tag = 'div';
513
524
  function Controller(options) {
514
525
  this.release = __bind(this.release, this);
@@ -722,5 +733,4 @@
722
733
  return new this(a1, a2, a3, a4, a5);
723
734
  };
724
735
  Spine.Class = Module;
725
- Spine.App = new Controller;
726
736
  }).call(this);
@@ -74,16 +74,37 @@
74
74
  this.errorResponse = __bind(this.errorResponse, this);
75
75
  this.recordsResponse = __bind(this.recordsResponse, this);
76
76
  }
77
- Collection.prototype.findAll = function(params) {
77
+ Collection.prototype.find = function(id, params) {
78
+ var record;
79
+ record = new this.model({
80
+ id: id
81
+ });
82
+ return this.ajax(params, {
83
+ type: 'GET',
84
+ url: Ajax.getURL(record)
85
+ }).success(this.recordsResponse).error(this.errorResponse);
86
+ };
87
+ Collection.prototype.all = function(params) {
78
88
  return this.ajax(params, {
79
89
  type: 'GET',
80
90
  url: Ajax.getURL(this.model)
81
91
  }).success(this.recordsResponse).error(this.errorResponse);
82
92
  };
83
93
  Collection.prototype.fetch = function(params) {
84
- return this.findAll(params).success(__bind(function(records) {
85
- return this.model.refresh(records);
86
- }, this));
94
+ var id;
95
+ if (params == null) {
96
+ params = {};
97
+ }
98
+ if (id = params.id) {
99
+ delete params.id;
100
+ return this.find(id, params).success(__bind(function(record) {
101
+ return this.model.refresh(record);
102
+ }, this));
103
+ } else {
104
+ return this.all(params).success(__bind(function(records) {
105
+ return this.model.refresh(records);
106
+ }, this));
107
+ }
87
108
  };
88
109
  Collection.prototype.recordsResponse = function(data, status, xhr) {
89
110
  return this.model.trigger('ajaxSuccess', null, status, xhr);
@@ -102,11 +123,13 @@
102
123
  this.recordResponse = __bind(this.recordResponse, this);
103
124
  this.model = this.record.constructor;
104
125
  }
105
- Singleton.prototype.find = function(params) {
106
- return this.ajax(params, {
107
- type: 'GET',
108
- url: this.url
109
- });
126
+ Singleton.prototype.reload = function(params) {
127
+ return this.queue(__bind(function() {
128
+ return this.ajax(params, {
129
+ type: 'GET',
130
+ url: Ajax.getURL(this.record)
131
+ }).success(this.recordResponse).error(this.errorResponse);
132
+ }, this));
110
133
  };
111
134
  Singleton.prototype.create = function(params) {
112
135
  return this.queue(__bind(function() {
@@ -135,7 +158,7 @@
135
158
  }, this));
136
159
  };
137
160
  Singleton.prototype.recordResponse = function(data, status, xhr) {
138
- this.record.trigger('ajaxSuccess', this.record, status, xhr);
161
+ this.record.trigger('ajaxSuccess', status, xhr);
139
162
  if (Spine.isBlank(data)) {
140
163
  return;
141
164
  }
@@ -148,10 +171,10 @@
148
171
  }, this));
149
172
  };
150
173
  Singleton.prototype.blankResponse = function(data, status, xhr) {
151
- return this.record.trigger('ajaxSuccess', this.record, status, xhr);
174
+ return this.record.trigger('ajaxSuccess', status, xhr);
152
175
  };
153
176
  Singleton.prototype.errorResponse = function(xhr, statusText, error) {
154
- return this.record.trigger('ajaxError', this.record, xhr, statusText, error);
177
+ return this.record.trigger('ajaxError', xhr, statusText, error);
155
178
  };
156
179
  return Singleton;
157
180
  })();
@@ -17,8 +17,8 @@
17
17
  Manager.include(Spine.Events);
18
18
  function Manager() {
19
19
  this.controllers = [];
20
- this.add.apply(this, arguments);
21
20
  this.bind('change', this.change);
21
+ this.add.apply(this, arguments);
22
22
  }
23
23
  Manager.prototype.add = function() {
24
24
  var cont, controllers, _i, _len, _results;
@@ -34,18 +34,19 @@
34
34
  controller.bind('active', __bind(function() {
35
35
  var args;
36
36
  args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
37
- return this.trigger('change', controller, args);
37
+ return this.trigger.apply(this, ['change', controller].concat(__slice.call(args)));
38
38
  }, this));
39
- controller.bind('destroy', __bind(function() {
39
+ controller.bind('release', __bind(function() {
40
40
  return this.controllers.splice(this.controllers.indexOf(controller), 1);
41
41
  }, this));
42
42
  return this.controllers.push(controller);
43
43
  };
44
44
  Manager.prototype.deactivate = function() {
45
- return this.trigger('change', false, arguments);
45
+ return this.trigger.apply(this, ['change', false].concat(__slice.call(arguments)));
46
46
  };
47
- Manager.prototype.change = function(current, args) {
48
- var cont, _i, _len, _ref, _results;
47
+ Manager.prototype.change = function() {
48
+ var args, cont, current, _i, _len, _ref, _results;
49
+ current = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
49
50
  _ref = this.controllers;
50
51
  _results = [];
51
52
  for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -1,5 +1,5 @@
1
1
  (function() {
2
- var Collection, Instance, Singleton, require, singularize, underscore;
2
+ var Collection, Instance, Singleton, singularize, underscore;
3
3
  var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) {
4
4
  for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; }
5
5
  function ctor() { this.constructor = child; }
@@ -1,6 +1,6 @@
1
1
  module Spine
2
2
  module Rails
3
- VERSION = "0.0.3"
4
- SPINE_VERSION = "1.0.0"
3
+ VERSION = "0.0.4"
4
+ SPINE_VERSION = "1.0.2"
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spine-rails
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: 2011-10-15 00:00:00.000000000Z
12
+ date: 2011-10-17 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
16
- requirement: &70355697280880 !ruby/object:Gem::Requirement
16
+ requirement: &70334460548580 !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: *70355697280880
24
+ version_requirements: *70334460548580
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &70355697280420 !ruby/object:Gem::Requirement
27
+ requirement: &70334460548120 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.0.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70355697280420
35
+ version_requirements: *70334460548120
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rails
38
- requirement: &70355697279960 !ruby/object:Gem::Requirement
38
+ requirement: &70334460547660 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '3.0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70355697279960
46
+ version_requirements: *70334460547660
47
47
  description: This gem provides Spine for your Rails 3 application.
48
48
  email:
49
49
  - info@eribium.org