jskit_rails 3.1.0 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,11 +2,22 @@
2
2
  import _ from "lodash";
3
3
  import Events from "backbone-events-standalone";
4
4
 
5
+ var clone = _.clone;
6
+ var contains = _.contains;
7
+ var each = _.each;
8
+ var first = _.first;
9
+ var functions = _.functions;
10
+ var isString = _.isString;
11
+ var keys = _.keys;
12
+ var toArray = _.toArray;
13
+ var values = _.values;
14
+ var map = _.map;
15
+ var rest = _.rest;
16
+
5
17
  function spyOn(handler) {
6
18
  handler.called = false;
7
19
  handler.callCount = 0;
8
20
  handler.calls = [];
9
-
10
21
  return handler;
11
22
  }
12
23
 
@@ -14,49 +25,67 @@ function mapAction(action) {
14
25
  var name;
15
26
  var method;
16
27
 
17
- name = _.isString(action) ? action : _(action).keys().first();
18
- method = _.isString(action) ? action : _(action).values().first();
28
+ name = isString(action) ? action : first(keys(action));
29
+ method = isString(action) ? action : first(values(action));
19
30
 
20
31
  return { name: name, method: method };
21
32
  }
22
33
 
23
34
  function actionName(action) {
24
35
  var actionMap = mapAction(action);
25
- return _.isString(action) ? `"${action}"` : `{ ${actionMap.name}: "${actionMap.method}" }`;
36
+ return isString(action) ? `"${action}"` : `{ ${actionMap.name}: "${actionMap.method}" }`;
26
37
  }
27
38
 
