batman-rails 0.15.1 → 0.15.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c6d9f5784fb624b33cfc0fd816b35413adde6361
4
+ data.tar.gz: 566e6f53b7a884ae120eea7027273027b7c71d57
5
+ SHA512:
6
+ metadata.gz: 581d3be867c30b4202bd8973ba425913b6105a0eb434517280910e4d1a384d264cd3f4c0cef5c759ee65d644b117e119d6e0655a5d6f11485280f8deb763b81d
7
+ data.tar.gz: 78a085fd37fb5024ac2af04676ecf62bd318a6c5657ced16bd66d8587c362faadd34fcadb27a7ab64fd21dd39a9662a4da842e6cadafde08c85aec6b4b63524f
@@ -1,6 +1,6 @@
1
1
  module Batman
2
2
  module Rails
3
- VERSION = "0.15.1"
4
- BATMAN_VERSION = "0.15.0"
3
+ VERSION = "0.15.2"
4
+ BATMAN_VERSION = "0.15.0-rc2"
5
5
  end
6
6
  end
@@ -12,12 +12,14 @@ module Batman
12
12
  with_app_name do
13
13
  template "batman/controller.coffee", "#{app_path}/controllers/#{file_name.downcase}_controller.js.coffee"
14
14
  generate "batman:html #{plural_name} #{action_names} #{app_name_flag}"
15
- generate "batman:view #{plural_name} #{app_name_flag}"
15
+ generate "batman:view #{plural_name} #{action_names} #{app_name_flag}"
16
16
  end
17
17
  end
18
18
 
19
19
  def action_names
20
- options[:actions].join(' ') if options[:actions]
20
+ return if actions.length == 0
21
+ view_action_names = actions - %w[create update destroy]
22
+ view_action_names.join(' ')
21
23
  end
22
24
  end
23
25
  end
@@ -8,21 +8,6 @@ module Batman
8
8
  desc "This generator creates a the HTML files needed for a Batman.Controller"
9
9
  argument :actions, :type => :array, :default => [], :banner => "action action"
10
10
 
11
-
12
- RESERVED_JS_WORDS = %w{
13
- break case catch continue debugger default delete do else finally for
14
- function if in instanceof new return switch this throw try typeof var void while with
15
- }
16
-
17
- def validate_no_reserved_words
18
- actions.each do |action|
19
- if RESERVED_JS_WORDS.include? action
20
- raise Thor::Error, "The name '#{action}' is reserved by javascript " <<
21
- "Please choose an alternative action name and run this generator again."
22
- end
23
- end
24
- end
25
-
26
11
  def create_directory
27
12
  with_app_name do
28
13
  empty_directory "#{app_path}/html/#{plural_name.downcase}"
@@ -31,7 +16,7 @@ module Batman
31
16
 
32
17
  def create_files
33
18
  with_app_name do
34
- (options[:arguments] || %w(index show edit)).each do |file|
19
+ actions.each do |file|
35
20
  template "batman/html/#{file}.html", "#{app_path}/html/#{plural_name.downcase}/#{file}.html"
36
21
  end
37
22
  end
@@ -8,11 +8,28 @@ module Batman
8
8
  desc "This generator creates a Batman.View"
9
9
  argument :actions, :type => :array, :default => [], :banner => "action action"
10
10
 
11
- def create_batman_view
11
+ def create_directory
12
+ return if actions.length == 0
13
+
14
+ with_app_name do
15
+ empty_directory "#{app_path}/views/#{plural_name.downcase}"
16
+ end
17
+ end
18
+
19
+ def create_files
12
20
  with_app_name do
13
- template "batman/view.coffee", "#{app_path}/views/#{file_name.downcase}_view.js.coffee"
21
+ if actions.length == 0
22
+ @file = "#{file_name}_view".downcase
23
+ template "batman/view.coffee", "#{app_path}/views/#{@file}.js.coffee"
24
+ else
25
+ actions.each do |file|
26
+ @file = "#{plural_name}_#{file}_view".downcase
27
+ template "batman/view.coffee", "#{app_path}/views/#{plural_name.downcase}/#{@file}.js.coffee"
28
+ end
29
+ end
14
30
  end
15
31
  end
32
+
16
33
  end
17
34
  end
18
35
  end
