vulcan 0.2.5 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (211) hide show
  1. data/README.md +1 -80
  2. data/lib/vulcan/cli.rb +12 -33
  3. data/lib/vulcan/version.rb +1 -1
  4. data/server/bin/make +3 -1
  5. data/server/lib/spawner.js +4 -9
  6. data/server/node_modules/connect-form/node_modules/formidable/Readme.md +2 -13
  7. data/server/node_modules/connect-form/node_modules/formidable/lib/incoming_form.js +7 -19
  8. data/server/node_modules/connect-form/node_modules/formidable/lib/multipart_parser.js +1 -12
  9. data/server/node_modules/connect-form/node_modules/formidable/package.json +1 -1
  10. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +10 -0
  11. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +9 -0
  12. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/simple/test-multipart-parser.js +1 -1
  13. data/server/node_modules/cradle/lib/cradle.js +1 -0
  14. data/server/node_modules/cradle/node_modules/vows/LICENSE +20 -0
  15. data/server/node_modules/cradle/node_modules/vows/Makefile +7 -0
  16. data/server/node_modules/cradle/node_modules/vows/README.md +39 -0
  17. data/server/node_modules/cradle/node_modules/vows/bin/vows +515 -0
  18. data/server/node_modules/cradle/node_modules/vows/lib/assert/error.js +27 -0
  19. data/server/node_modules/cradle/node_modules/vows/lib/assert/macros.js +215 -0
  20. data/server/node_modules/cradle/node_modules/vows/lib/assert/utils.js +77 -0
  21. data/server/node_modules/cradle/node_modules/vows/lib/vows.js +193 -0
  22. data/server/node_modules/cradle/node_modules/vows/lib/vows/console.js +131 -0
  23. data/server/node_modules/cradle/node_modules/vows/lib/vows/context.js +55 -0
  24. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/file.js +29 -0
  25. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-foot.html +2 -0
  26. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-head.html +61 -0
  27. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-html.js +54 -0
  28. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-json.js +54 -0
  29. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-plain.js +38 -0
  30. data/server/node_modules/cradle/node_modules/vows/lib/vows/extras.js +28 -0
  31. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/dot-matrix.js +67 -0
  32. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/json.js +16 -0
  33. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/silent.js +8 -0
  34. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/spec.js +44 -0
  35. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/watch.js +39 -0
  36. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/xunit.js +90 -0
  37. data/server/node_modules/cradle/node_modules/vows/lib/vows/suite.js +319 -0
  38. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/LICENSE +20 -0
  39. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/Makefile +4 -0
  40. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/README.md +72 -0
  41. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/lib/eyes.js +233 -0
  42. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/package.json +14 -0
  43. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/test/eyes-test.js +55 -0
  44. data/server/node_modules/cradle/node_modules/vows/package.json +14 -0
  45. data/server/node_modules/cradle/node_modules/vows/test/assert-test.js +135 -0
  46. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/failing.js +18 -0
  47. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/log.js +18 -0
  48. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/passing.js +17 -0
  49. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/stderr.js +18 -0
  50. data/server/node_modules/cradle/node_modules/vows/test/isolate-test.js +140 -0
  51. data/server/node_modules/cradle/node_modules/vows/test/testInherit.js +133 -0
  52. data/server/node_modules/cradle/node_modules/vows/test/vows-error-test.js +51 -0
  53. data/server/node_modules/cradle/node_modules/vows/test/vows-test.js +374 -0
  54. data/server/node_modules/cradle/package.json +3 -3
  55. data/server/node_modules/cradle/test/cache-test.js +7 -6
  56. data/server/node_modules/cradle/test/cradle-test.js +5 -4
  57. data/server/node_modules/cradle/test/response-test.js +6 -5
  58. data/server/node_modules/express/History.md +1 -53
  59. data/server/node_modules/express/Makefile +9 -3
  60. data/server/node_modules/express/Readme.md +1 -3
  61. data/server/node_modules/express/bin/express +66 -65
  62. data/server/node_modules/express/lib/express.js +1 -1
  63. data/server/node_modules/express/lib/request.js +9 -23
  64. data/server/node_modules/express/lib/response.js +2 -3
  65. data/server/node_modules/express/lib/utils.js +0 -13
  66. data/server/node_modules/express/lib/view.js +16 -19
  67. data/server/node_modules/express/lib/view/view.js +1 -2
  68. data/server/node_modules/express/node_modules/connect/lib/connect.js +1 -1
  69. data/server/node_modules/express/node_modules/connect/lib/http.js +0 -2
  70. data/server/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js +31 -135
  71. data/server/node_modules/express/node_modules/connect/lib/middleware/limit.js +1 -5
  72. data/server/node_modules/express/node_modules/connect/lib/middleware/session.js +2 -2
  73. data/server/node_modules/express/node_modules/connect/lib/middleware/static.js +21 -26
  74. data/server/node_modules/express/node_modules/connect/lib/middleware/staticCache.js +38 -91
  75. data/server/node_modules/express/node_modules/connect/lib/middleware/vhost.js +1 -1
  76. data/server/node_modules/express/node_modules/connect/lib/utils.js +4 -11
  77. data/server/node_modules/express/node_modules/connect/package.json +6 -7
  78. data/server/node_modules/express/node_modules/connect/test.js +31 -44
  79. data/server/node_modules/express/node_modules/mime/index.js +1 -0
  80. data/server/node_modules/express/node_modules/mime/mime.js +3 -3
  81. data/server/node_modules/express/node_modules/mime/{types/mime.types → mime.types} +0 -0
  82. data/server/node_modules/express/node_modules/mime/{types/node.types → node.types} +0 -17
  83. data/server/node_modules/express/node_modules/mime/package.json +10 -21
  84. data/server/node_modules/express/node_modules/mime/test.js +3 -2
  85. data/server/node_modules/express/node_modules/qs/History.md +0 -11
  86. data/server/node_modules/express/node_modules/qs/Makefile +3 -1
  87. data/server/node_modules/express/node_modules/qs/Readme.md +4 -2
  88. data/server/node_modules/express/node_modules/qs/lib/querystring.js +74 -100
  89. data/server/node_modules/express/node_modules/qs/package.json +2 -9
  90. data/server/node_modules/express/node_modules/qs/support/expresso/History.md +128 -0
  91. data/server/node_modules/express/node_modules/qs/support/expresso/Makefile +53 -0
  92. data/server/node_modules/express/node_modules/qs/support/expresso/Readme.md +61 -0
  93. data/server/node_modules/express/node_modules/qs/support/expresso/bin/expresso +856 -0
  94. data/server/node_modules/express/node_modules/qs/support/expresso/docs/api.html +1080 -0
  95. data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.html +377 -0
  96. data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.md +290 -0
  97. data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/foot.html +3 -0
  98. data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/head.html +42 -0
  99. data/server/node_modules/express/node_modules/qs/support/expresso/lib/bar.js +4 -0
  100. data/server/node_modules/express/node_modules/qs/support/expresso/lib/foo.js +16 -0
  101. data/server/node_modules/express/node_modules/qs/support/expresso/package.json +12 -0
  102. data/server/node_modules/express/node_modules/qs/support/expresso/test/assert.test.js +91 -0
  103. data/server/node_modules/express/node_modules/qs/support/expresso/test/async.test.js +12 -0
  104. data/server/node_modules/express/node_modules/qs/support/expresso/test/bar.test.js +13 -0
  105. data/server/node_modules/express/node_modules/qs/support/expresso/test/foo.test.js +14 -0
  106. data/server/node_modules/express/node_modules/qs/support/expresso/test/http.test.js +146 -0
  107. data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/async.test.js +39 -0
  108. data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/http.test.js +48 -0
  109. data/server/node_modules/express/node_modules/qs/support/should/History.md +22 -0
  110. data/server/node_modules/express/node_modules/qs/support/should/Makefile +6 -0
  111. data/server/node_modules/express/node_modules/qs/support/should/Readme.md +248 -0
  112. data/server/node_modules/express/node_modules/qs/support/should/examples/runner.js +53 -0
  113. data/server/node_modules/express/node_modules/qs/support/should/index.js +2 -0
  114. data/server/node_modules/express/node_modules/qs/support/should/lib/eql.js +91 -0
  115. data/server/node_modules/express/node_modules/qs/support/should/lib/should.js +548 -0
  116. data/server/node_modules/express/node_modules/qs/support/should/package.json +8 -0
  117. data/server/node_modules/express/node_modules/qs/support/should/test/should.test.js +358 -0
  118. data/server/node_modules/express/node_modules/qs/test/{parse.js → parse.test.js} +2 -1
  119. data/server/node_modules/express/node_modules/qs/test/{stringify.js → stringify.test.js} +0 -0
  120. data/server/node_modules/express/package.json +8 -9
  121. data/server/node_modules/node-uuid/README.md +67 -166
  122. data/server/node_modules/node-uuid/package.json +3 -5
  123. data/server/node_modules/node-uuid/{benchmark → test}/benchmark-native.c +0 -0
  124. data/server/node_modules/node-uuid/test/benchmark.js +27 -0
  125. data/server/node_modules/node-uuid/test/test.html +0 -3
  126. data/server/node_modules/node-uuid/test/test.js +57 -214
  127. data/server/node_modules/node-uuid/uuid.js +56 -225
  128. data/server/node_modules/restler/README.md +7 -20
  129. data/server/node_modules/restler/bin/restler +1 -1
  130. data/server/node_modules/restler/lib/multipartform.js +8 -9
  131. data/server/node_modules/restler/lib/restler.js +22 -64
  132. data/server/node_modules/restler/package.json +2 -2
  133. data/server/node_modules/restler/test/restler.js +2 -22
  134. data/server/node_modules/restler/test/test_helper.js +1 -20
  135. data/server/package.json +10 -10
  136. data/server/web.js +7 -30
  137. metadata +96 -89
  138. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/file/plain.txt +0 -1
  139. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/no-filename/generic.http +0 -13
  140. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/js/no-filename.js +0 -3
  141. data/server/node_modules/express/node_modules/connect/node_modules/formidable/Makefile +0 -14
  142. data/server/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md +0 -286
  143. data/server/node_modules/express/node_modules/connect/node_modules/formidable/TODO +0 -3
  144. data/server/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js +0 -70
  145. data/server/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js +0 -43
  146. data/server/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js +0 -48
  147. data/server/node_modules/express/node_modules/connect/node_modules/formidable/index.js +0 -1
  148. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js +0 -61
  149. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js +0 -377
  150. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js +0 -3
  151. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js +0 -312
  152. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js +0 -25
  153. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/util.js +0 -6
  154. data/server/node_modules/express/node_modules/connect/node_modules/formidable/package.json +0 -22
  155. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js +0 -19
  156. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt +0 -1
  157. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt +0 -1
  158. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/no-filename/generic.http +0 -13
  159. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md +0 -3
  160. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +0 -26
  161. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-firefox-3.6.http +0 -24
  162. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-safari-5.http +0 -23
  163. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +0 -24
  164. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-7.http +0 -22
  165. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-8.http +0 -22
  166. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-safari-5.http +0 -22
  167. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js +0 -3
  168. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js +0 -21
  169. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multi_video.upload +0 -0
  170. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js +0 -72
  171. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js +0 -89
  172. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js +0 -24
  173. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js +0 -80
  174. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js +0 -104
  175. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js +0 -715
  176. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js +0 -50
  177. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js +0 -45
  178. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js +0 -72
  179. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js +0 -2
  180. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js +0 -63
  181. data/server/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js +0 -47
  182. data/server/node_modules/express/node_modules/mkdirp/LICENSE +0 -21
  183. data/server/node_modules/express/node_modules/mkdirp/README.markdown +0 -21
  184. data/server/node_modules/express/node_modules/mkdirp/examples/pow.js +0 -6
  185. data/server/node_modules/express/node_modules/mkdirp/examples/pow.js.orig +0 -6
  186. data/server/node_modules/express/node_modules/mkdirp/examples/pow.js.rej +0 -19
  187. data/server/node_modules/express/node_modules/mkdirp/index.js +0 -20
  188. data/server/node_modules/express/node_modules/mkdirp/package.json +0 -23
  189. data/server/node_modules/express/node_modules/mkdirp/test/mkdirp.js +0 -28
  190. data/server/node_modules/express/node_modules/mkdirp/test/race.js +0 -41
  191. data/server/node_modules/express/node_modules/mkdirp/test/rel.js +0 -32
  192. data/server/node_modules/express/node_modules/qs/test/mocha.opts +0 -2
  193. data/server/node_modules/express/testing/foo/app.js +0 -35
  194. data/server/node_modules/express/testing/foo/package.json +0 -9
  195. data/server/node_modules/express/testing/foo/public/stylesheets/style.css +0 -8
  196. data/server/node_modules/express/testing/foo/routes/index.js +0 -10
  197. data/server/node_modules/express/testing/foo/views/index.jade +0 -2
  198. data/server/node_modules/express/testing/foo/views/layout.jade +0 -6
  199. data/server/node_modules/express/testing/index.js +0 -43
  200. data/server/node_modules/express/testing/public/test.txt +0 -2971
  201. data/server/node_modules/express/testing/views/page.html +0 -1
  202. data/server/node_modules/express/testing/views/page.jade +0 -3
  203. data/server/node_modules/express/testing/views/test.md +0 -1
  204. data/server/node_modules/express/testing/views/user/index.jade +0 -1
  205. data/server/node_modules/express/testing/views/user/list.jade +0 -1
  206. data/server/node_modules/node-uuid/benchmark/README.md +0 -53
  207. data/server/node_modules/node-uuid/benchmark/bench.gnu +0 -174
  208. data/server/node_modules/node-uuid/benchmark/bench.sh +0 -34
  209. data/server/node_modules/node-uuid/benchmark/benchmark.js +0 -84
  210. data/server/node_modules/node-uuid/test/benchmark-native +0 -0
  211. data/server/node_modules/node-uuid/test/compare_v1.js +0 -63
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 cloudhead
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,4 @@
1
+ test:
2
+ @@node test/eyes-test.js
3
+
4
+ .PHONY: test
@@ -0,0 +1,72 @@
1
+ eyes
2
+ ====
3
+
4
+ a customizable value inspector for Node.js
5
+
6
+ synopsis
7
+ --------
8
+
9
+ I was tired of looking at cluttered output in the console -- something needed to be done,
10
+ `sys.inspect()` didn't display regexps correctly, and was too verbose, and I had an hour or two to spare.
11
+ So I decided to have some fun. _eyes_ were born.
12
+
13
+ ![eyes-ss](http://dl.dropbox.com/u/251849/eyes-js-ss.gif)
14
+
15
+ _example of the output of a user-customized eyes.js inspector_
16
+
17
+ *eyes* also deals with circular objects in an intelligent way, and can pretty-print object literals.
18
+
19
+ usage
20
+ -----
21
+
22
+ var inspect = require('eyes').inspector({styles: {all: 'magenta'}});
23
+
24
+ inspect(something); // inspect with the settings passed to `inspector`
25
+
26
+ or
27
+
28
+ var eyes = require('eyes');
29
+
30
+ eyes.inspect(something); // inspect with the default settings
31
+
32
+ you can pass a _label_ to `inspect()`, to keep track of your inspections:
33
+
34
+ eyes.inspect(something, "a random value");
35
+
36
+ If you want to return the output of eyes without printing it, you can set it up this way:
37
+
38
+ var inspect = require('eyes').inspector({ stream: null });
39
+
40
+ sys.puts(inspect({ something: 42 }));
41
+
42
+ customization
43
+ -------------
44
+
45
+ These are the default styles and settings used by _eyes_.
46
+ styles: { // Styles applied to stdout
47
+ all: 'cyan', // Overall style applied to everything
48
+ label: 'underline', // Inspection labels, like 'array' in `array: [1, 2, 3]`
49
+ other: 'inverted', // Objects which don't have a literal representation, such as functions
50
+ key: 'bold', // The keys in object literals, like 'a' in `{a: 1}`
51
+
52
+ special: 'grey', // null, undefined...
53
+ string: 'green',
54
+ number: 'magenta',
55
+ bool: 'blue', // true false
56
+ regexp: 'green', // /\d+/
57
+ },
58
+ pretty: true, // Indent object literals
59
+ hideFunctions: false, // Don't output functions at all
60
+ stream: process.stdout, // Stream to write to, or null
61
+ maxLength: 2048 // Truncate output if longer
62
+
63
+ You can overwrite them with your own, by passing a similar object to `inspector()` or `inspect()`.
64
+
65
+ var inspect = require('eyes').inspector({
66
+ styles: {
67
+ all: 'magenta',
68
+ special: 'bold'
69
+ },
70
+ maxLength: 512
71
+ });
72
+
@@ -0,0 +1,233 @@
1
+ //
2
+ // Eyes.js - a customizable value inspector for Node.js
3
+ //
4
+ // usage:
5
+ //
6
+ // var inspect = require('eyes').inspector({styles: {all: 'magenta'}});
7
+ // inspect(something); // inspect with the settings passed to `inspector`
8
+ //
9
+ // or
10
+ //
11
+ // var eyes = require('eyes');
12
+ // eyes.inspect(something); // inspect with the default settings
13
+ //
14
+ var eyes = exports,
15
+ stack = [];
16
+
17
+ eyes.defaults = {
18
+ styles: { // Styles applied to stdout
19
+ all: 'cyan', // Overall style applied to everything
20
+ label: 'underline', // Inspection labels, like 'array' in `array: [1, 2, 3]`
21
+ other: 'inverted', // Objects which don't have a literal representation, such as functions
22
+ key: 'bold', // The keys in object literals, like 'a' in `{a: 1}`
23
+ special: 'grey', // null, undefined...
24
+ string: 'green',
25
+ number: 'magenta',
26
+ bool: 'blue', // true false
27
+ regexp: 'green', // /\d+/
28
+ },
29
+ pretty: true, // Indent object literals
30
+ hideFunctions: false,
31
+ stream: process.stdout,
32
+ maxLength: 2048 // Truncate output if longer
33
+ };
34
+
35
+ // Return a curried inspect() function, with the `options` argument filled in.
36
+ eyes.inspector = function (options) {
37
+ var that = this;
38
+ return function (obj, label, opts) {
39
+ return that.inspect.call(that, obj, label,
40
+ merge(options || {}, opts || {}));
41
+ };
42
+ };
43
+
44
+ // If we have a `stream` defined, use it to print a styled string,
45
+ // if not, we just return the stringified object.
46
+ eyes.inspect = function (obj, label, options) {
47
+ options = merge(this.defaults, options || {});
48
+
49
+ if (options.stream) {
50
+ return this.print(stringify(obj, options), label, options);
51
+ } else {
52
+ return stringify(obj, options) + (options.styles ? '\033[39m' : '');
53
+ }
54
+ };
55
+
56
+ // Output using the 'stream', and an optional label
57
+ // Loop through `str`, and truncate it after `options.maxLength` has been reached.
58
+ // Because escape sequences are, at this point embeded within
59
+ // the output string, we can't measure the length of the string
60
+ // in a useful way, without separating what is an escape sequence,
61
+ // versus a printable character (`c`). So we resort to counting the
62
+ // length manually.
63
+ eyes.print = function (str, label, options) {
64
+ for (var c = 0, i = 0; i < str.length; i++) {
65
+ if (str.charAt(i) === '\033') { i += 4 } // `4` because '\033[25m'.length + 1 == 5
66
+ else if (c === options.maxLength) {
67
+ str = str.slice(0, i - 1) + '…';
68
+ break;
69
+ } else { c++ }
70
+ }
71
+ return options.stream.write.call(options.stream, (label ?
72
+ this.stylize(label, options.styles.label, options.styles) + ': ' : '') +
73
+ this.stylize(str, options.styles.all, options.styles) + '\033[0m' + "\n");
74
+ };
75
+
76
+ // Apply a style to a string, eventually,
77
+ // I'd like this to support passing multiple
78
+ // styles.
79
+ eyes.stylize = function (str, style, styles) {
80
+ var codes = {
81
+ 'bold' : [1, 22],
82
+ 'underline' : [4, 24],
83
+ 'inverse' : [7, 27],
84
+ 'cyan' : [36, 39],
85
+ 'magenta' : [35, 39],
86
+ 'blue' : [34, 39],
87
+ 'yellow' : [33, 39],
88
+ 'green' : [32, 39],
89
+ 'red' : [31, 39],
90
+ 'grey' : [90, 39]
91
+ }, endCode;
92
+
93
+ if (style && codes[style]) {
94
+ endCode = (codes[style][1] === 39 && styles.all) ? codes[styles.all][0]
95
+ : codes[style][1];
96
+ return '\033[' + codes[style][0] + 'm' + str +
97
+ '\033[' + endCode + 'm';
98
+ } else { return str }
99
+ };
100
+
101
+ // Convert any object to a string, ready for output.
102
+ // When an 'array' or an 'object' are encountered, they are
103
+ // passed to specialized functions, which can then recursively call
104
+ // stringify().
105
+ function stringify(obj, options) {
106
+ var that = this, stylize = function (str, style) {
107
+ return eyes.stylize(str, options.styles[style], options.styles)
108
+ }, index, result;
109
+
110
+ if ((index = stack.indexOf(obj)) !== -1) {
111
+ return stylize(new(Array)(stack.length - index + 1).join('.'), 'special');
112
+ }
113
+ stack.push(obj);
114
+
115
+ result = (function (obj) {
116
+ switch (typeOf(obj)) {
117
+ case "string" : obj = stringifyString(obj.indexOf("'") === -1 ? "'" + obj + "'"
118
+ : '"' + obj + '"');
119
+ return stylize(obj, 'string');
120
+ case "regexp" : return stylize('/' + obj.source + '/', 'regexp');
121
+ case "number" : return stylize(obj + '', 'number');
122
+ case "function" : return options.stream ? stylize("Function", 'other') : '[Function]';
123
+ case "null" : return stylize("null", 'special');
124
+ case "undefined": return stylize("undefined", 'special');
125
+ case "boolean" : return stylize(obj + '', 'bool');
126
+ case "date" : return stylize(obj.toUTCString());
127
+ case "array" : return stringifyArray(obj, options, stack.length);
128
+ case "object" : return stringifyObject(obj, options, stack.length);
129
+ }
130
+ })(obj);
131
+
132
+ stack.pop();
133
+ return result;
134
+ };
135
+
136
+ // Escape invisible characters in a string
137
+ function stringifyString (str, options) {
138
+ return str.replace(/\\/g, '\\\\')
139
+ .replace(/\n/g, '\\n')
140
+ .replace(/[\u0001-\u001F]/g, function (match) {
141
+ return '\\0' + match[0].charCodeAt(0).toString(8);
142
+ });
143
+ }
144
+
145
+ // Convert an array to a string, such as [1, 2, 3].
146
+ // This function calls stringify() for each of the elements
147
+ // in the array.
148
+ function stringifyArray(ary, options, level) {
149
+ var out = [];
150
+ var pretty = options.pretty && (ary.length > 4 || ary.some(function (o) {
151
+ return (typeof(o) === 'object' && Object.keys(o).length > 0) ||
152
+ (Array.isArray(o) && o.length > 0);
153
+ }));
154
+ var ws = pretty ? '\n' + new(Array)(level * 4 + 1).join(' ') : ' ';
155
+
156
+ for (var i = 0; i < ary.length; i++) {
157
+ out.push(stringify(ary[i], options));
158
+ }
159
+
160
+ if (out.length === 0) {
161
+ return '[]';
162
+ } else {
163
+ return '[' + ws
164
+ + out.join(',' + (pretty ? ws : ' '))
165
+ + (pretty ? ws.slice(0, -4) : ws) +
166
+ ']';
167
+ }
168
+ };
169
+
170
+ // Convert an object to a string, such as {a: 1}.
171
+ // This function calls stringify() for each of its values,
172
+ // and does not output functions or prototype values.
173
+ function stringifyObject(obj, options, level) {
174
+ var out = [];
175
+ var pretty = options.pretty && (Object.keys(obj).length > 2 ||
176
+ Object.keys(obj).some(function (k) { return typeof(obj[k]) === 'object' }));
177
+ var ws = pretty ? '\n' + new(Array)(level * 4 + 1).join(' ') : ' ';
178
+
179
+ Object.keys(obj).forEach(function (k) {
180
+ if (obj.hasOwnProperty(k) && !(obj[k] instanceof Function && options.hideFunctions)) {
181
+ out.push(eyes.stylize(k, options.styles.key, options.styles) + ': ' +
182
+ stringify(obj[k], options));
183
+ }
184
+ });
185
+
186
+ if (out.length === 0) {
187
+ return '{}';
188
+ } else {
189
+ return "{" + ws
190
+ + out.join(',' + (pretty ? ws : ' '))
191
+ + (pretty ? ws.slice(0, -4) : ws) +
192
+ "}";
193
+ }
194
+ };
195
+
196
+ // A better `typeof`
197
+ function typeOf(value) {
198
+ var s = typeof(value),
199
+ types = [Object, Array, String, RegExp, Number, Function, Boolean, Date];
200
+
201
+ if (s === 'object' || s === 'function') {
202
+ if (value) {
203
+ types.forEach(function (t) {
204
+ if (value instanceof t) { s = t.name.toLowerCase() }
205
+ });
206
+ } else { s = 'null' }
207
+ }
208
+ return s;
209
+ }
210
+
211
+ function merge(/* variable args */) {
212
+ var objs = Array.prototype.slice.call(arguments);
213
+ var target = {};
214
+
215
+ objs.forEach(function (o) {
216
+ Object.keys(o).forEach(function (k) {
217
+ if (k === 'styles') {
218
+ if (! o.styles) {
219
+ target.styles = false;
220
+ } else {
221
+ target.styles = {}
222
+ for (var s in o.styles) {
223
+ target.styles[s] = o.styles[s];
224
+ }
225
+ }
226
+ } else {
227
+ target[k] = o[k];
228
+ }
229
+ });
230
+ });
231
+ return target;
232
+ }
233
+
@@ -0,0 +1,14 @@
1
+ {
2
+ "name" : "eyes",
3
+ "description" : "a customizable value inspector",
4
+ "url" : "http://github.com/cloudhead/eyes.js",
5
+ "keywords" : ["inspector", "debug", "inspect", "print"],
6
+ "author" : "Alexis Sellier <self@cloudhead.net>",
7
+ "contributors" : [],
8
+ "licenses" : ["MIT"],
9
+ "dependencies" : [],
10
+ "main" : "./lib/eyes",
11
+ "version" : "0.1.6",
12
+ "directories" : { "lib": "./lib", "test": "./test" },
13
+ "engines" : { "node": "> 0.1.90" }
14
+ }
@@ -0,0 +1,55 @@
1
+ var sys = require('sys');
2
+ var eyes = require('../lib/eyes');
3
+
4
+ eyes.inspect({
5
+ number: 42,
6
+ string: "John Galt",
7
+ regexp: /[a-z]+/,
8
+ array: [99, 168, 'x', {}],
9
+ func: function () {},
10
+ bool: false,
11
+ nil: null,
12
+ undef: undefined,
13
+ object: {attr: []}
14
+ }, "native types");
15
+
16
+ eyes.inspect({
17
+ number: new(Number)(42),
18
+ string: new(String)("John Galt"),
19
+ regexp: new(RegExp)(/[a-z]+/),
20
+ array: new(Array)(99, 168, 'x', {}),
21
+ bool: new(Boolean)(false),
22
+ object: new(Object)({attr: []}),
23
+ date: new(Date)
24
+ }, "wrapped types");
25
+
26
+ var obj = {};
27
+ obj.that = { self: obj };
28
+ obj.self = obj;
29
+
30
+ eyes.inspect(obj, "circular object");
31
+ eyes.inspect({hello: 'moto'}, "small object");
32
+ eyes.inspect({hello: new(Array)(6) }, "big object");
33
+ eyes.inspect(["hello 'world'", 'hello "world"'], "quotes");
34
+ eyes.inspect({
35
+ recommendations: [{
36
+ id: 'a7a6576c2c822c8e2bd81a27e41437d8',
37
+ key: [ 'spree', 3.764316258020699 ],
38
+ value: {
39
+ _id: 'a7a6576c2c822c8e2bd81a27e41437d8',
40
+ _rev: '1-2e2d2f7fd858c4a5984bcf809d22ed98',
41
+ type: 'domain',
42
+ domain: 'spree',
43
+ weight: 3.764316258020699,
44
+ product_id: 30
45
+ }
46
+ }]
47
+ }, 'complex');
48
+
49
+
50
+ var inspect = eyes.inspector({ stream: null });
51
+
52
+ sys.puts(inspect('something', "something"));
53
+ sys.puts(inspect("something else"));
54
+
55
+ sys.puts(inspect(["no color"], null, { styles: false }));
@@ -0,0 +1,14 @@
1
+ {
2
+ "name" : "vows",
3
+ "description" : "Asynchronous BDD & continuous integration for node.js",
4
+ "url" : "http://vowsjs.org",
5
+ "keywords" : ["testing", "spec", "test", "BDD"],
6
+ "author" : "Alexis Sellier <self@cloudhead.net>",
7
+ "contributors" : [{ "name": "Charlie Robbins", "email": "charlie.robbins@gmail.com" }],
8
+ "dependencies" : {"eyes": ">=0.1.6"},
9
+ "main" : "./lib/vows",
10
+ "bin" : { "vows": "./bin/vows" },
11
+ "directories" : { "test": "./test", "bin": "./bin" },
12
+ "version" : "0.5.11",
13
+ "engines" : {"node": ">=0.2.6"}
14
+ }
@@ -0,0 +1,135 @@
1
+ var vows = require('../lib/vows');
2
+ var assert = require('assert');
3
+
4
+ vows.describe('vows/assert').addBatch({
5
+ "The Assertion module": {
6
+ topic: require('assert'),
7
+
8
+ "`equal`": function (assert) {
9
+ assert.equal("hello world", "hello world");
10
+ assert.equal(1, true);
11
+ },
12
+ "`match`": function (assert) {
13
+ assert.match("hello world", /^[a-z]+ [a-z]+$/);
14
+ },
15
+ "`length`": function (assert) {
16
+ assert.length("hello world", 11);
17
+ assert.length([1, 2, 3], 3);
18
+ },
19
+ "`isDefined`": function (assert) {
20
+ assert.isDefined(null);
21
+ assertError(assert.isDefined, undefined);
22
+ },
23
+ "`include`": function (assert) {
24
+ assert.include("hello world", "world");
25
+ assert.include([0, 42, 0], 42);
26
+ assert.include({goo:true}, 'goo');
27
+ },
28
+ "`deepInclude`": function (assert) {
29
+ assert.deepInclude([{a:'b'},{c:'d'}], {a:'b'});
30
+ assert.deepInclude("hello world", "world");
31
+ assert.deepInclude({goo:true}, 'goo');
32
+ },
33
+ "`typeOf`": function (assert) {
34
+ assert.typeOf('goo', 'string');
35
+ assert.typeOf(42, 'number');
36
+ assert.typeOf([], 'array');
37
+ assert.typeOf({}, 'object');
38
+ assert.typeOf(false, 'boolean');
39
+ },
40
+ "`instanceOf`": function (assert) {
41
+ assert.instanceOf([], Array);
42
+ assert.instanceOf(function () {}, Function);
43
+ },
44
+ "`isArray`": function (assert) {
45
+ assert.isArray([]);
46
+ assertError(assert.isArray, {});
47
+ },
48
+ "`isString`": function (assert) {
49
+ assert.isString("");
50
+ },
51
+ "`isObject`": function (assert) {
52
+ assert.isObject({});
53
+ assertError(assert.isObject, []);
54
+ },
55
+ "`isNumber`": function (assert) {
56
+ assert.isNumber(0);
57
+ },
58
+ "`isBoolean`": function (assert){
59
+ assert.isBoolean(true);
60
+ assert.isBoolean(false);
61
+ assertError(assert.isBoolean, 0);
62
+ },
63
+ "`isNan`": function (assert) {
64
+ assert.isNaN(0/0);
65
+ },
66
+ "`isTrue`": function (assert) {
67
+ assert.isTrue(true);
68
+ assertError(assert.isTrue, 1);
69
+ },
70
+ "`isFalse`": function (assert) {
71
+ assert.isFalse(false);
72
+ assertError(assert.isFalse, 0);
73
+ },
74
+ "`isZero`": function (assert) {
75
+ assert.isZero(0);
76
+ assertError(assert.isZero, null);
77
+ },
78
+ "`isNotZero`": function (assert) {
79
+ assert.isNotZero(1);
80
+ },
81
+ "`isUndefined`": function (assert) {
82
+ assert.isUndefined(undefined);
83
+ assertError(assert.isUndefined, null);
84
+ },
85
+ "`isDefined`": function (assert) {
86
+ assert.isDefined(null);
87
+ assertError(assert.isDefined, undefined);
88
+ },
89
+ "`isNull`": function (assert) {
90
+ assert.isNull(null);
91
+ assertError(assert.isNull, 0);
92
+ assertError(assert.isNull, undefined);
93
+ },
94
+ "`isNotNull`": function (assert) {
95
+ assert.isNotNull(0);
96
+ },
97
+ "`greater` and `lesser`": function (assert) {
98
+ assert.greater(5, 4);
99
+ assert.lesser(4, 5);
100
+ },
101
+ "`inDelta`": function (assert) {
102
+ assert.inDelta(42, 40, 5);
103
+ assert.inDelta(42, 40, 2);
104
+ assert.inDelta(42, 42, 0);
105
+ assert.inDelta(3.1, 3.0, 0.2);
106
+ assertError(assert.inDelta, [42, 40, 1]);
107
+ },
108
+ "`isEmpty`": function (assert) {
109
+ assert.isEmpty({});
110
+ assert.isEmpty([]);
111
+ assert.isEmpty("");
112
+ },
113
+ "`isNotEmpty`": function (assert) {
114
+ assert.isNotEmpty({goo:true});
115
+ assert.isNotEmpty([1]);
116
+ assert.isNotEmpty(" ");
117
+ assertError(assert.isNotEmpty, {});
118
+ assertError(assert.isNotEmpty, []);
119
+ assertError(assert.isNotEmpty, "");
120
+ }
121
+ }
122
+ }).export(module);
123
+
124
+ function assertError(assertion, args, fail) {
125
+ if (!Array.isArray(args)) { args = [args]; }
126
+ try {
127
+ assertion.apply(null, args);
128
+ fail = true;
129
+ } catch (e) {/* Success */}
130
+
131
+ fail && assert.fail(args.join(' '), assert.AssertionError,
132
+ "expected an AssertionError for {actual}",
133
+ "assertError", assertError);
134
+ }
135
+