ende 0.5.20 → 0.5.21

Sign up to get free protection for your applications and to get access to all the features.
Files changed (203) hide show
  1. checksums.yaml +4 -4
  2. data/component.json +1 -1
  3. data/components/indefinido/indemma/master/.gitignore +17 -0
  4. data/components/indefinido/indemma/master/.ruby-gemset +1 -0
  5. data/components/indefinido/indemma/master/.ruby-version +1 -0
  6. data/components/indefinido/indemma/master/Gemfile +12 -0
  7. data/components/indefinido/indemma/master/Guardfile +39 -0
  8. data/components/indefinido/indemma/master/History.md +0 -0
  9. data/components/indefinido/indemma/master/Readme.md +445 -0
  10. data/components/indefinido/indemma/master/build/development.js +26123 -0
  11. data/components/indefinido/indemma/master/build/release.js +16741 -0
  12. data/components/indefinido/indemma/master/build/test.js +26123 -0
  13. data/components/indefinido/indemma/master/component.json +1 -1
  14. data/components/indefinido/indemma/master/components/chaijs/assertion-error/1.0.0/component.json +18 -0
  15. data/components/indefinido/indemma/master/components/chaijs/assertion-error/1.0.0/index.js +110 -0
  16. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/.gitignore +22 -0
  17. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/.mailmap +1 -0
  18. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/.npmignore +14 -0
  19. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/.travis.yml +14 -0
  20. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/CONTRIBUTING.md +173 -0
  21. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/History.md +895 -0
  22. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/Makefile +93 -0
  23. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/README.md +99 -0
  24. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/ReleaseNotes.md +482 -0
  25. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/bower.json +27 -0
  26. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/chai.js +4782 -0
  27. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/component.json +50 -0
  28. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/index.js +1 -0
  29. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/karma.conf.js +28 -0
  30. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/karma.sauce.js +41 -0
  31. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/assertion.js +130 -0
  32. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/config.js +50 -0
  33. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/core/assertions.js +1314 -0
  34. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/interface/assert.js +1056 -0
  35. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/interface/expect.js +12 -0
  36. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/interface/should.js +78 -0
  37. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/addChainableMethod.js +111 -0
  38. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/addMethod.js +43 -0
  39. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/addProperty.js +40 -0
  40. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/flag.js +32 -0
  41. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/getActual.js +18 -0
  42. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/getEnumerableProperties.js +25 -0
  43. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/getMessage.js +49 -0
  44. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/getName.js +20 -0
  45. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/getPathValue.js +102 -0
  46. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/getProperties.js +35 -0
  47. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/index.js +114 -0
  48. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/inspect.js +320 -0
  49. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/objDisplay.js +49 -0
  50. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/overwriteChainableMethod.js +53 -0
  51. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/overwriteMethod.js +51 -0
  52. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/overwriteProperty.js +54 -0
  53. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/test.js +26 -0
  54. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/transferFlags.js +44 -0
  55. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/type.js +45 -0
  56. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai.js +87 -0
  57. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/package.json +42 -0
  58. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/sauce.browsers.js +128 -0
  59. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/support/sauce/sauce_connect_block.sh +7 -0
  60. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/support/sauce/sauce_connect_setup.sh +53 -0
  61. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/assert.js +638 -0
  62. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/auth/.gitkeep +0 -0
  63. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/bootstrap/index.js +22 -0
  64. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/bootstrap/karma.js +22 -0
  65. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/configuration.js +133 -0
  66. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/display/errors.js +14 -0
  67. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/display/message.js +47 -0
  68. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/expect.js +814 -0
  69. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/globalShould.js +15 -0
  70. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/plugins.js +24 -0
  71. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/should.js +744 -0
  72. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/utilities.js +309 -0
  73. data/components/indefinido/indemma/master/components/chaijs/deep-eql/0.1.3/component.json +20 -0
  74. data/components/indefinido/indemma/master/components/chaijs/deep-eql/0.1.3/lib/eql.js +257 -0
  75. data/components/indefinido/indemma/master/components/chaijs/type-detect/0.1.1/component.json +18 -0
  76. data/components/indefinido/indemma/master/components/chaijs/type-detect/0.1.1/lib/type.js +142 -0
  77. data/components/indefinido/indemma/master/components/component/bind/1.0.0/component.json +14 -0
  78. data/components/indefinido/indemma/master/components/component/bind/1.0.0/index.js +23 -0
  79. data/components/indefinido/indemma/master/components/component/jquery/1.0.0/component.json +10 -0
  80. data/components/indefinido/indemma/master/components/component/jquery/1.0.0/index.js +10308 -0
  81. data/components/indefinido/indemma/master/components/component/type/1.0.0/component.json +20 -0
  82. data/components/indefinido/indemma/master/components/component/type/1.0.0/index.js +32 -0
  83. data/components/indefinido/indemma/master/components/indefinido/advisable/master/component.json +21 -0
  84. data/components/indefinido/indemma/master/components/indefinido/advisable/master/index.js +1 -0
  85. data/components/indefinido/indemma/master/components/indefinido/advisable/master/lib/advisable.js +60 -0
  86. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/component.json +39 -0
  87. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/index.js +1 -0
  88. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/adapters/rivets.js +40 -0
  89. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/legacy/notifierable.js +145 -0
  90. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/legacy/schedulerable.js +147 -0
  91. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/lookup.js +38 -0
  92. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/observable/keypath_observer.js +38 -0
  93. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/observable/observation.js +45 -0
  94. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/observable/selection.js +57 -0
  95. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/observable/self_observer.js +38 -0
  96. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/observable.js +97 -0
  97. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/platform.js +12 -0
  98. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/vendor/observe-js/observe.js +1631 -0
  99. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/vendor/shims/accessors-legacy.js +92 -0
  100. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/vendor/shims/accessors.js +248 -0
  101. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/vendor/shims/array.indexOf.js +8 -0
  102. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/vendor/shims/object.create.js +77 -0
  103. data/components/indefinido/indemma/master/components/pluma/assimilate/0.4.0/component.json +25 -0
  104. data/components/indefinido/indemma/master/components/pluma/assimilate/0.4.0/dist/assimilate.js +127 -0
  105. data/components/indefinido/indemma/master/karma.conf.js +75 -0
  106. data/components/indefinido/indemma/master/lib/record/associable.js +4 -2
  107. data/components/indefinido/indemma/master/lib/record/dirtyable.js +1 -1
  108. data/components/indefinido/indemma/master/package.json +9 -0
  109. data/components/indefinido/indemma/master/spec/record/associable_spec.js +211 -0
  110. data/components/indefinido/indemma/master/spec/record/dirtyable_spec.js +57 -0
  111. data/components/indefinido/indemma/master/spec/record/maid_spec.js +40 -0
  112. data/components/indefinido/indemma/master/spec/record/persistable_spec.js +46 -0
  113. data/components/indefinido/indemma/master/spec/record/queryable_spec.js +39 -0
  114. data/components/indefinido/indemma/master/spec/record/resource_spec.js +93 -0
  115. data/components/indefinido/indemma/master/spec/record/rest_spec.js +32 -0
  116. data/components/indefinido/indemma/master/spec/record/restfulable_spec.js +346 -0
  117. data/components/indefinido/indemma/master/spec/record/scopable_spec.js +242 -0
  118. data/components/indefinido/indemma/master/spec/record/storable_spec.js +44 -0
  119. data/components/indefinido/indemma/master/spec/record/translationable.js +28 -0
  120. data/components/indefinido/indemma/master/spec/record/validatable_spec.js +142 -0
  121. data/components/indefinido/indemma/master/spec/record/validations/associated_spec.js +43 -0
  122. data/components/indefinido/indemma/master/spec/record/validations/confirmation_spec.js +36 -0
  123. data/components/indefinido/indemma/master/spec/record/validations/cpf_spec.js +34 -0
  124. data/components/indefinido/indemma/master/spec/record/validations/presence_spec.js +28 -0
  125. data/components/indefinido/indemma/master/spec/record/validations/remote_spec.js +87 -0
  126. data/components/indefinido/indemma/master/spec/record/validations/type_spec.js +48 -0
  127. data/components/indefinido/indemma/master/spec/record_spec.js +49 -0
  128. data/components/indefinido/indemma/master/spec/spec_helper.js +15 -0
  129. data/components/indefinido/indemma/master/spec/support/value_objects/phone.js +45 -0
  130. data/components/indefinido/indemma/master/src/lib/extensions/rivets.coffee +17 -0
  131. data/components/indefinido/indemma/master/src/lib/record/associable.coffee +419 -0
  132. data/components/indefinido/indemma/master/src/lib/record/dirtyable.coffee +47 -0
  133. data/components/indefinido/indemma/master/src/lib/record/errors.coffee +20 -0
  134. data/components/indefinido/indemma/master/src/lib/record/maid.coffee +16 -0
  135. data/components/indefinido/indemma/master/src/lib/record/persistable.coffee +34 -0
  136. data/components/indefinido/indemma/master/src/lib/record/queryable.coffee +29 -0
  137. data/components/indefinido/indemma/master/src/lib/record/resource.coffee +107 -0
  138. data/components/indefinido/indemma/master/src/lib/record/rest.coffee +34 -0
  139. data/components/indefinido/indemma/master/src/lib/record/restfulable.coffee +487 -0
  140. data/components/indefinido/indemma/master/src/lib/record/scopable.coffee +279 -0
  141. data/components/indefinido/indemma/master/src/lib/record/storable.coffee +49 -0
  142. data/components/indefinido/indemma/master/src/lib/record/translationable.coffee +18 -0
  143. data/components/indefinido/indemma/master/src/lib/record/validatable.coffee +241 -0
  144. data/components/indefinido/indemma/master/src/lib/record/validations/associated.coffee +34 -0
  145. data/components/indefinido/indemma/master/src/lib/record/validations/confirmation.coffee +17 -0
  146. data/components/indefinido/indemma/master/src/lib/record/validations/cpf.coffee +57 -0
  147. data/components/indefinido/indemma/master/src/lib/record/validations/presence.coffee +16 -0
  148. data/components/indefinido/indemma/master/src/lib/record/validations/remote.coffee +61 -0
  149. data/components/indefinido/indemma/master/src/lib/record/validations/type.coffee +31 -0
  150. data/components/indefinido/indemma/master/src/lib/record/validations/validatorable.coffee +5 -0
  151. data/components/indefinido/indemma/master/src/lib/record.coffee +143 -0
  152. data/components/indefinido/indemma/master/src/spec/record/associable_spec.coffee +205 -0
  153. data/components/indefinido/indemma/master/src/spec/record/dirtyable_spec.coffee +47 -0
  154. data/components/indefinido/indemma/master/src/spec/record/maid_spec.coffee +34 -0
  155. data/components/indefinido/indemma/master/src/spec/record/persistable_spec.coffee +39 -0
  156. data/components/indefinido/indemma/master/src/spec/record/queryable_spec.coffee +33 -0
  157. data/components/indefinido/indemma/master/src/spec/record/resource_spec.coffee +69 -0
  158. data/components/indefinido/indemma/master/src/spec/record/rest_spec.coffee +22 -0
  159. data/components/indefinido/indemma/master/src/spec/record/restfulable_spec.coffee +257 -0
  160. data/components/indefinido/indemma/master/src/spec/record/scopable_spec.coffee +227 -0
  161. data/components/indefinido/indemma/master/src/spec/record/storable_spec.coffee +39 -0
  162. data/components/indefinido/indemma/master/src/spec/record/translationable.coffee +19 -0
  163. data/components/indefinido/indemma/master/src/spec/record/validatable_spec.coffee +127 -0
  164. data/components/indefinido/indemma/master/src/spec/record/validations/associated_spec.coffee +35 -0
  165. data/components/indefinido/indemma/master/src/spec/record/validations/confirmation_spec.coffee +25 -0
  166. data/components/indefinido/indemma/master/src/spec/record/validations/cpf_spec.coffee +27 -0
  167. data/components/indefinido/indemma/master/src/spec/record/validations/presence_spec.coffee +24 -0
  168. data/components/indefinido/indemma/master/src/spec/record/validations/remote_spec.coffee +74 -0
  169. data/components/indefinido/indemma/master/src/spec/record/validations/type_spec.coffee +33 -0
  170. data/components/indefinido/indemma/master/src/spec/record_spec.coffee +29 -0
  171. data/components/indefinido/indemma/master/src/spec/spec_helper.coffee +11 -0
  172. data/components/indefinido/indemma/master/src/spec/support/value_objects/phone.coffee +30 -0
  173. data/components/indefinido/indemma/master/vendor/object/mixin.js +196 -0
  174. data/components/indefinido/indemma/master/vendor/spec/sinon/assert.js +199 -0
  175. data/components/indefinido/indemma/master/vendor/spec/sinon/behavior.js +334 -0
  176. data/components/indefinido/indemma/master/vendor/spec/sinon/call.js +205 -0
  177. data/components/indefinido/indemma/master/vendor/spec/sinon/collection.js +155 -0
  178. data/components/indefinido/indemma/master/vendor/spec/sinon/match.js +245 -0
  179. data/components/indefinido/indemma/master/vendor/spec/sinon/mock.js +451 -0
  180. data/components/indefinido/indemma/master/vendor/spec/sinon/sandbox.js +144 -0
  181. data/components/indefinido/indemma/master/vendor/spec/sinon/spy.js +413 -0
  182. data/components/indefinido/indemma/master/vendor/spec/sinon/stub.js +161 -0
  183. data/components/indefinido/indemma/master/vendor/spec/sinon/test.js +77 -0
  184. data/components/indefinido/indemma/master/vendor/spec/sinon/test_case.js +99 -0
  185. data/components/indefinido/indemma/master/vendor/spec/sinon/util/event.js +94 -0
  186. data/components/indefinido/indemma/master/vendor/spec/sinon/util/fake_server.js +212 -0
  187. data/components/indefinido/indemma/master/vendor/spec/sinon/util/fake_server_with_clock.js +83 -0
  188. data/components/indefinido/indemma/master/vendor/spec/sinon/util/fake_timers.js +405 -0
  189. data/components/indefinido/indemma/master/vendor/spec/sinon/util/fake_xdomain_request.js +206 -0
  190. data/components/indefinido/indemma/master/vendor/spec/sinon/util/fake_xml_http_request.js +575 -0
  191. data/components/indefinido/indemma/master/vendor/spec/sinon/util/timers_ie.js +31 -0
  192. data/components/indefinido/indemma/master/vendor/spec/sinon/util/xdr_ie.js +14 -0
  193. data/components/indefinido/indemma/master/vendor/spec/sinon/util/xhr_ie.js +19 -0
  194. data/components/indefinido/indemma/master/vendor/spec/sinon.js +383 -0
  195. data/lib/assets/javascripts/value_objects/phone.js.coffee +3 -1
  196. data/lib/assets/javascripts/widgets/viewer/plugins/scopable.js.coffee +5 -5
  197. data/lib/ende/version.rb +1 -1
  198. data/vendor/assets/components/ende_build.css +4 -4
  199. data/vendor/assets/components/ende_build.js +7974 -7889
  200. metadata +191 -5
  201. data/vendor/assets/component/build.css +0 -112
  202. data/vendor/assets/components/build.css +0 -112
  203. data/vendor/assets/components/indemma_with_none.js +0 -30553