28
- class TestDispatcher {
39
+ export default class TestDispatcher {
29
40
  constructor() {
41
+ this.listeners = [];
30
42
  this.events = {};
31
- this.shadowDispatcher = _.clone(Events);
43
+ this.shadowDispatcher = clone(Events);
32
44
  }
33
45
 
34
46
  on(eventName, handler, controller) {
47
+ if (!contains(this.listeners, controller)) this.spyOnControllerMethods(controller);
35
48
  var spy = spyOn(handler);
36
49
 
37
50
  this.events[eventName] = this.events[eventName] || [];
38
51
  this.events[eventName].push(spy);
39
52
 
40
53
  this.shadowDispatcher.on(eventName, function() {
41
- this.trackSpy(spy);
54
+ this.trackSpy(spy, arguments);
55
+ }, this);
56
+ }
57
+
58
+ spyOnControllerMethods(controller) {
59
+ var actionNames = map(controller.actions, (action) => { return actionName(action); });
60
+ var _this = this;
61
+ each(functions(controller), (method) => {
62
+ if (!contains(actionNames, method)) {
63
+ var unboundMethod = controller[method];
64
+ controller[method] = function() {
65
+ _this.trackSpy(controller[method], arguments);
66
+ return unboundMethod.apply(controller, arguments);
67
+ };
68
+ spyOn(controller[method]);
69
+ }
42
70
  }, this);
71
+ this.listeners.push(controller);
43
72
  }
44
73
 
45
74
  trigger(eventName, handler, context) {
46
75
  this.shadowDispatcher.trigger(eventName, handler, context);
47
76
  }
48
77
 
49
- trackSpy(spy) {
78
+ trackSpy(spy, args) {
50
79
  spy.callCount += 1;
51
80
  spy.called = true;
52
- spy.calls.push({ args: _.toArray(arguments) });
81
+ spy.calls.push({ args: toArray(args) });
53
82
  }
54
83
 
55
84
  hasAction(controller, action) {
56
85
  var actionExists = false;
57
86
 
58
87
  controller.actions.forEach((a) => {
59
- if (actionName(a) === actionName(a)) actionExists = true;
88
+ if (actionName(a) === actionName(action)) actionExists = true;
60
89
  });
61
90
 
62
91
  if (!actionExists) return false;
@@ -74,5 +103,3 @@ class TestDispatcher {
74
103
 
75
104
  off() {}
76
105
  }
77
-
78
- export default TestDispatcher;
@@ -1,3 +1,3 @@
1
1
  //= require jskit
2
2
 
3
- var App = JSKit.createApplication();
3
+ var <%= JskitRails.configuration.app_namespace %> = JSKit.createApplication();
@@ -1,3 +1,3 @@
1
1
  //= require jskit.min
2
2
 
3
- var App = JSKit.createApplication();
3
+ var <%= JskitRails.configuration.app_namespace %> = JSKit.createApplication();
@@ -0,0 +1,3 @@
1
+ //= require jskit
2
+
3
+ var <%= JskitRails.configuration.app_namespace %> = JSKit.createApplication();
@@ -8482,32 +8482,32 @@ var Events = ($__backbone_45_events_45_standalone__ = require("backbone-events-s
8482
8482
  var _ = ($__lodash__ = require("lodash"), $__lodash__ && $__lodash__.__esModule && $__lodash__ || {default: $__lodash__}).default;
8483
8483
  var s = ($__string__ = require("./string"), $__string__ && $__string__.__esModule && $__string__ || {default: $__string__}).default;
8484
8484
  var BaseController = ($__controller__ = require("./controller"), $__controller__ && $__controller__.__esModule && $__controller__ || {default: $__controller__}).default;
8485
+ var clone = _.clone;
8486
+ var extend = _.extend;
8487
+ var first = _.first;
8485
8488
  var Application = function Application() {
8486
8489
  this.Controllers = {};
8487
- this.Dispatcher = _.clone(Events);
8490
+ this.Dispatcher = clone(Events);
8488
8491
  };
8489
8492
  ($traceurRuntime.createClass)(Application, {createController: function(name) {
8490
- var $__6;
8491
8493
  for (var attrs = [],
8492
8494
  $__5 = 1; $__5 < arguments.length; $__5++)
8493
8495
  attrs[$__5 - 1] = arguments[$__5];
8494
- var allActions = _.chain(attrs).map((function(mixin) {
8495
- return mixin.actions;
8496
- })).flatten().compact().value();
8497
- attrs = ($__6 = _).extend.apply($__6, $traceurRuntime.spread(attrs, [{actions: allActions}]));
8496
+ var mixins = attrs.length > 2 ? attrs.slice(0, attrs.length - 1) : [];
8497
+ attrs = first(attrs.slice(attrs.length - 1)) || {};
8498
8498
  var dispatcher = attrs.dispatcher || this.Dispatcher;
8499
8499
  if (attrs.dispatcher)
8500
8500
  delete attrs.dispatcher;
8501
8501
  name = s.constantize(name);
8502
- _.extend(attrs, {name: name});
8502
+ extend(attrs, {name: name});
8503
8503
  var Controller = function Controller() {
8504
8504
  $traceurRuntime.defaultSuperCall(this, $Controller.prototype, arguments);
8505
8505
  };
8506
8506
  var $Controller = Controller;
8507
8507
  ($traceurRuntime.createClass)(Controller, {}, {}, BaseController);
8508
- _.extend(Controller.prototype, attrs);
8508
+ extend(Controller.prototype, attrs);
8509
8509
  this[(attrs.name + "Controller")] = Controller;
8510
- this.Controllers[name] = new Controller(dispatcher);
8510
+ this.Controllers[name] = new (Function.prototype.bind.apply(Controller, $traceurRuntime.spread([null, dispatcher], mixins)))();
8511
8511
  return this.Controllers[name];
8512
8512
  }}, {});
8513
8513
  var $__default = Application;
@@ -8526,14 +8526,26 @@ var $__lodash__,
8526
8526
  $__string__;
8527
8527
  var _ = ($__lodash__ = require("lodash"), $__lodash__ && $__lodash__.__esModule && $__lodash__ || {default: $__lodash__}).default;
8528
8528
  var s = ($__string__ = require("./string"), $__string__ && $__string__.__esModule && $__string__ || {default: $__string__}).default;
8529
+ var bindAll = _.bindAll;
8530
+ var compact = _.compact;
8531
+ var defaults = _.defaults;
8532
+ var each = _.each;
8533
+ var extend = _.extend;
8534
+ var first = _.first;
8535
+ var functions = _.functions;
8536
+ var isFunction = _.isFunction;
8537
+ var isObject = _.isObject;
8538
+ var keys = _.keys;
8539
+ var uniq = _.uniq;
8540
+ var values = _.values;
8529
8541
  function ensureActionIsDefined(actionMap) {
8530
- if (!_.isFunction(this[actionMap.method]))
8542
+ if (!isFunction(this[actionMap.method]))
8531
8543
  throw new Error((this.className + " action \"" + actionMap.name + this.eventSeperator + actionMap.method + "\" method is undefined"));
8532
8544
  }
8533
8545
  function mapAction(action) {
8534
- var isMappedAction = _.isObject(action);
8535
- var method = isMappedAction ? _(action).values().first() : action;
8536
- var name = isMappedAction ? _(action).keys().first() : action;
8546
+ var isMappedAction = isObject(action);
8547
+ var method = isMappedAction ? first(values(action)) : action;
8548
+ var name = isMappedAction ? first(keys(action)) : action;
8537
8549
  return {
8538
8550
  name: name,
8539
8551
  method: method
@@ -8541,7 +8553,7 @@ function mapAction(action) {
8541
8553
  }
8542
8554
  function registerActions(dispatcher) {
8543
8555
  var $__2 = this;
8544
- _.each(this.actions, (function(action) {
8556
+ each(this.actions, (function(action) {
8545
8557
  var actionMap = mapAction(action);
8546
8558
  ensureActionIsDefined.call($__2, actionMap);
8547
8559
  $__2.dispatcher.on($__2.actionEventName(actionMap.name), $__2[actionMap.method], $__2);
@@ -8549,7 +8561,7 @@ function registerActions(dispatcher) {
8549
8561
  }
8550
8562
  function setControllerDefaults() {
8551
8563
  this.name = this.name || "Anonymous";
8552
- _.defaults(this, {
8564
+ defaults(this, {
8553
8565
  eventSeperator: ":",
8554
8566
  actions: [],
8555
8567
  channel: "controller",
@@ -8557,11 +8569,26 @@ function setControllerDefaults() {
8557
8569
  controllerEventName: s.underscore(this.name)
8558
8570
  });
8559
8571
  }
8572
+ function addMixins(mixins) {
8573
+ var $__2 = this;
8574
+ each(mixins, (function(mixin) {
8575
+ if (mixin.actions) {
8576
+ $__2.actions = uniq($__2.actions.concat(mixin.actions));
8577
+ delete mixin.actions;
8578
+ }
8579
+ extend($__2, mixin, $__2);
8580
+ }), this);
8581
+ }
8560
8582
  var Controller = function Controller(dispatcher) {
8583
+ for (var mixins = [],
8584
+ $__4 = 1; $__4 < arguments.length; $__4++)
8585
+ mixins[$__4 - 1] = arguments[$__4];
8561
8586
  if (!dispatcher)
8562
8587
  throw new Error((this.className + ": dispatcher is undefined"));
8588
+ if (mixins)
8589
+ addMixins.call(this, mixins);
8563
8590
  this.dispatcher = dispatcher;
8564
- _.bindAll.apply(this, [this].concat(_.functions(this)));
8591
+ bindAll.apply(this, [this].concat(functions(this)));
8565
8592
  setControllerDefaults.call(this);
8566
8593
  this.actions.unshift("all");
8567
8594
  registerActions.call(this);
@@ -8571,7 +8598,7 @@ var Controller = function Controller(dispatcher) {
8571
8598
  initialize: function() {},
8572
8599
  all: function() {},
8573
8600
  actionEventName: function(action) {
8574
- return _.compact([this.namespace, this.channel, this.controllerEventName, action]).join(this.eventSeperator);
8601
+ return compact([this.namespace, this.channel, this.controllerEventName, action]).join(this.eventSeperator);
8575
8602
  }
8576
8603
  }, {});
8577
8604
  var $__default = Controller;
@@ -8594,7 +8621,7 @@ var Controller = ($__controller__ = require("./controller"), $__controller__ &&
8594
8621
  }
8595
8622
  };
8596
8623
 
8597
- }).call(this,require("oMfpAn"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/fake_e732f29.js","/")
8624
+ }).call(this,require("oMfpAn"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/fake_2c584872.js","/")
8598
8625
  },{"./application":8,"./controller":9,"./test_dispatcher":12,"buffer":3,"oMfpAn":6}],11:[function(require,module,exports){
8599
8626
  (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){
8600
8627
  "use strict";
@@ -8606,10 +8633,14 @@ Object.defineProperties(exports, {
8606
8633
  });
8607
8634
  var $__lodash__;
8608
8635
  var _ = ($__lodash__ = require("lodash"), $__lodash__ && $__lodash__.__esModule && $__lodash__ || {default: $__lodash__}).default;
8636
+ var contains = _.contains;
8637
+ var map = _.map;
8638
+ var toArray = _.toArray;
8639
+ var unescape = _.unescape;
8609
8640
  var $__default = {
8610
8641
  camelize: function() {
8611
8642
  var string = arguments[0] !== (void 0) ? arguments[0] : "";
8612
- return _(string.split(/_|-|\s/g)).map(function(part, i) {
8643
+ return map(string.split(/_|-|\s/g), function(part, i) {
8613
8644
  return (i > 0) ? part.charAt(0).toUpperCase() + part.slice(1) : part.toLowerCase();
8614
8645
  }).join("");
8615
8646
  },
@@ -8629,7 +8660,7 @@ var $__default = {
8629
8660
  constantize: function() {
8630
8661
  var string = arguments[0] !== (void 0) ? arguments[0] : "";
8631
8662
  if (string.match(/_|-|\s/)) {
8632
- var s = _(string.split(/_|-|\s/g)).map(function(part, i) {
8663
+ var s = map(string.split(/_|-|\s/g), function(part, i) {
8633
8664
  return (i > 0) ? part.charAt(0).toUpperCase() + part.slice(1) : part.toLowerCase();
8634
8665
  }).join("");
8635
8666
  string = s;
@@ -8691,13 +8722,13 @@ var $__default = {
8691
8722
  },
8692
8723
  titleCase: function() {
8693
8724
  var string = arguments[0] !== (void 0) ? arguments[0] : "";
8694
- return _(string.replace(/([A-Z])/g, " $1").replace(/-|_/g, " ").split(/\s/)).map(function(s) {
8725
+ return map(string.replace(/([A-Z])/g, " $1").replace(/-|_/g, " ").split(/\s/), function(s) {
8695
8726
  return s.charAt(0).toUpperCase() + s.slice(1);
8696
8727
  }).join(" ");
8697
8728
  },
8698
8729
  titleize: function() {
8699
8730
  var string = arguments[0] !== (void 0) ? arguments[0] : "";
8700
- return _(string.replace(/([A-Z])/g, " $1").replace(/-|_/g, " ").split(/\s/)).map(function(s) {
8731
+ return map(string.replace(/([A-Z])/g, " $1").replace(/-|_/g, " ").split(/\s/), function(s) {
8701
8732
  return s.charAt(0).toUpperCase() + s.slice(1);
8702
8733
  }).join(" ");
8703
8734
  },
@@ -8705,9 +8736,9 @@ var $__default = {
8705
8736
  var string = arguments[0] !== (void 0) ? arguments[0] : "";
8706
8737
  var truthyStrings = ["true", "yes", "on", "y"];
8707
8738
  var falseyStrings = ["false", "no", "off", "n"];
8708
- if (_(truthyStrings).contains(string.toLowerCase())) {
8739
+ if (contains(truthyStrings, string.toLowerCase())) {
8709
8740
  return true;
8710
- } else if (_(falseyStrings).contains(string.toLowerCase())) {
8741
+ } else if (contains(falseyStrings, string.toLowerCase())) {
8711
8742
  return false;
8712
8743
  } else {
8713
8744
  return string.length > 0 ? true : false;
@@ -8731,7 +8762,7 @@ var $__default = {
8731
8762
  },
8732
8763
  unescape: function() {
8733
8764
  var string = arguments[0] !== (void 0) ? arguments[0] : "";
8734
- return _.unescape.apply(this, [this].concat(_.toArray(arguments)));
8765
+ return unescape.apply(this, [this].concat(toArray(arguments)));
8735
8766
  },
8736
8767
  unwrap: function(string, wrapper) {
8737
8768
  string = string || "";
@@ -8764,6 +8795,17 @@ var $__lodash__,
8764
8795
  $__backbone_45_events_45_standalone__;
8765
8796
  var _ = ($__lodash__ = require("lodash"), $__lodash__ && $__lodash__.__esModule && $__lodash__ || {default: $__lodash__}).default;
8766
8797
  var Events = ($__backbone_45_events_45_standalone__ = require("backbone-events-standalone"), $__backbone_45_events_45_standalone__ && $__backbone_45_events_45_standalone__.__esModule && $__backbone_45_events_45_standalone__ || {default: $__backbone_45_events_45_standalone__}).default;
8798
+ var clone = _.clone;
8799
+ var contains = _.contains;
8800
+ var each = _.each;
8801
+ var first = _.first;
8802
+ var functions = _.functions;
8803
+ var isString = _.isString;
8804
+ var keys = _.keys;
8805
+ var toArray = _.toArray;
8806
+ var values = _.values;
8807
+ var map = _.map;
8808
+ var rest = _.rest;
8767
8809
  function spyOn(handler) {
8768
8810
  handler.called = false;
8769
8811
  handler.callCount = 0;
@@ -8773,8 +8815,8 @@ function spyOn(handler) {
8773
8815
  function mapAction(action) {
8774
8816
  var name;
8775
8817
  var method;
8776
- name = _.isString(action) ? action : _(action).keys().first();
8777
- method = _.isString(action) ? action : _(action).values().first();
8818
+ name = isString(action) ? action : first(keys(action));
8819
+ method = isString(action) ? action : first(values(action));
8778
8820
  return {
8779
8821
  name: name,
8780
8822
  method: method
@@ -8782,33 +8824,53 @@ function mapAction(action) {
8782
8824
  }
8783
8825
  function actionName(action) {
8784
8826
  var actionMap = mapAction(action);
8785
- return _.isString(action) ? ("\"" + action + "\"") : ("{ " + actionMap.name + ": \"" + actionMap.method + "\" }");
8827
+ return isString(action) ? ("\"" + action + "\"") : ("{ " + actionMap.name + ": \"" + actionMap.method + "\" }");
8786
8828
  }
8787
8829
  var TestDispatcher = function TestDispatcher() {
8830
+ this.listeners = [];
8788
8831
  this.events = {};
8789
- this.shadowDispatcher = _.clone(Events);
8832
+ this.shadowDispatcher = clone(Events);
8790
8833
  };
8791
8834
  ($traceurRuntime.createClass)(TestDispatcher, {
8792
8835
  on: function(eventName, handler, controller) {
8836
+ if (!contains(this.listeners, controller))
8837
+ this.spyOnControllerMethods(controller);
8793
8838
  var spy = spyOn(handler);
8794
8839
  this.events[eventName] = this.events[eventName] || [];
8795
8840
  this.events[eventName].push(spy);
8796
8841
  this.shadowDispatcher.on(eventName, function() {
8797
- this.trackSpy(spy);
8842
+ this.trackSpy(spy, arguments);
8798
8843
  }, this);
8799
8844
  },
8845
+ spyOnControllerMethods: function(controller) {
8846
+ var actionNames = map(controller.actions, (function(action) {
8847
+ return actionName(action);
8848
+ }));
8849
+ var _this = this;
8850
+ each(functions(controller), (function(method) {
8851
+ if (!contains(actionNames, method)) {
8852
+ var unboundMethod = controller[method];
8853
+ controller[method] = function() {
8854
+ _this.trackSpy(controller[method], arguments);
8855
+ return unboundMethod.apply(controller, arguments);
8856
+ };
8857
+ spyOn(controller[method]);
8858
+ }
8859
+ }), this);
8860
+ this.listeners.push(controller);
8861
+ },
8800
8862
  trigger: function(eventName, handler, context) {
8801
8863
  this.shadowDispatcher.trigger(eventName, handler, context);
8802
8864
  },
8803
- trackSpy: function(spy) {
8865
+ trackSpy: function(spy, args) {
8804
8866
  spy.callCount += 1;
8805
8867
  spy.called = true;
8806
- spy.calls.push({args: _.toArray(arguments)});
8868
+ spy.calls.push({args: toArray(args)});
8807
8869
  },
8808
8870
  hasAction: function(controller, action) {
8809
8871
  var actionExists = false;
8810
8872
  controller.actions.forEach((function(a) {
8811
- if (actionName(a) === actionName(a))
8873
+ if (actionName(a) === actionName(action))
8812
8874
  actionExists = true;
8813
8875
  }));
8814
8876
  if (!actionExists)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jskit_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dayton Nolan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-03 00:00:00.000000000 Z
11
+ date: 2014-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -127,6 +127,7 @@ files:
127
127
  - app/assets/javascripts/jskit/test_dispatcher.js.es6
128
128
  - app/assets/javascripts/jskit_rails.js.erb
129
129
  - app/assets/javascripts/jskit_rails_min.js.erb
130
+ - app/assets/javascripts/jskit_rails_standalone.js.erb
130
131
  - app/assets/javascripts/jskit_standalone.js
131
132
  - app/assets/stylesheets/jskit_rails/application.css
132
133
  - app/decorators/controllers/jskit_rails/application_controller_decorator.rb