@@ -0,0 +1,2 @@
1
+ <h1><%= plural_name.camelize %>Controller#new</h1>
2
+ <p>Find me in html/<%= plural_name.underscore %>/new.html</p>
@@ -1,7 +1,7 @@
1
- class <%= js_application_name %>.<%= file_name.camelize %>View extends Batman.View
2
-
3
- <% actions.each do |action| -%>
4
- class <%= js_application_name %>.<%= file_name.camelize %><%= action.camelize %>View extends <%= js_application_name %>.<%= file_name.camelize %>View
5
-
6
- <% end -%>
1
+ class <%= js_application_name %>.<%= @file.camelize %> extends Batman.View
2
+ viewDidAppear: ->
3
+ # Your node is in the DOM and ready to accept instructions (aka jQuery)
7
4
 
5
+ # buttonWasClicked: (node, event, view) ->
6
+ # You can put all of your event handlers in this view file. You can access
7
+ # data by using `view.lookupKeypath('someData')` or `@controller`.
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env bash
2
+ cd ~/Code/batman/batman
3
+ cake build
4
+
5
+ cp ~/Code/batman/batman/lib/batman.{js,jquery.js} ~/Code/batman/batman-rails/vendor/assets/javascripts/batman/
6
+ cp ~/Code/batman/batman/lib/extras/batman.rails.js ~/Code/batman/batman-rails/vendor/assets/javascripts/batman/
@@ -13,6 +13,13 @@
13
13
  Batman.DOM.cleanupNode(node);
14
14
  jQuery(node).remove();
15
15
  },
16
+ containsNode: function(parent, child) {
17
+ if (!child) {
18
+ child = parent;
19
+ parent = document.body;
20
+ }
21
+ return $.contains(parent, child);
22
+ },
16
23
  textContent: function(node) {
17
24
  return jQuery(node).text();
18
25
  },
@@ -30,74 +37,74 @@
30
37
  }
31
38
  });
32
39
 
33
- Batman.Request.prototype._parseResponseHeaders = function(xhr) {
34
- var headers;
35
- return headers = xhr.getAllResponseHeaders().split('\n').reduce(function(acc, header) {
36
- var key, matches, value;
37
- if (matches = header.match(/([^:]*):\s*(.*)/)) {
38
- key = matches[1];
39
- value = matches[2];
40
- acc[key] = value;
41
- }
42
- return acc;
43
- }, {});
44
- };
45
-
46
- Batman.Request.prototype._prepareOptions = function(data) {
47
- var options, _ref,
48
- _this = this;
49
- options = {
50
- url: this.get('url'),
51
- type: this.get('method'),
52
- dataType: this.get('type'),
53
- data: data || this.get('data'),
54
- username: this.get('username'),
55
- password: this.get('password'),
56
- headers: this.get('headers'),
57
- beforeSend: function() {
58
- return _this.fire('loading');
59
- },
60
- success: function(response, textStatus, xhr) {
61
- _this.mixin({
62
- xhr: xhr,
63
- status: xhr.status,
64
- response: response,
65
- responseHeaders: _this._parseResponseHeaders(xhr)
66
- });
67
- return _this.fire('success', response);
68
- },
69
- error: function(xhr, status, error) {
70
- _this.mixin({
71
- xhr: xhr,
72
- status: xhr.status,
73
- response: xhr.responseText,
74
- responseHeaders: _this._parseResponseHeaders(xhr)
75
- });
76
- xhr.request = _this;
77
- return _this.fire('error', xhr);
78
- },
79
- complete: function() {
80
- return _this.fire('loaded');
81
- }
82
- };
83
- if ((_ref = this.get('method')) === 'PUT' || _ref === 'POST') {
84
- if (!this.hasFileUploads()) {
85
- options.contentType = this.get('contentType');
86
- if (typeof options.data === 'object') {
40
+ Batman.extend(Batman.Request.prototype, {
41
+ _parseResponseHeaders: function(xhr) {
42
+ var headers;
43
+ return headers = xhr.getAllResponseHeaders().split('\n').reduce(function(acc, header) {
44
+ var key, matches, value;
45
+ if (matches = header.match(/([^:]*):\s*(.*)/)) {
46
+ key = matches[1];
47
+ value = matches[2];
48
+ acc[key] = value;
49
+ }
50
+ return acc;
51
+ }, {});
52
+ },
53
+ _prepareOptions: function(data) {
54
+ var options, _ref,
55
+ _this = this;
56
+ options = {
57
+ url: this.get('url'),
58
+ type: this.get('method'),
59
+ dataType: this.get('type'),
60
+ data: data || this.get('data'),
61
+ username: this.get('username'),
62
+ password: this.get('password'),
63
+ headers: this.get('headers'),
64
+ beforeSend: function() {
65
+ return _this.fire('loading');
66
+ },
67
+ success: function(response, textStatus, xhr) {
68
+ _this.mixin({
69
+ xhr: xhr,
70
+ status: xhr.status,
71
+ response: response,
72
+ responseHeaders: _this._parseResponseHeaders(xhr)
73
+ });
74
+ return _this.fire('success', response);
75
+ },
76
+ error: function(xhr, status, error) {
77
+ _this.mixin({
78
+ xhr: xhr,
79
+ status: xhr.status,
80
+ response: xhr.responseText,
81
+ responseHeaders: _this._parseResponseHeaders(xhr)
82
+ });
83
+ xhr.request = _this;
84
+ return _this.fire('error', xhr);
85
+ },
86
+ complete: function() {
87
+ return _this.fire('loaded');
88
+ }
89
+ };
90
+ if ((_ref = this.get('method')) === 'PUT' || _ref === 'POST') {
91
+ if (!this.hasFileUploads()) {
92
+ options.contentType = this.get('contentType');
93
+ if (typeof options.data === 'object') {
94
+ options.processData = false;
95
+ options.data = Batman.URI.queryFromParams(options.data);
96
+ }
97
+ } else {
98
+ options.contentType = false;
87
99
  options.processData = false;
88
- options.data = Batman.URI.queryFromParams(options.data);
100
+ options.data = this.constructor.objectToFormData(options.data);
89
101
  }
90
- } else {
91
- options.contentType = false;
92
- options.processData = false;
93
- options.data = this.constructor.objectToFormData(options.data);
94
102
  }
103
+ return options;
104
+ },
105
+ send: function(data) {
106
+ return jQuery.ajax(this._prepareOptions(data));
95
107
  }
96
- return options;
97
- };
98
-
99
- Batman.Request.prototype.send = function(data) {
100
- return jQuery.ajax(this._prepareOptions(data));
101
- };
108
+ });
102
109
 
103
110
  }).call(this);
@@ -16,9 +16,10 @@
16
16
 
17
17
  Batman.config = {
18
18
  pathToApp: '/',
19
+ usePushState: true,
19
20
  pathToHTML: 'html',
20
21
  fetchRemoteHTML: true,
21
- usePushState: true,
22
+ cacheViews: false,
22
23
  minificationErrors: true,
23
24
  protectFromCSRF: false
24
25
  };
@@ -1269,8 +1270,6 @@
1269
1270
  }).call(this);