@@ -0,0 +1,12 @@
1
+ /*!
2
+ * chai
3
+ * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com>
4
+ * MIT Licensed
5
+ */
6
+
7
+ module.exports = function (chai, util) {
8
+ chai.expect = function (val, message) {
9
+ return new chai.Assertion(val, message);
10
+ };
11
+ };
12
+
@@ -0,0 +1,78 @@
1
+ /*!
2
+ * chai
3
+ * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com>
4
+ * MIT Licensed
5
+ */
6
+
7
+ module.exports = function (chai, util) {
8
+ var Assertion = chai.Assertion;
9
+
10
+ function loadShould () {
11
+ // explicitly define this method as function as to have it's name to include as `ssfi`
12
+ function shouldGetter() {
13
+ if (this instanceof String || this instanceof Number) {
14
+ return new Assertion(this.constructor(this), null, shouldGetter);
15
+ } else if (this instanceof Boolean) {
16
+ return new Assertion(this == true, null, shouldGetter);
17
+ }
18
+ return new Assertion(this, null, shouldGetter);
19
+ }
20
+ function shouldSetter(value) {
21
+ // See https://github.com/chaijs/chai/issues/86: this makes
22
+ // `whatever.should = someValue` actually set `someValue`, which is
23
+ // especially useful for `global.should = require('chai').should()`.
24
+ //
25
+ // Note that we have to use [[DefineProperty]] instead of [[Put]]
26
+ // since otherwise we would trigger this very setter!
27
+ Object.defineProperty(this, 'should', {
28
+ value: value,
29
+ enumerable: true,
30
+ configurable: true,
31
+ writable: true
32
+ });
33
+ }
34
+ // modify Object.prototype to have `should`
35
+ Object.defineProperty(Object.prototype, 'should', {
36
+ set: shouldSetter
37
+ , get: shouldGetter
38
+ , configurable: true
39
+ });
40
+
41
+ var should = {};
42
+
43
+ should.equal = function (val1, val2, msg) {
44
+ new Assertion(val1, msg).to.equal(val2);
45
+ };
46
+
47
+ should.Throw = function (fn, errt, errs, msg) {
48
+ new Assertion(fn, msg).to.Throw(errt, errs);
49
+ };
50
+
51
+ should.exist = function (val, msg) {
52
+ new Assertion(val, msg).to.exist;
53
+ }
54
+
55
+ // negation
56
+ should.not = {}
57
+
58
+ should.not.equal = function (val1, val2, msg) {
59
+ new Assertion(val1, msg).to.not.equal(val2);
60
+ };
61
+
62
+ should.not.Throw = function (fn, errt, errs, msg) {
63
+ new Assertion(fn, msg).to.not.Throw(errt, errs);
64
+ };
65
+
66
+ should.not.exist = function (val, msg) {
67
+ new Assertion(val, msg).to.not.exist;
68
+ }
69
+
70
+ should['throw'] = should['Throw'];
71
+ should.not['throw'] = should.not['Throw'];
72
+
73
+ return should;
74
+ };
75
+
76
+ chai.should = loadShould;
77
+ chai.Should = loadShould;
78
+ };
@@ -0,0 +1,111 @@
1
+ /*!
2
+ * Chai - addChainingMethod utility
3
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
4
+ * MIT Licensed
5
+ */
6
+
7
+ /*!
8
+ * Module dependencies
9
+ */
10
+
11
+ var transferFlags = require('./transferFlags');
12
+ var flag = require('./flag');
13
+ var config = require('../config');
14
+
15
+ /*!
16
+ * Module variables
17
+ */
18
+
19
+ // Check whether `__proto__` is supported
20
+ var hasProtoSupport = '__proto__' in Object;
21
+
22
+ // Without `__proto__` support, this module will need to add properties to a function.
23
+ // However, some Function.prototype methods cannot be overwritten,
24
+ // and there seems no easy cross-platform way to detect them (@see chaijs/chai/issues/69).
25
+ var excludeNames = /^(?:length|name|arguments|caller)$/;
26
+
27
+ // Cache `Function` properties
28
+ var call = Function.prototype.call,
29
+ apply = Function.prototype.apply;
30
+
31
+ /**
32
+ * ### addChainableMethod (ctx, name, method, chainingBehavior)
33
+ *
34
+ * Adds a method to an object, such that the method can also be chained.
35
+ *
36
+ * utils.addChainableMethod(chai.Assertion.prototype, 'foo', function (str) {
37
+ * var obj = utils.flag(this, 'object');
38
+ * new chai.Assertion(obj).to.be.equal(str);
39
+ * });
40
+ *
41
+ * Can also be accessed directly from `chai.Assertion`.
42
+ *
43
+ * chai.Assertion.addChainableMethod('foo', fn, chainingBehavior);
44
+ *
45
+ * The result can then be used as both a method assertion, executing both `method` and
46
+ * `chainingBehavior`, or as a language chain, which only executes `chainingBehavior`.
47
+ *
48
+ * expect(fooStr).to.be.foo('bar');
49
+ * expect(fooStr).to.be.foo.equal('foo');
50
+ *
51
+ * @param {Object} ctx object to which the method is added
52
+ * @param {String} name of method to add
53
+ * @param {Function} method function to be used for `name`, when called
54
+ * @param {Function} chainingBehavior function to be called every time the property is accessed
55
+ * @name addChainableMethod
56
+ * @api public
57
+ */
58
+
59
+ module.exports = function (ctx, name, method, chainingBehavior) {
60
+ if (typeof chainingBehavior !== 'function') {
61
+ chainingBehavior = function () { };
62
+ }
63
+
64
+ var chainableBehavior = {
65
+ method: method
66
+ , chainingBehavior: chainingBehavior
67
+ };
68
+
69
+ // save the methods so we can overwrite them later, if we need to.
70
+ if (!ctx.__methods) {
71
+ ctx.__methods = {};
72
+ }
73
+ ctx.__methods[name] = chainableBehavior;
74
+
75
+ Object.defineProperty(ctx, name,
76
+ { get: function () {
77
+ chainableBehavior.chainingBehavior.call(this);
78
+
79
+ var assert = function assert() {
80
+ var old_ssfi = flag(this, 'ssfi');
81
+ if (old_ssfi && config.includeStack === false)
82
+ flag(this, 'ssfi', assert);
83
+ var result = chainableBehavior.method.apply(this, arguments);
84
+ return result === undefined ? this : result;
85
+ };
86
+
87
+ // Use `__proto__` if available
88
+ if (hasProtoSupport) {
89
+ // Inherit all properties from the object by replacing the `Function` prototype
90
+ var prototype = assert.__proto__ = Object.create(this);
91
+ // Restore the `call` and `apply` methods from `Function`
92
+ prototype.call = call;
93
+ prototype.apply = apply;
94
+ }
95
+ // Otherwise, redefine all properties (slow!)
96
+ else {
97
+ var asserterNames = Object.getOwnPropertyNames(ctx);
98
+ asserterNames.forEach(function (asserterName) {
99
+ if (!excludeNames.test(asserterName)) {
100
+ var pd = Object.getOwnPropertyDescriptor(ctx, asserterName);
101
+ Object.defineProperty(assert, asserterName, pd);
102
+ }
103
+ });
104
+ }
105
+
106
+ transferFlags(this, assert);
107
+ return assert;
108
+ }
109
+ , configurable: true
110
+ });
111
+ };
@@ -0,0 +1,43 @@
1
+ /*!
2
+ * Chai - addMethod utility
3
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
4
+ * MIT Licensed
5
+ */
6
+
7
+ var config = require('../config');
8
+
9
+ /**
10
+ * ### .addMethod (ctx, name, method)
11
+ *
12
+ * Adds a method to the prototype of an object.
13
+ *
14
+ * utils.addMethod(chai.Assertion.prototype, 'foo', function (str) {
15
+ * var obj = utils.flag(this, 'object');
16
+ * new chai.Assertion(obj).to.be.equal(str);
17
+ * });
18
+ *
19
+ * Can also be accessed directly from `chai.Assertion`.
20
+ *
21
+ * chai.Assertion.addMethod('foo', fn);
22
+ *
23
+ * Then can be used as any other assertion.
24
+ *
25
+ * expect(fooStr).to.be.foo('bar');
26
+ *
27
+ * @param {Object} ctx object to which the method is added
28
+ * @param {String} name of method to add
29
+ * @param {Function} method function to be used for name
30
+ * @name addMethod
31
+ * @api public
32
+ */
33
+ var flag = require('./flag');
34
+
35
+ module.exports = function (ctx, name, method) {
36
+ ctx[name] = function () {
37
+ var old_ssfi = flag(this, 'ssfi');
38
+ if (old_ssfi && config.includeStack === false)
39
+ flag(this, 'ssfi', ctx[name]);
40
+ var result = method.apply(this, arguments);
41
+ return result === undefined ? this : result;
42
+ };
43
+ };
@@ -0,0 +1,40 @@
1
+ /*!
2
+ * Chai - addProperty utility
3
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
4
+ * MIT Licensed
5
+ */
6
+
7
+ /**
8
+ * ### addProperty (ctx, name, getter)
9
+ *
10
+ * Adds a property to the prototype of an object.
11
+ *
12
+ * utils.addProperty(chai.Assertion.prototype, 'foo', function () {
13
+ * var obj = utils.flag(this, 'object');
14
+ * new chai.Assertion(obj).to.be.instanceof(Foo);
15
+ * });
16
+ *
17
+ * Can also be accessed directly from `chai.Assertion`.
18
+ *
19
+ * chai.Assertion.addProperty('foo', fn);
20
+ *
21
+ * Then can be used as any other assertion.
22
+ *
23
+ * expect(myFoo).to.be.foo;
24
+ *
25
+ * @param {Object} ctx object to which the property is added
26
+ * @param {String} name of property to add
27
+ * @param {Function} getter function to be used for name
28
+ * @name addProperty
29
+ * @api public
30
+ */
31
+
32
+ module.exports = function (ctx, name, getter) {
33
+ Object.defineProperty(ctx, name,
34
+ { get: function () {
35
+ var result = getter.call(this);
36
+ return result === undefined ? this : result;
37
+ }
38
+ , configurable: true
39
+ });
40
+ };
@@ -0,0 +1,32 @@
1
+ /*!
2
+ * Chai - flag utility
3
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
4
+ * MIT Licensed
5
+ */
6
+
7
+ /**
8
+ * ### flag(object ,key, [value])
9
+ *
10
+ * Get or set a flag value on an object. If a
11
+ * value is provided it will be set, else it will
12
+ * return the currently set value or `undefined` if
13
+ * the value is not set.
14
+ *
15
+ * utils.flag(this, 'foo', 'bar'); // setter
16
+ * utils.flag(this, 'foo'); // getter, returns `bar`
17
+ *
18
+ * @param {Object} object (constructed Assertion
19
+ * @param {String} key
20
+ * @param {Mixed} value (optional)
21
+ * @name flag
22
+ * @api private
23
+ */
24
+
25
+ module.exports = function (obj, key, value) {
26
+ var flags = obj.__flags || (obj.__flags = Object.create(null));
27
+ if (arguments.length === 3) {
28
+ flags[key] = value;
29
+ } else {
30
+ return flags[key];
31
+ }
32
+ };
@@ -0,0 +1,18 @@
1
+ /*!
2
+ * Chai - getActual utility
3
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
4
+ * MIT Licensed
5
+ */
6
+
7
+ /**
8
+ * # getActual(object, [actual])
9
+ *
10
+ * Returns the `actual` value for an Assertion
11
+ *
12
+ * @param {Object} object (constructed Assertion)
13
+ * @param {Arguments} chai.Assertion.prototype.assert arguments
14
+ */
15
+
16
+ module.exports = function (obj, args) {
17
+ return args.length > 4 ? args[4] : obj._obj;
18
+ };
@@ -0,0 +1,25 @@
1
+ /*!
2
+ * Chai - getEnumerableProperties utility
3
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
4
+ * MIT Licensed
5
+ */
6
+
7
+ /**
8
+ * ### .getEnumerableProperties(object)
9
+ *
10
+ * This allows the retrieval of enumerable property names of an object,
11
+ * inherited or not.
12
+ *
13
+ * @param {Object} object
14
+ * @returns {Array}
15
+ * @name getEnumerableProperties
16
+ * @api public
17
+ */
18
+
19
+ module.exports = function getEnumerableProperties(object) {
20
+ var result = [];
21
+ for (var name in object) {
22
+ result.push(name);
23
+ }
24
+ return result;
25
+ };
@@ -0,0 +1,49 @@
1
+ /*!
2
+ * Chai - message composition utility
3
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
4
+ * MIT Licensed
5
+ */
6
+
7
+ /*!
8
+ * Module dependancies
9
+ */
10
+
11
+ var flag = require('./flag')
12
+ , getActual = require('./getActual')
13
+ , inspect = require('./inspect')
14
+ , objDisplay = require('./objDisplay');
15
+
16
+ /**
17
+ * ### .getMessage(object, message, negateMessage)
18
+ *
19
+ * Construct the error message based on flags
20
+ * and template tags. Template tags will return
21
+ * a stringified inspection of the object referenced.
22
+ *
23
+ * Message template tags:
24
+ * - `#{this}` current asserted object
25
+ * - `#{act}` actual value
26
+ * - `#{exp}` expected value
27
+ *
28
+ * @param {Object} object (constructed Assertion)
29
+ * @param {Arguments} chai.Assertion.prototype.assert arguments
30
+ * @name getMessage
31
+ * @api public
32
+ */
33
+
34
+ module.exports = function (obj, args) {
35
+ var negate = flag(obj, 'negate')
36
+ , val = flag(obj, 'object')
37
+ , expected = args[3]
38
+ , actual = getActual(obj, args)
39
+ , msg = negate ? args[2] : args[1]
40
+ , flagMsg = flag(obj, 'message');
41
+
42
+ msg = msg || '';
43
+ msg = msg
44
+ .replace(/#{this}/g, objDisplay(val))
45
+ .replace(/#{act}/g, objDisplay(actual))
46
+ .replace(/#{exp}/g, objDisplay(expected));
47
+
48
+ return flagMsg ? flagMsg + ': ' + msg : msg;
49
+ };
@@ -0,0 +1,20 @@
1
+ /*!
2
+ * Chai - getName utility
3
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
4
+ * MIT Licensed
5
+ */
6
+
7
+ /**
8
+ * # getName(func)
9
+ *
10
+ * Gets the name of a function, in a cross-browser way.
11
+ *
12
+ * @param {Function} a function (usually a constructor)
13
+ */
14
+
15
+ module.exports = function (func) {
16
+ if (func.name) return func.name;
17
+
18
+ var match = /^\s?function ([^(]*)\(/.exec(func);
19
+ return match && match[1] ? match[1] : "";
20
+ };
@@ -0,0 +1,102 @@
1
+ /*!
2
+ * Chai - getPathValue utility
3
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
4
+ * @see https://github.com/logicalparadox/filtr
5
+ * MIT Licensed
6
+ */
7
+
8
+ /**
9
+ * ### .getPathValue(path, object)
10
+ *
11
+ * This allows the retrieval of values in an
12
+ * object given a string path.
13
+ *
14
+ * var obj = {
15
+ * prop1: {
16
+ * arr: ['a', 'b', 'c']
17
+ * , str: 'Hello'
18
+ * }
19
+ * , prop2: {
20
+ * arr: [ { nested: 'Universe' } ]
21
+ * , str: 'Hello again!'
22
+ * }
23
+ * }
24
+ *
25
+ * The following would be the results.
26
+ *
27
+ * getPathValue('prop1.str', obj); // Hello
28
+ * getPathValue('prop1.att[2]', obj); // b
29
+ * getPathValue('prop2.arr[0].nested', obj); // Universe
30
+ *
31
+ * @param {String} path
32
+ * @param {Object} object
33
+ * @returns {Object} value or `undefined`
34
+ * @name getPathValue
35
+ * @api public
36
+ */
37
+
38
+ var getPathValue = module.exports = function (path, obj) {
39
+ var parsed = parsePath(path);
40
+ return _getPathValue(parsed, obj);
41
+ };
42
+
43
+ /*!
44
+ * ## parsePath(path)
45
+ *
46
+ * Helper function used to parse string object
47
+ * paths. Use in conjunction with `_getPathValue`.
48
+ *
49
+ * var parsed = parsePath('myobject.property.subprop');
50
+ *
51
+ * ### Paths:
52
+ *
53
+ * * Can be as near infinitely deep and nested
54
+ * * Arrays are also valid using the formal `myobject.document[3].property`.
55
+ *
56
+ * @param {String} path
57
+ * @returns {Object} parsed
58
+ * @api private
59
+ */
60
+
61
+ function parsePath (path) {
62
+ var str = path.replace(/\[/g, '.[')
63
+ , parts = str.match(/(\\\.|[^.]+?)+/g);
64
+ return parts.map(function (value) {
65
+ var re = /\[(\d+)\]$/
66
+ , mArr = re.exec(value)
67
+ if (mArr) return { i: parseFloat(mArr[1]) };
68
+ else return { p: value };
69
+ });
70
+ };
71
+
72
+ /*!
73
+ * ## _getPathValue(parsed, obj)
74
+ *
75
+ * Helper companion function for `.parsePath` that returns
76
+ * the value located at the parsed address.
77
+ *
78
+ * var value = getPathValue(parsed, obj);
79
+ *
80
+ * @param {Object} parsed definition from `parsePath`.
81
+ * @param {Object} object to search against
82
+ * @returns {Object|Undefined} value
83
+ * @api private
84
+ */
85
+
86
+ function _getPathValue (parsed, obj) {
87
+ var tmp = obj
88
+ , res;
89
+ for (var i = 0, l = parsed.length; i < l; i++) {
90
+ var part = parsed[i];
91
+ if (tmp) {
92
+ if ('undefined' !== typeof part.p)
93
+ tmp = tmp[part.p];
94
+ else if ('undefined' !== typeof part.i)
95
+ tmp = tmp[part.i];
96
+ if (i == (l - 1)) res = tmp;
97
+ } else {
98
+ res = undefined;
99
+ }
100
+ }
101
+ return res;
102
+ };
@@ -0,0 +1,35 @@
1
+ /*!
2
+ * Chai - getProperties utility
3
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
4
+ * MIT Licensed
5
+ */
6
+
7
+ /**
8
+ * ### .getProperties(object)
9
+ *
10
+ * This allows the retrieval of property names of an object, enumerable or not,
11
+ * inherited or not.
12
+ *
13
+ * @param {Object} object
14
+ * @returns {Array}
15
+ * @name getProperties
16
+ * @api public
17
+ */
18
+
19
+ module.exports = function getProperties(object) {
20
+ var result = Object.getOwnPropertyNames(subject);
21
+
22
+ function addProperty(property) {
23
+ if (result.indexOf(property) === -1) {
24
+ result.push(property);
25
+ }
26
+ }
27
+
28
+ var proto = Object.getPrototypeOf(subject);
29
+ while (proto !== null) {
30
+ Object.getOwnPropertyNames(proto).forEach(addProperty);
31
+ proto = Object.getPrototypeOf(proto);
32
+ }
33
+
34
+ return result;
35
+ };
@@ -0,0 +1,114 @@
1
+ /*!
2
+ * chai
3
+ * Copyright(c) 2011 Jake Luer <jake@alogicalparadox.com>
4
+ * MIT Licensed
5
+ */
6
+
7
+ /*!
8
+ * Main exports
9
+ */
10
+
11
+ var exports = module.exports = {};
12
+
13
+ /*!
14
+ * test utility
15
+ */
16
+
17
+ exports.test = require('./test');
18
+
19
+ /*!
20
+ * type utility
21
+ */
22
+
23
+ exports.type = require('./type');
24
+
25
+ /*!
26
+ * message utility
27
+ */
28
+
29
+ exports.getMessage = require('./getMessage');
30
+
31
+ /*!
32
+ * actual utility
33
+ */
34
+
35
+ exports.getActual = require('./getActual');
36
+
37
+ /*!
38
+ * Inspect util
39
+ */
40
+
41
+ exports.inspect = require('./inspect');
42
+
43
+ /*!
44
+ * Object Display util
45
+ */
46
+
47
+ exports.objDisplay = require('./objDisplay');
48
+
49
+ /*!
50
+ * Flag utility
51
+ */
52
+
53
+ exports.flag = require('./flag');
54
+
55
+ /*!
56
+ * Flag transferring utility
57
+ */
58
+
59
+ exports.transferFlags = require('./transferFlags');
60
+
61
+ /*!
62
+ * Deep equal utility
63
+ */
64
+
65
+ exports.eql = require('deep-eql');
66
+
67
+ /*!
68
+ * Deep path value
69
+ */
70
+
71
+ exports.getPathValue = require('./getPathValue');
72
+
73
+ /*!
74
+ * Function name
75
+ */
76
+
77
+ exports.getName = require('./getName');
78
+
79
+ /*!
80
+ * add Property
81
+ */
82
+
83
+ exports.addProperty = require('./addProperty');
84
+
85
+ /*!
86
+ * add Method
87
+ */
88
+
89
+ exports.addMethod = require('./addMethod');
90
+
91
+ /*!
92
+ * overwrite Property
93
+ */
94
+
95
+ exports.overwriteProperty = require('./overwriteProperty');
96
+
97
+ /*!
98
+ * overwrite Method
99
+ */
100
+
101
+ exports.overwriteMethod = require('./overwriteMethod');
102
+
103
+ /*!
104
+ * Add a chainable method
105
+ */
106
+
107
+ exports.addChainableMethod = require('./addChainableMethod');
108
+
109
+ /*!
110
+ * Overwrite chainable method
111
+ */
112
+
113
+ exports.overwriteChainableMethod = require('./overwriteChainableMethod');
114
+