spine-rails 0.0.9 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,34 +1,41 @@
1
1
  (function() {
2
- var $, escapeRegExp, hashStrip, namedParam, splatParam;
3
- var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) {
4
- for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; }
5
- function ctor() { this.constructor = child; }
6
- ctor.prototype = parent.prototype;
7
- child.prototype = new ctor;
8
- child.__super__ = parent.prototype;
9
- return child;
10
- }, __slice = Array.prototype.slice;
11
- if (typeof Spine === "undefined" || Spine === null) {
12
- Spine = require('spine');
13
- }
2
+ var $, escapeRegExp, hashStrip, namedParam, splatParam,
3
+ __hasProp = Object.prototype.hasOwnProperty,
4
+ __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype; return child; },
5
+ __slice = Array.prototype.slice;
6
+
7
+ if (typeof Spine === "undefined" || Spine === null) Spine = require('spine');
8
+
14
9
  $ = Spine.$;
10
+
15
11
  hashStrip = /^#*/;
12
+
16
13
  namedParam = /:([\w\d]+)/g;
14
+
17
15
  splatParam = /\*([\w\d]+)/g;
16
+
18
17
  escapeRegExp = /[-[\]{}()+?.,\\^$|#\s]/g;
19
- Spine.Route = (function() {
20
- __extends(Route, Spine.Module);
18
+
19
+ Spine.Route = (function(_super) {
20
+ var _ref;
21
+
22
+ __extends(Route, _super);
23
+
21
24
  Route.extend(Spine.Events);
22
- Route.historySupport = "history" in window;
25
+
26
+ Route.historySupport = ((_ref = window.history) != null ? _ref.pushState : void 0) != null;
27
+
23
28
  Route.routes = [];
29
+
24
30
  Route.options = {
25
31
  trigger: true,
26
32
  history: false,
27
33
  shim: false
28
34
  };
35
+
29
36
  Route.add = function(path, callback) {
30
37
  var key, value, _results;
31
- if (typeof path === "object" && !(path instanceof RegExp)) {
38
+ if (typeof path === 'object' && !(path instanceof RegExp)) {
32
39
  _results = [];
33
40
  for (key in path) {
34
41
  value = path[key];
@@ -39,115 +46,115 @@
39
46
  return this.routes.push(new this(path, callback));
40
47
  }
41
48
  };
49
+
42
50
  Route.setup = function(options) {
43
- if (options == null) {
44
- options = {};
45
- }
51
+ if (options == null) options = {};
46
52
  this.options = $.extend({}, this.options, options);
47
53
  if (this.options.history) {
48
54
  this.history = this.historySupport && this.options.history;
49
55
  }
50
- if (this.options.shim) {
51
- return;
52
- }
56
+ if (this.options.shim) return;
53
57
  if (this.history) {
54
- $(window).bind("popstate", this.change);
58
+ $(window).bind('popstate', this.change);
55
59
  } else {
56
- $(window).bind("hashchange", this.change);
60
+ $(window).bind('hashchange', this.change);
57
61
  }
58
62
  return this.change();
59
63
  };
64
+
60
65
  Route.unbind = function() {
61
66
  if (this.history) {
62
- return $(window).unbind("popstate", this.change);
67
+ return $(window).unbind('popstate', this.change);
63
68
  } else {
64
- return $(window).unbind("hashchange", this.change);
69
+ return $(window).unbind('hashchange', this.change);
65
70
  }
66
71
  };
72
+
67
73
  Route.navigate = function() {
68
74
  var args, lastArg, options, path;
69
75
  args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
70
76
  options = {};
71
77
  lastArg = args[args.length - 1];
72
- if (typeof lastArg === "object") {
78
+ if (typeof lastArg === 'object') {
73
79
  options = args.pop();
74
- } else if (typeof lastArg === "boolean") {
80
+ } else if (typeof lastArg === 'boolean') {
75
81
  options.trigger = args.pop();
76
82
  }
77
83
  options = $.extend({}, this.options, options);
78
- path = args.join("/");
79
- if (this.path === path) {
80
- return;
81
- }
84
+ path = args.join('/');
85
+ if (this.path === path) return;
82
86
  this.path = path;
83
- if (options.trigger) {
84
- this.matchRoute(this.path, options);
85
- }
86
- if (options.shim) {
87
- return;
88
- }
87
+ this.trigger('navigate', this.path);
88
+ if (options.trigger) this.matchRoute(this.path, options);
89
+ if (options.shim) return;
89
90
  if (this.history) {
90
- return history.pushState({}, document.title, this.getHost() + this.path);
91
+ return history.pushState({}, document.title, this.path);
91
92
  } else {
92
93
  return window.location.hash = this.path;
93
94
  }
94
95
  };
96
+
95
97
  Route.getPath = function() {
96
- return window.location.pathname;
98
+ var path;
99
+ path = window.location.pathname;
100
+ if (path.substr(0, 1) !== '/') path = '/' + path;
101
+ return path;
97
102
  };
103
+
98
104
  Route.getHash = function() {
99
105
  return window.location.hash;
100
106
  };
107
+
101
108
  Route.getFragment = function() {
102
- return this.getHash().replace(hashStrip, "");
109
+ return this.getHash().replace(hashStrip, '');
103
110
  };
111
+
104
112
  Route.getHost = function() {
105
- return (document.location + "").replace(this.getPath() + this.getHash(), "");
113
+ return (document.location + '').replace(this.getPath() + this.getHash(), '');
106
114
  };
115
+
107
116
  Route.change = function() {
108
117
  var path;
109
- path = this.history ? this.getPath() : this.getFragment();
110
- if (path === this.path) {
111
- return;
112
- }
118
+ path = this.getFragment() !== '' ? this.getFragment() : this.getPath();
119
+ if (path === this.path) return;
113
120
  this.path = path;
114
121
  return this.matchRoute(this.path);
115
122
  };
123
+
116
124
  Route.matchRoute = function(path, options) {
117
- var route, _i, _len, _ref;
118
- _ref = this.routes;
119
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
120
- route = _ref[_i];
125
+ var route, _i, _len, _ref2;
126
+ _ref2 = this.routes;
127
+ for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
128
+ route = _ref2[_i];
121
129
  if (route.match(path, options)) {
122
- this.trigger("change", route, path);
130
+ this.trigger('change', route, path);
123
131
  return route;
124
132
  }
125
133
  }
126
134
  };
135
+
127
136
  function Route(path, callback) {
128
137
  var match;
129
138
  this.path = path;
130
139
  this.callback = callback;
131
140
  this.names = [];
132
- if (typeof path === "string") {
141
+ if (typeof path === 'string') {
142
+ namedParam.lastIndex = 0;
133
143
  while ((match = namedParam.exec(path)) !== null) {
134
144
  this.names.push(match[1]);
135
145
  }
136
- path = path.replace(escapeRegExp, "\\$&").replace(namedParam, "([^\/]*)").replace(splatParam, "(.*?)");
146
+ path = path.replace(escapeRegExp, '\\$&').replace(namedParam, '([^\/]*)').replace(splatParam, '(.*?)');
137
147
  this.route = new RegExp('^' + path + '$');
138
148
  } else {
139
149
  this.route = path;
140
150
  }
141
151
  }
152
+
142
153
  Route.prototype.match = function(path, options) {
143
154
  var i, match, param, params, _len;
144
- if (options == null) {
145
- options = {};
146
- }
155
+ if (options == null) options = {};
147
156
  match = this.route.exec(path);
148
- if (!match) {
149
- return false;
150
- }
157
+ if (!match) return false;
151
158
  options.match = match;
152
159
  params = match.slice(1);
153
160
  if (this.names.length) {
@@ -158,9 +165,13 @@
158
165
  }
159
166
  return this.callback.call(null, options) !== false;
160
167
  };
168
+
161
169
  return Route;
162
- })();
170
+
171
+ })(Spine.Module);
172
+
163
173
  Spine.Route.change = Spine.Route.proxy(Spine.Route.change);
174
+
164
175
  Spine.Controller.include({
165
176
  route: function(path, callback) {
166
177
  return Spine.Route.add(path, this.proxy(callback));
@@ -178,7 +189,9 @@
178
189
  return Spine.Route.navigate.apply(Spine.Route, arguments);
179
190
  }
180
191
  });
192
+
181
193
  if (typeof module !== "undefined" && module !== null) {
182
194
  module.exports = Spine.Route;
183
195
  }
196
+
184
197
  }).call(this);
@@ -1,58 +1,66 @@
1
1
  (function() {
2
- var $;
3
- var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) {
4
- for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; }
5
- function ctor() { this.constructor = child; }
6
- ctor.prototype = parent.prototype;
7
- child.prototype = new ctor;
8
- child.__super__ = parent.prototype;
9
- return child;
10
- };
11
- if (typeof Spine === "undefined" || Spine === null) {
12
- Spine = require('spine');
13
- }
2
+ var $,
3
+ __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
4
+ __hasProp = Object.prototype.hasOwnProperty,
5
+ __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype; return child; };
6
+
7
+ if (typeof Spine === "undefined" || Spine === null) Spine = require('spine');
8
+
14
9
  $ = Spine.$;
15
- Spine.Tabs = (function() {
16
- __extends(Tabs, Spine.Controller);
10
+
11
+ Spine.Tabs = (function(_super) {
12
+
13
+ __extends(Tabs, _super);
14
+
17
15
  Tabs.prototype.events = {
18
16
  'click [data-name]': 'click'
19
17
  };
18
+
20
19
  function Tabs() {
21
20
  this.change = __bind(this.change, this); Tabs.__super__.constructor.apply(this, arguments);
22
21
  this.bind('change', this.change);
23
22
  }
23
+
24
24
  Tabs.prototype.change = function(name) {
25
- if (!name) {
26
- return;
27
- }
25
+ if (!name) return;
28
26
  this.current = name;
29
27
  this.children().removeClass('active');
30
- return this.children("[data-name=" + this.current).addClass('active');
28
+ return this.children("[data-name=" + this.current + "]").addClass('active');
31
29
  };
30
+
32
31
  Tabs.prototype.render = function() {
33
32
  this.change(this.current);
34
33
  if (!(this.children('.active').length || this.current)) {
35
34
  return this.children(':first').click();
36
35
  }
37
36
  };
37
+
38
38
  Tabs.prototype.children = function(sel) {
39
39
  return this.el.children(sel);
40
40
  };
41
+
41
42
  Tabs.prototype.click = function(e) {
42
43
  var name;
43
44
  name = $(e.currentTarget).attr('data-name');
44
45
  return this.trigger('change', name);
45
46
  };
47
+
46
48
  Tabs.prototype.connect = function(tabName, controller) {
47
- return this.bind('change', function(name) {
48
- if (name === tabName) {
49
- return controller.active();
50
- }
49
+ var _this = this;
50
+ this.bind('change', function(name) {
51
+ if (name === tabName) return controller.active();
52
+ });
53
+ return controller.bind('active', function() {
54
+ return _this.change(tabName);
51
55
  });
52
56
  };
57
+
53
58
  return Tabs;
54
- })();
59
+
60
+ })(Spine.Controller);
61
+
55
62
  if (typeof module !== "undefined" && module !== null) {
56
63
  module.exports = Spine.Tabs;
57
64
  }
65
+
58
66
  }).call(this);
@@ -1,12 +1,16 @@
1
1
  (function() {
2
2
  var $;
3
+
3
4
  $ = typeof jQuery !== "undefined" && jQuery !== null ? jQuery : require("jqueryify");
5
+
4
6
  $.fn.item = function() {
5
7
  var item;
6
8
  item = $(this);
7
9
  item = item.data("item") || (typeof item.tmplItem === "function" ? item.tmplItem().data : void 0);
8
- return item != null ? typeof item.reload === "function" ? item.reload() : void 0 : void 0;
10
+ if (item != null) if (typeof item.reload === "function") item.reload();
11
+ return item;
9
12
  };
13
+
10
14
  $.fn.forItem = function(item) {
11
15
  return this.filter(function() {
12
16
  var compare;
@@ -14,4 +18,5 @@
14
18
  return (typeof item.eql === "function" ? item.eql(compare) : void 0) || item === compare;
15
19
  });
16
20
  };
21
+
17
22
  }).call(this);
@@ -53,7 +53,7 @@ class Edit extends Spine.Controller
53
53
 
54
54
  class Show extends Spine.Controller
55
55
  events:
56
- 'click [bata-type=edit]': 'edit'
56
+ 'click [data-type=edit]': 'edit'
57
57
  'click [data-type=back]': 'back'
58
58
 
59
59
  constructor: ->
@@ -105,7 +105,7 @@ class Index extends Spine.Controller
105
105
  new: ->
106
106
  @navigate '/<%= controller_name %>/new'
107
107
 
108
- class App.<%= controller_class %> extends Spine.Stack
108
+ class <%= app_class %>.<%= controller_class %> extends Spine.Stack
109
109
  controllers:
110
110
  index: Index
111
111
  edit: Edit
@@ -10,7 +10,7 @@
10
10
  type="text" name="<%= field %>"
11
11
  value="<%%= @<%= field %> %>" required
12
12
  <%- if field == fields[0] %> autofocus<% end %>>
13
- <br />
13
+ <br />
14
14
  </label>
15
15
  <% end %>
16
16
  <button>Create</button>
@@ -1,6 +1,6 @@
1
1
  module Spine
2
2
  module Rails
3
- VERSION = "0.0.9"
4
- SPINE_VERSION = "1.0.3"
3
+ VERSION = "0.1.0"
4
+ SPINE_VERSION = "1.0.6"
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,63 +1,45 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: spine-rails
3
- version: !ruby/object:Gem::Version
4
- hash: 13
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 9
10
- version: 0.0.9
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Alex MacCaw
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-11-15 00:00:00 -08:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2012-02-12 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: rails
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70126037581420 !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 3
32
- - 1
33
- - 0
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
34
21
  version: 3.1.0
35
22
  type: :runtime
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: bundler
39
23
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70126037581420
25
+ - !ruby/object:Gem::Dependency
26
+ name: bundler
27
+ requirement: &70126037579920 !ruby/object:Gem::Requirement
41
28
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- hash: 3
46
- segments:
47
- - 0
48
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
49
33
  type: :development
50
- version_requirements: *id002
34
+ prerelease: false
35
+ version_requirements: *70126037579920
51
36
  description: This gem provides Spine for your Rails 3 application.
52
- email:
37
+ email:
53
38
  - info@eribium.org
54
39
  executables: []
55
-
56
40
  extensions: []
57
-
58
41
  extra_rdoc_files: []
59
-
60
- files:
42
+ files:
61
43
  - .gitignore
62
44
  - Gemfile
63
45
  - Gemfile.lock
@@ -96,41 +78,28 @@ files:
96
78
  - lib/spine/rails/engine.rb
97
79
  - lib/spine/rails/version.rb
98
80
  - spine-rails.gemspec
99
- has_rdoc: true
100
81
  homepage: http://rubygems.org/gems/spine-rails
101
82
  licenses: []
102
-
103
83
  post_install_message:
104
84
  rdoc_options: []
105
-
106
- require_paths:
85
+ require_paths:
107
86
  - lib
108
- required_ruby_version: !ruby/object:Gem::Requirement
87
+ required_ruby_version: !ruby/object:Gem::Requirement
109
88
  none: false
110
- requirements:
111
- - - ">="
112
- - !ruby/object:Gem::Version
113
- hash: 3
114
- segments:
115
- - 0
116
- version: "0"
117
- required_rubygems_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ! '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
94
  none: false
119
- requirements:
120
- - - ">="
121
- - !ruby/object:Gem::Version
122
- hash: 23
123
- segments:
124
- - 1
125
- - 3
126
- - 6
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
127
98
  version: 1.3.6
128
99
  requirements: []
129
-
130
100
  rubyforge_project: spine-rails
131
- rubygems_version: 1.6.2
101
+ rubygems_version: 1.8.15
132
102
  signing_key:
133
103
  specification_version: 3
134
104
  summary: Use Spine with Rails 3
135
105
  test_files: []
136
-