1270
1271
 
1271
1272
  (function() {
1272
- var __slice = [].slice;
1273
-
1274
1273
  Batman.Enumerable = {
1275
1274
  isEnumerable: true,
1276
1275
  map: function(f, ctx) {
@@ -1288,7 +1287,7 @@
1288
1287
  var result;
1289
1288
  result = [];
1290
1289
  this.forEach(function(item) {
1291
- return result.push(item.get(key));
1290
+ return result.push(Batman.get(item, key));
1292
1291
  });
1293
1292
  return result;
1294
1293
  },
@@ -1315,38 +1314,36 @@
1315
1314
  return result;
1316
1315
  },
1317
1316
  reduce: function(f, accumulator) {
1318
- var count, initialValuePassed, self;
1319
- count = 0;
1320
- self = this;
1321
- if (accumulator != null) {
1322
- initialValuePassed = true;
1323
- } else {
1324
- initialValuePassed = false;
1325
- }
1326
- this.forEach(function() {
1317
+ var index, initialValuePassed,
1318
+ _this = this;
1319
+ index = 0;
1320
+ initialValuePassed = accumulator != null;
1321
+ this.forEach(function(element, value) {
1327
1322
  if (!initialValuePassed) {
1328
- accumulator = arguments[0];
1323
+ accumulator = element;
1329
1324
  initialValuePassed = true;
1330
1325
  return;
1331
1326
  }
1332
- return accumulator = f.apply(null, [accumulator].concat(__slice.call(arguments), [count], [self]));
1327
+ accumulator = f(accumulator, element, value, index, self);
1328
+ return index++;
1333
1329
  });
1334
1330
  return accumulator;
1335
1331
  },
1336
1332
  filter: function(f) {
1337
- var result, wrap;
1333
+ var result, wrap,
1334
+ _this = this;
1338
1335
  result = new this.constructor;
1339
1336
  if (result.add) {
1340
- wrap = function(result, element) {
1341
- if (f(element)) {
1337
+ wrap = function(result, element, value) {
1338
+ if (f(element, value, _this)) {
1342
1339
  result.add(element);
1343
1340
  }
1344
1341
  return result;
1345
1342
  };
1346
1343
  } else if (result.set) {
1347
- wrap = function(result, key, value) {
1348
- if (f(key, value)) {
1349
- result.set(key, value);
1344
+ wrap = function(result, element, value) {
1345
+ if (f(element, value, _this)) {
1346
+ result.set(element, value);
1350
1347
  }
1351
1348
  return result;
1352
1349
  };
@@ -1354,8 +1351,8 @@
1354
1351
  if (!result.push) {
1355
1352
  result = [];
1356
1353
  }
1357
- wrap = function(result, element) {
1358
- if (f(element)) {
1354
+ wrap = function(result, element, value) {
1355
+ if (f(element, value, _this)) {
1359
1356
  result.push(element);
1360
1357
  }
1361
1358
  return result;
@@ -1363,6 +1360,23 @@
1363
1360
  }
1364
1361
  return this.reduce(wrap, result);
1365
1362
  },
1363
+ count: function(f, ctx) {
1364
+ var count,
1365
+ _this = this;
1366
+ if (ctx == null) {
1367
+ ctx = Batman.container;
1368
+ }
1369
+ if (!f) {
1370
+ return this.length;
1371
+ }
1372
+ count = 0;
1373
+ this.forEach(function(element, value) {
1374
+ if (f.call(ctx, element, value, _this)) {
1375
+ return count++;
1376
+ }
1377
+ });
1378
+ return count;
1379
+ },
1366
1380
  inGroupsOf: function(groupSize) {
1367
1381
  var current, i, result;
1368
1382
  result = [];
@@ -2526,6 +2540,8 @@
2526
2540
  }).call(this);
2527
2541
 
2528
2542
  (function() {
2543
+ var methodName, platformMethods, _i, _len;
2544
+
2529
2545
  Batman.DOM = {
2530
2546
  textInputTypes: ['text', 'search', 'tel', 'url', 'email', 'password'],
2531
2547
  scrollIntoView: function(elementID) {
@@ -2655,6 +2671,15 @@
2655
2671
  }
2656
2672
  };
2657
2673
 
2674
+ platformMethods = ['querySelector', 'querySelectorAll', 'setInnerHTML', 'containsNode', 'destroyNode', 'textContent'];
2675
+
2676
+ for (_i = 0, _len = platformMethods.length; _i < _len; _i++) {
2677
+ methodName = platformMethods[_i];
2678
+ Batman.DOM[methodName] = function() {
2679
+ return Batman.developer.error("Please include a platform adapter to define " + methodName + ".");
2680
+ };
2681
+ }
2682
+
2658
2683
  }).call(this);
2659
2684
 
2660
2685
  (function() {
@@ -2802,17 +2827,22 @@
2802
2827
  __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
2803
2828
 
2804
2829
  Batman.DOM.events = {
2805
- click: function(node, callback, view, eventName) {
2830
+ click: function(node, callback, view, eventName, preventDefault) {
2806
2831
  if (eventName == null) {
2807
2832
  eventName = 'click';
2808
2833
  }
2834
+ if (preventDefault == null) {
2835
+ preventDefault = true;
2836
+ }
2809
2837
  Batman.DOM.addEventListener(node, eventName, function() {
2810
2838
  var args, event;
2811
2839
  event = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
2812
2840
  if (event.metaKey || event.ctrlKey || event.button === 1) {
2813
2841
  return;
2814
2842
  }
2815
- Batman.DOM.preventDefault(event);
2843
+ if (preventDefault) {
2844
+ Batman.DOM.preventDefault(event);
2845
+ }
2816
2846
  if (!Batman.DOM.eventIsAllowed(eventName, event)) {
2817
2847
  return;
2818
2848
  }
@@ -2983,6 +3013,9 @@
2983
3013
  },
2984
3014
  formfor: function(definition) {
2985
3015
  return new Batman.DOM.FormBinding(definition);
3016
+ },
3017
+ style: function(definition) {
3018
+ return new Batman.DOM.StyleAttributeBinding(definition);
2986
3019
  }
2987
3020
  };
2988
3021
 
@@ -5025,12 +5058,13 @@
5025
5058
 
5026
5059
  RenderCache.prototype.viewForOptions = function(options) {
5027
5060
  var _this = this;
5028
- if (options.cache === false || options.viewClass.prototype.cache === false) {
5061
+ if (Batman.config.cacheViews || options.cache || options.viewClass.prototype.cache) {
5062
+ return this.getOrSet(options, function() {
5063
+ return _this._newViewFromOptions(Batman.extend({}, options));
5064
+ });
5065
+ } else {
5029
5066
  return this._newViewFromOptions(options);
5030
5067
  }
5031
- return this.getOrSet(options, function() {
5032
- return _this._newViewFromOptions(Batman.extend({}, options));
5033
- });
5034
5068
  };
5035
5069
 
5036
5070
  RenderCache.prototype._newViewFromOptions = function(options) {
@@ -10732,7 +10766,7 @@
10732
10766
  if (!this.get('node')) {
10733
10767
  return;
10734
10768
  }
10735
- isInDOM = document.body.contains(parentNode);
10769
+ isInDOM = Batman.DOM.containsNode(parentNode);
10736
10770
  if (isInDOM) {
10737
10771
  this.propagateToSubviews('viewWillAppear');
10738
10772
  }
@@ -10752,7 +10786,7 @@
10752
10786
  View.prototype.removeFromParentNode = function() {
10753
10787
  var isInDOM, node, _ref, _ref1, _ref2;
10754
10788
  node = this.get('node');
10755
- isInDOM = (_ref = this.wasInDOM) != null ? _ref : document.body.contains(node);
10789
+ isInDOM = (_ref = this.wasInDOM) != null ? _ref : Batman.DOM.containsNode(node);
10756
10790
  if (isInDOM) {
10757
10791
  this.propagateToSubviews('viewWillDisappear');
10758
10792
  }
@@ -10797,7 +10831,8 @@
10797
10831
 
10798
10832
  View.accessor('html', {
10799
10833
  get: function() {
10800
- var source;
10834
+ var handler, property, source,
10835
+ _this = this;
10801
10836
  if (this.html != null) {
10802
10837
  return this.html;
10803
10838
  }
@@ -10805,7 +10840,18 @@
10805
10840
  return;
10806
10841
  }
10807
10842
  source = Batman.Navigator.normalizePath(source);
10808
- return this.html = this.constructor.store.get(source);
10843
+ this.html = this.constructor.store.get(source);
10844
+ if (this.html == null) {
10845
+ property = this.property('html');
10846
+ handler = function(html) {
10847
+ if (html != null) {
10848
+ _this.set('html', html);
10849
+ }
10850
+ return property.removeHandler(handler);
10851
+ };
10852
+ property.addHandler(handler);
10853
+ }
10854
+ return this.html;
10809
10855
  },
10810
10856
  set: function(key, html) {
10811
10857
  this.destroyBindings();
@@ -10901,7 +10947,7 @@
10901
10947
  }
10902
10948
  this.fire('destroy');
10903
10949
  if (this.node) {
10904
- this.wasInDOM = document.body.contains(this.node);
10950
+ this.wasInDOM = Batman.DOM.containsNode(this.node);
10905
10951
  Batman.DOM.destroyNode(this.node);
10906
10952
  }
10907
10953
  this.forget();
@@ -11045,7 +11091,7 @@
11045
11091
 
11046
11092
  __extends(AbstractBinding, _super);
11047
11093
 
11048
- keypath_rx = /(^|,)\s*(?:(true|false)|("[^"]*")|(\{[^\}]*\})|(([0-9]+[a-zA-Z\_\-]|[a-zA-Z])[\w\-\.\?\!\+]*))\s*(?=$|,)/g;
11094
+ keypath_rx = /(^|,)\s*(?:(true|false)|("[^"]*")|(\{[^\}]*\})|(([0-9\_\-]+[a-zA-Z\_\-]|[a-zA-Z])[\w\-\.\?\!\+]*))\s*(?=$|,)/g;
11049
11095
 
11050
11096
  get_dot_rx = /(?:\]\.)(.+?)(?=[\[\.]|\s*\||$)/;
11051
11097
 
@@ -12583,6 +12629,12 @@
12583
12629
  };
12584
12630
 
12585
12631
  IteratorView.prototype._beginAppendItems = function() {
12632
+ var viewClassName;
12633
+ if (!this.iterationViewClass && (viewClassName = this.prototypeNode.getAttribute('data-view'))) {
12634
+ this.iterationViewClass = this.lookupKeypath(viewClassName);
12635
+ this.prototypeNode.removeAttribute('data-view');
12636
+ }
12637
+ this.iterationViewClass || (this.iterationViewClass = Batman.IterationView);
12586
12638
  this.fragment = document.createDocumentFragment();
12587
12639
  this.appendedViews = [];
12588
12640
  return this.get('node');
@@ -12590,7 +12642,7 @@
12590
12642
 
12591
12643
  IteratorView.prototype._insertItem = function(item, targetIndex) {
12592
12644
  var iterationView;
12593
- iterationView = new Batman.IterationView({
12645
+ iterationView = new this.iterationViewClass({
12594
12646
  node: this.prototypeNode.cloneNode(true),
12595
12647
  parentNode: this.fragment
12596
12648
  });
@@ -12607,7 +12659,7 @@
12607
12659
 
12608
12660
  IteratorView.prototype._finishAppendItems = function() {
12609
12661
  var index, isInDOM, sibling, subview, _i, _j, _k, _len, _len1, _ref1, _ref2, _ref3, _ref4;
12610
- isInDOM = document.body.contains(this.node);
12662
+ isInDOM = Batman.DOM.containsNode(this.node);
12611
12663
  if (isInDOM) {
12612
12664
  _ref1 = this.appendedViews;
12613
12665
  for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
@@ -12762,6 +12814,29 @@
12762
12814
 
12763
12815
  }).call(this);
12764
12816
 
12817
+ (function() {
12818
+ var _ref,
12819
+ __hasProp = {}.hasOwnProperty,
12820
+ __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; };
12821
+
12822
+ Batman.DOM.StyleAttributeBinding = (function(_super) {
12823
+ __extends(StyleAttributeBinding, _super);
12824
+
12825
+ function StyleAttributeBinding() {
12826
+ _ref = StyleAttributeBinding.__super__.constructor.apply(this, arguments);
12827
+ return _ref;
12828
+ }
12829
+
12830
+ StyleAttributeBinding.prototype.dataChange = function(value) {
12831
+ return this.node.style[Batman.Filters.camelize(this.attributeName, true)] = value;
12832
+ };
12833
+
12834
+ return StyleAttributeBinding;
12835
+
12836
+ })(Batman.DOM.NodeAttributeBinding);
12837
+
12838
+ }).call(this);
12839
+
12765
12840
  (function() {
12766
12841
  var isEmptyDataObject;
12767
12842
 
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: batman-rails
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.15.1
4
+ version: 0.15.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Nick Small
@@ -15,85 +14,75 @@ cert_chain: []
15
14
  date: 2013-08-18 00:00:00.000000000 Z
16
15
  dependencies:
17
16
  - !ruby/object:Gem::Dependency
18
- version_requirements: !ruby/object:Gem::Requirement
17
+ name: railties
18
+ requirement: !ruby/object:Gem::Requirement
19
19
  requirements:
20
- - - ! '>='
20
+ - - '>='
21
21
  - !ruby/object:Gem::Version
22
22
  version: '3.2'
23
- none: false
24
- name: railties
25
23
  type: :runtime
26
24
  prerelease: false
27
- requirement: !ruby/object:Gem::Requirement
25
+ version_requirements: !ruby/object:Gem::Requirement
28
26
  requirements:
29
- - - ! '>='
27
+ - - '>='
30
28
  - !ruby/object:Gem::Version
31
29
  version: '3.2'
32
- none: false
33
30
  - !ruby/object:Gem::Dependency
34
- version_requirements: !ruby/object:Gem::Requirement
31
+ name: bundler
32
+ requirement: !ruby/object:Gem::Requirement
35
33
  requirements:
36
- - - ! '>='
34
+ - - '>='
37
35
  - !ruby/object:Gem::Version
38
36
  version: '0'
39
- none: false
40
- name: bundler
41
37
  type: :development
42
38
  prerelease: false
43
- requirement: !ruby/object:Gem::Requirement
39
+ version_requirements: !ruby/object:Gem::Requirement
44
40
  requirements:
45
- - - ! '>='
41
+ - - '>='
46
42
  - !ruby/object:Gem::Version
47
43
  version: '0'
48
- none: false
49
44
  - !ruby/object:Gem::Dependency
50
- version_requirements: !ruby/object:Gem::Requirement
45
+ name: rails
46
+ requirement: !ruby/object:Gem::Requirement
51
47
  requirements:
52
- - - ! '>='
48
+ - - '>='
53
49
  - !ruby/object:Gem::Version
54
50
  version: '0'
55
- none: false
56
- name: rails
57
51
  type: :development
58
52
  prerelease: false
59
- requirement: !ruby/object:Gem::Requirement
53
+ version_requirements: !ruby/object:Gem::Requirement
60
54
  requirements:
61
- - - ! '>='
55
+ - - '>='
62
56
  - !ruby/object:Gem::Version
63
57
  version: '0'
64
- none: false
65
58
  - !ruby/object:Gem::Dependency
66
- version_requirements: !ruby/object:Gem::Requirement
59
+ name: mocha
60
+ requirement: !ruby/object:Gem::Requirement
67
61
  requirements:
68
- - - ! '>='
62
+ - - '>='
69
63
  - !ruby/object:Gem::Version
70
64
  version: '0'
71
- none: false
72
- name: mocha
73
65
  type: :development
74
66
  prerelease: false
75
- requirement: !ruby/object:Gem::Requirement
67
+ version_requirements: !ruby/object:Gem::Requirement
76
68
  requirements:
77
- - - ! '>='
69
+ - - '>='
78
70
  - !ruby/object:Gem::Version
79
71
  version: '0'
80
- none: false
81
72
  - !ruby/object:Gem::Dependency
82
- version_requirements: !ruby/object:Gem::Requirement
73
+ name: sqlite3
74
+ requirement: !ruby/object:Gem::Requirement
83
75
  requirements:
84
- - - ! '>='
76
+ - - '>='
85
77
  - !ruby/object:Gem::Version
86
78
  version: '0'
87
- none: false
88
- name: sqlite3
89
79
  type: :development
90
80
  prerelease: false
91
- requirement: !ruby/object:Gem::Requirement
81
+ version_requirements: !ruby/object:Gem::Requirement
92
82
  requirements:
93
- - - ! '>='
83
+ - - '>='
94
84
  - !ruby/object:Gem::Version
95
85
  version: '0'
96
- none: false
97
86
  description: Quickly get started with batman.js in a Rails app. Provides generators
98
87
  to get started and bundles in the latest version of batman.js.
99
88
  email:
@@ -123,6 +112,7 @@ files:
123
112
  - lib/templates/batman/html/edit.html
124
113
  - lib/templates/batman/html/index.html
125
114
  - lib/templates/batman/html/main_index.html
115
+ - lib/templates/batman/html/new.html
126
116
  - lib/templates/batman/html/show.html
127
117
  - lib/templates/batman/main_controller.coffee
128
118
  - lib/templates/batman/model.coffee
@@ -185,6 +175,7 @@ files:
185
175
  - test/sample/vendor/plugins/.gitkeep
186
176
  - test/test_helper.rb
187
177
  - test/view_generator_test.rb
178
+ - vendor.sh
188
179
  - vendor/assets/images/batman/bullet.png
189
180
  - vendor/assets/images/batman/content-bg-fade.png
190
181
  - vendor/assets/images/batman/content-bg.png
@@ -197,27 +188,26 @@ files:
197
188
  - vendor/assets/javascripts/batman/es5-shim.js
198
189
  homepage: https://github.com/Shopify/batman-rails
199
190
  licenses: []
191
+ metadata: {}
200
192
  post_install_message:
201
193
  rdoc_options: []
202
194
  require_paths:
203
195
  - lib
204
196
  required_ruby_version: !ruby/object:Gem::Requirement
205
197
  requirements:
206
- - - ! '>='
198
+ - - '>='
207
199
  - !ruby/object:Gem::Version
208
200
  version: '0'
209
- none: false
210
201
  required_rubygems_version: !ruby/object:Gem::Requirement
211
202
  requirements:
212
- - - ! '>='
203
+ - - '>='
213
204
  - !ruby/object:Gem::Version
214
205
  version: '0'
215
- none: false
216
206
  requirements: []
217
207
  rubyforge_project:
218
- rubygems_version: 1.8.23
208
+ rubygems_version: 2.0.7
219
209
  signing_key:
220
- specification_version: 3
210
+ specification_version: 4
221
211
  summary: Use batman.js with Rails
222
212
  test_files:
223
213
  - test/app_generator_test.rb