pleeease 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (615) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +22 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +23 -0
  6. data/Rakefile +1 -0
  7. data/lib/pleeease.rb +9 -0
  8. data/lib/pleeease/processor.rb +13 -0
  9. data/lib/pleeease/railtie.rb +10 -0
  10. data/lib/pleeease/runner.rb +70 -0
  11. data/lib/pleeease/version.rb +3 -0
  12. data/node_modules/.bin/pleeease +13 -0
  13. data/node_modules/.bin/pleeease-compile +20 -0
  14. data/node_modules/.bin/pleeease-watch +20 -0
  15. data/node_modules/pleeease/.jshintignore +1 -0
  16. data/node_modules/pleeease/.jshintrc +28 -0
  17. data/node_modules/pleeease/.npmignore +2 -0
  18. data/node_modules/pleeease/README.md +288 -0
  19. data/node_modules/pleeease/app.min.css.map +1 -0
  20. data/node_modules/pleeease/bin/pleeease +13 -0
  21. data/node_modules/pleeease/bin/pleeease-compile +20 -0
  22. data/node_modules/pleeease/bin/pleeease-watch +20 -0
  23. data/node_modules/pleeease/jshint.sh +2 -0
  24. data/node_modules/pleeease/lib/cli.js +136 -0
  25. data/node_modules/pleeease/lib/index.js +97 -0
  26. data/node_modules/pleeease/lib/options.js +38 -0
  27. data/node_modules/pleeease/lib/processors/import.js +123 -0
  28. data/node_modules/pleeease/lib/processors/pseudoElements.js +24 -0
  29. data/node_modules/pleeease/node_modules/.bin/autoprefixer +13 -0
  30. data/node_modules/pleeease/node_modules/.bin/csswring +3 -0
  31. data/node_modules/pleeease/node_modules/.bin/mkdirp +33 -0
  32. data/node_modules/pleeease/node_modules/autoprefixer/ChangeLog.md +354 -0
  33. data/node_modules/pleeease/node_modules/autoprefixer/LICENSE +20 -0
  34. data/node_modules/pleeease/node_modules/autoprefixer/README.md +565 -0
  35. data/node_modules/pleeease/node_modules/autoprefixer/bin/autoprefixer +13 -0
  36. data/node_modules/pleeease/node_modules/autoprefixer/data/browsers.js +53 -0
  37. data/node_modules/pleeease/node_modules/autoprefixer/data/prefixes.js +323 -0
  38. data/node_modules/pleeease/node_modules/autoprefixer/lib/autoprefixer.js +109 -0
  39. data/node_modules/pleeease/node_modules/autoprefixer/lib/binary.js +344 -0
  40. data/node_modules/pleeease/node_modules/autoprefixer/lib/browsers.js +197 -0
  41. data/node_modules/pleeease/node_modules/autoprefixer/lib/declaration.js +152 -0
  42. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/align-content.js +57 -0
  43. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/align-items.js +57 -0
  44. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/align-self.js +55 -0
  45. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/border-image.js +28 -0
  46. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/border-radius.js +56 -0
  47. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/break-inside.js +54 -0
  48. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/display-flex.js +67 -0
  49. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/fill-available.js +41 -0
  50. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/filter.js +29 -0
  51. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/flex-basis.js +47 -0
  52. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/flex-direction.js +71 -0
  53. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/flex-flow.js +35 -0
  54. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/flex-grow.js +41 -0
  55. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/flex-shrink.js +47 -0
  56. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/flex-spec.js +11 -0
  57. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/flex-wrap.js +33 -0
  58. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/flex.js +56 -0
  59. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/fullscreen.js +33 -0
  60. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/gradient.js +217 -0
  61. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/justify-content.js +62 -0
  62. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/order.js +52 -0
  63. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/placeholder.js +39 -0
  64. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/transform-decl.js +59 -0
  65. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/transform-value.js +31 -0
  66. data/node_modules/pleeease/node_modules/autoprefixer/lib/hacks/transition.js +37 -0
  67. data/node_modules/pleeease/node_modules/autoprefixer/lib/info.js +114 -0
  68. data/node_modules/pleeease/node_modules/autoprefixer/lib/keyframes.js +40 -0
  69. data/node_modules/pleeease/node_modules/autoprefixer/lib/old-selector.js +68 -0
  70. data/node_modules/pleeease/node_modules/autoprefixer/lib/old-value.js +29 -0
  71. data/node_modules/pleeease/node_modules/autoprefixer/lib/prefixer.js +88 -0
  72. data/node_modules/pleeease/node_modules/autoprefixer/lib/prefixes.js +334 -0
  73. data/node_modules/pleeease/node_modules/autoprefixer/lib/processor.js +105 -0
  74. data/node_modules/pleeease/node_modules/autoprefixer/lib/selector.js +117 -0
  75. data/node_modules/pleeease/node_modules/autoprefixer/lib/updater.js +234 -0
  76. data/node_modules/pleeease/node_modules/autoprefixer/lib/utils.js +41 -0
  77. data/node_modules/pleeease/node_modules/autoprefixer/lib/value.js +99 -0
  78. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/.npmignore +2 -0
  79. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/CHANGELOG.md +126 -0
  80. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/LICENSE +15 -0
  81. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/README.md +371 -0
  82. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/lib/copy.js +79 -0
  83. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/lib/create.js +55 -0
  84. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/lib/ensure.js +4 -0
  85. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/lib/index.js +137 -0
  86. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/lib/json.js +30 -0
  87. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/lib/mkdir.js +8 -0
  88. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/lib/move.js +108 -0
  89. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/lib/output.js +37 -0
  90. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/lib/remove.js +19 -0
  91. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/.bin/mkdirp +33 -0
  92. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/.bin/ncp +48 -0
  93. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/.bin/rimraf +33 -0
  94. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/.npmignore +2 -0
  95. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/CHANGELOG.md +20 -0
  96. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/LICENSE +15 -0
  97. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/README.md +121 -0
  98. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/lib/jsonfile.js +47 -0
  99. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/package.json +44 -0
  100. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/.npmignore +2 -0
  101. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/.travis.yml +5 -0
  102. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/LICENSE +21 -0
  103. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/bin/cmd.js +33 -0
  104. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/bin/usage.txt +12 -0
  105. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/examples/pow.js +6 -0
  106. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/index.js +97 -0
  107. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/node_modules/minimist/.travis.yml +4 -0
  108. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/node_modules/minimist/LICENSE +18 -0
  109. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/node_modules/minimist/example/parse.js +2 -0
  110. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/node_modules/minimist/index.js +187 -0
  111. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/node_modules/minimist/package.json +52 -0
  112. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/node_modules/minimist/readme.markdown +73 -0
  113. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/node_modules/minimist/test/dash.js +24 -0
  114. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/node_modules/minimist/test/default_bool.js +20 -0
  115. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/node_modules/minimist/test/dotted.js +16 -0
  116. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/node_modules/minimist/test/long.js +31 -0
  117. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/node_modules/minimist/test/parse.js +318 -0
  118. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js +9 -0
  119. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/node_modules/minimist/test/short.js +67 -0
  120. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/node_modules/minimist/test/whitespace.js +8 -0
  121. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/package.json +43 -0
  122. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/readme.markdown +100 -0
  123. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/chmod.js +38 -0
  124. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/clobber.js +37 -0
  125. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/mkdirp.js +26 -0
  126. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/opts_fs.js +27 -0
  127. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/opts_fs_sync.js +25 -0
  128. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/perm.js +30 -0
  129. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/perm_sync.js +34 -0
  130. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/race.js +40 -0
  131. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/rel.js +30 -0
  132. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/return.js +25 -0
  133. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/return_sync.js +24 -0
  134. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/root.js +18 -0
  135. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/sync.js +30 -0
  136. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/umask.js +26 -0
  137. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/umask_sync.js +30 -0
  138. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/.npmignore +4 -0
  139. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/.travis.yml +6 -0
  140. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/LICENSE.md +21 -0
  141. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/README.md +58 -0
  142. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/bin/ncp +48 -0
  143. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/lib/ncp.js +230 -0
  144. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/package.json +43 -0
  145. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/a +1 -0
  146. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/b +1 -0
  147. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/c +0 -0
  148. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/d +0 -0
  149. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/e +0 -0
  150. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/f +0 -0
  151. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/sub/a +1 -0
  152. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/sub/b +0 -0
  153. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/ncp.js +86 -0
  154. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/AUTHORS +6 -0
  155. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/LICENSE +23 -0
  156. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/README.md +30 -0
  157. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/bin.js +33 -0
  158. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/package.json +58 -0
  159. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/rimraf.js +248 -0
  160. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/test/run.sh +16 -0
  161. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/test/setup.sh +47 -0
  162. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/test/test-async.js +5 -0
  163. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/test/test-sync.js +3 -0
  164. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/fs-extra/package.json +68 -0
  165. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/ChangeLog.md +46 -0
  166. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/LICENSE +20 -0
  167. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/README.md +784 -0
  168. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/lib/at-rule.js +94 -0
  169. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/lib/comment.js +38 -0
  170. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/lib/container.js +315 -0
  171. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/lib/declaration.js +69 -0
  172. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/lib/lazy.js +18 -0
  173. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/lib/list.js +64 -0
  174. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/lib/map-generator.js +242 -0
  175. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/lib/node.js +189 -0
  176. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/lib/parse.js +496 -0
  177. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/lib/postcss.js +78 -0
  178. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/lib/raw.js +32 -0
  179. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/lib/result.js +26 -0
  180. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/lib/root.js +57 -0
  181. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/lib/rule.js +59 -0
  182. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/lib/syntax-error.js +27 -0
  183. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/lib/vendor.js +27 -0
  184. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/.travis.yml +5 -0
  185. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/LICENSE.MIT +21 -0
  186. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/README.md +31 -0
  187. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/bench/bench.js +19 -0
  188. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/lib/b64.js +120 -0
  189. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/package.json +47 -0
  190. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/test/convert.js +51 -0
  191. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/.npmignore +2 -0
  192. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/.tern-port +1 -0
  193. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/.travis.yml +4 -0
  194. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/CHANGELOG.md +137 -0
  195. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/LICENSE +28 -0
  196. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/Makefile.dryice.js +166 -0
  197. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/README.md +446 -0
  198. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/assert-shim.js +56 -0
  199. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/mini-require.js +152 -0
  200. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/prefix-source-map.jsm +20 -0
  201. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/prefix-utils.jsm +18 -0
  202. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/suffix-browser.js +8 -0
  203. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/suffix-source-map.jsm +6 -0
  204. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/suffix-utils.jsm +21 -0
  205. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/test-prefix.js +8 -0
  206. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/test-suffix.js +3 -0
  207. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map.js +8 -0
  208. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/array-set.js +97 -0
  209. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/base64-vlq.js +144 -0
  210. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/base64.js +42 -0
  211. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/binary-search.js +81 -0
  212. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/source-map-consumer.js +478 -0
  213. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/source-map-generator.js +400 -0
  214. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/source-node.js +400 -0
  215. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/util.js +302 -0
  216. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/LICENSE +58 -0
  217. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/README.md +171 -0
  218. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/amdefine.js +299 -0
  219. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/intercept.js +36 -0
  220. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/package.json +39 -0
  221. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/package.json +132 -0
  222. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/run-tests.js +62 -0
  223. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-api.js +26 -0
  224. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-array-set.js +104 -0
  225. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-base64-vlq.js +24 -0
  226. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-base64.js +35 -0
  227. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-binary-search.js +54 -0
  228. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-dog-fooding.js +84 -0
  229. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-source-map-consumer.js +475 -0
  230. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-source-map-generator.js +549 -0
  231. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-source-node.js +487 -0
  232. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-util.js +127 -0
  233. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/util.js +161 -0
  234. data/node_modules/pleeease/node_modules/autoprefixer/node_modules/postcss/package.json +46 -0
  235. data/node_modules/pleeease/node_modules/autoprefixer/package.json +49 -0
  236. data/node_modules/pleeease/node_modules/autoprefixer/updaters/browsers.js +65 -0
  237. data/node_modules/pleeease/node_modules/autoprefixer/updaters/prefixes.js +273 -0
  238. data/node_modules/pleeease/node_modules/chokidar/.npmignore +35 -0
  239. data/node_modules/pleeease/node_modules/chokidar/CHANGELOG.md +95 -0
  240. data/node_modules/pleeease/node_modules/chokidar/README.md +121 -0
  241. data/node_modules/pleeease/node_modules/chokidar/example.js +3 -0
  242. data/node_modules/pleeease/node_modules/chokidar/index.js +425 -0
  243. data/node_modules/pleeease/node_modules/chokidar/node_modules/recursive-readdir/README.md +22 -0
  244. data/node_modules/pleeease/node_modules/chokidar/node_modules/recursive-readdir/index.js +45 -0
  245. data/node_modules/pleeease/node_modules/chokidar/node_modules/recursive-readdir/package.json +39 -0
  246. data/node_modules/pleeease/node_modules/chokidar/node_modules/recursive-readdir/test/recursive-raddir-test.js +17 -0
  247. data/node_modules/pleeease/node_modules/chokidar/node_modules/recursive-readdir/test/testdir/a/a +0 -0
  248. data/node_modules/pleeease/node_modules/chokidar/node_modules/recursive-readdir/test/testdir/a/beans +0 -0
  249. data/node_modules/pleeease/node_modules/chokidar/node_modules/recursive-readdir/test/testdir/b/123 +0 -0
  250. data/node_modules/pleeease/node_modules/chokidar/node_modules/recursive-readdir/test/testdir/b/b/hurp-durp +0 -0
  251. data/node_modules/pleeease/node_modules/chokidar/node_modules/recursive-readdir/test/testdir/c.txt +0 -0
  252. data/node_modules/pleeease/node_modules/chokidar/node_modules/recursive-readdir/test/testdir/d.txt +0 -0
  253. data/node_modules/pleeease/node_modules/chokidar/package.json +55 -0
  254. data/node_modules/pleeease/node_modules/chokidar/test.js +296 -0
  255. data/node_modules/pleeease/node_modules/colors/MIT-LICENSE.txt +22 -0
  256. data/node_modules/pleeease/node_modules/colors/ReadMe.md +77 -0
  257. data/node_modules/pleeease/node_modules/colors/colors.js +342 -0
  258. data/node_modules/pleeease/node_modules/colors/example.html +76 -0
  259. data/node_modules/pleeease/node_modules/colors/example.js +77 -0
  260. data/node_modules/pleeease/node_modules/colors/package.json +29 -0
  261. data/node_modules/pleeease/node_modules/colors/test.js +70 -0
  262. data/node_modules/pleeease/node_modules/colors/themes/winston-dark.js +12 -0
  263. data/node_modules/pleeease/node_modules/colors/themes/winston-light.js +12 -0
  264. data/node_modules/pleeease/node_modules/commander/Readme.md +208 -0
  265. data/node_modules/pleeease/node_modules/commander/index.js +852 -0
  266. data/node_modules/pleeease/node_modules/commander/package.json +43 -0
  267. data/node_modules/pleeease/node_modules/css-mqpacker/.npmignore +3 -0
  268. data/node_modules/pleeease/node_modules/css-mqpacker/.sass-cache/ca3e061f00144e273a11e95ed4eb3170f1f7a328/maps-input.scssc +0 -0
  269. data/node_modules/pleeease/node_modules/css-mqpacker/.sass-cache/ca3e061f00144e273a11e95ed4eb3170f1f7a328/sourcemap-expected.scssc +0 -0
  270. data/node_modules/pleeease/node_modules/css-mqpacker/README.md +141 -0
  271. data/node_modules/pleeease/node_modules/css-mqpacker/index.js +1 -0
  272. data/node_modules/pleeease/node_modules/css-mqpacker/lib/css-mqpacker.js +43 -0
  273. data/node_modules/pleeease/node_modules/css-mqpacker/package.json +43 -0
  274. data/node_modules/pleeease/node_modules/css-mqpacker/test/css-mqpacker_test.js +64 -0
  275. data/node_modules/pleeease/node_modules/css-mqpacker/test/expected/multi.css +31 -0
  276. data/node_modules/pleeease/node_modules/css-mqpacker/test/expected/query-order.css +17 -0
  277. data/node_modules/pleeease/node_modules/css-mqpacker/test/expected/simple.css +37 -0
  278. data/node_modules/pleeease/node_modules/css-mqpacker/test/fixtures/multi.css +37 -0
  279. data/node_modules/pleeease/node_modules/css-mqpacker/test/fixtures/query-order.css +19 -0
  280. data/node_modules/pleeease/node_modules/css-mqpacker/test/fixtures/simple.css +41 -0
  281. data/node_modules/pleeease/node_modules/csswring/.npmignore +3 -0
  282. data/node_modules/pleeease/node_modules/csswring/README.md +55 -0
  283. data/node_modules/pleeease/node_modules/csswring/bin/csswring +3 -0
  284. data/node_modules/pleeease/node_modules/csswring/index.js +1 -0
  285. data/node_modules/pleeease/node_modules/csswring/lib/cli.js +93 -0
  286. data/node_modules/pleeease/node_modules/csswring/lib/csswring.js +110 -0
  287. data/node_modules/pleeease/node_modules/csswring/node_modules/minimist/.travis.yml +4 -0
  288. data/node_modules/pleeease/node_modules/csswring/node_modules/minimist/LICENSE +18 -0
  289. data/node_modules/pleeease/node_modules/csswring/node_modules/minimist/example/parse.js +2 -0
  290. data/node_modules/pleeease/node_modules/csswring/node_modules/minimist/index.js +187 -0
  291. data/node_modules/pleeease/node_modules/csswring/node_modules/minimist/package.json +52 -0
  292. data/node_modules/pleeease/node_modules/csswring/node_modules/minimist/readme.markdown +73 -0
  293. data/node_modules/pleeease/node_modules/csswring/node_modules/minimist/test/dash.js +24 -0
  294. data/node_modules/pleeease/node_modules/csswring/node_modules/minimist/test/default_bool.js +20 -0
  295. data/node_modules/pleeease/node_modules/csswring/node_modules/minimist/test/dotted.js +16 -0
  296. data/node_modules/pleeease/node_modules/csswring/node_modules/minimist/test/long.js +31 -0
  297. data/node_modules/pleeease/node_modules/csswring/node_modules/minimist/test/parse.js +318 -0
  298. data/node_modules/pleeease/node_modules/csswring/node_modules/minimist/test/parse_modified.js +9 -0
  299. data/node_modules/pleeease/node_modules/csswring/node_modules/minimist/test/short.js +67 -0
  300. data/node_modules/pleeease/node_modules/csswring/node_modules/minimist/test/whitespace.js +8 -0
  301. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/.gitmodules +3 -0
  302. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/.npmignore +2 -0
  303. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/LICENSE +24 -0
  304. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/Makefile +45 -0
  305. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/README.md +313 -0
  306. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/bin/build.js +29 -0
  307. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/component.json +11 -0
  308. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/demo/demo.css +58 -0
  309. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/demo/demo.js +35 -0
  310. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/demo/index.html +54 -0
  311. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/lib/color-namedColors.js +150 -0
  312. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/lib/color.js +231 -0
  313. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/lib/color/CMYK.js +31 -0
  314. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/lib/color/HSL.js +30 -0
  315. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/lib/color/HSV.js +94 -0
  316. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/lib/color/LAB.js +33 -0
  317. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/lib/color/XYZ.js +65 -0
  318. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/lib/color/_all.js +25 -0
  319. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/lib/color/_base.js +6 -0
  320. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/lib/color/plugins/clearer.js +3 -0
  321. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/lib/color/plugins/darken.js +5 -0
  322. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/lib/color/plugins/desaturate.js +5 -0
  323. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/lib/color/plugins/greyscale.js +9 -0
  324. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/lib/color/plugins/lighten.js +5 -0
  325. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/lib/color/plugins/mix.js +17 -0
  326. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/lib/color/plugins/negate.js +4 -0
  327. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/lib/color/plugins/opaquer.js +3 -0
  328. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/lib/color/plugins/rotate.js +3 -0
  329. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/lib/color/plugins/saturate.js +5 -0
  330. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/lib/color/plugins/toAlpha.js +46 -0
  331. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/lib/ender.js +5 -0
  332. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/lib/es5-shim.js +97 -0
  333. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/one-color-all-debug.js +754 -0
  334. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/one-color-all.js +1 -0
  335. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/one-color-debug.js +359 -0
  336. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/one-color-ieshim.js +1 -0
  337. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/one-color.js +1 -0
  338. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/package.json +66 -0
  339. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/3rdparty/CSSS/README.markdown +5 -0
  340. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/3rdparty/CSSS/boilerplate.html +55 -0
  341. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/3rdparty/CSSS/classList.js +116 -0
  342. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/3rdparty/CSSS/img/rainbow-wood.jpg +0 -0
  343. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/3rdparty/CSSS/index.html +234 -0
  344. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/3rdparty/CSSS/license.txt +21 -0
  345. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/3rdparty/CSSS/logo.png +0 -0
  346. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/3rdparty/CSSS/logo.svg +52 -0
  347. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/3rdparty/CSSS/plugins/css-controls.js +40 -0
  348. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/3rdparty/CSSS/plugins/css-edit.js +132 -0
  349. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/3rdparty/CSSS/plugins/css-snippets.js +89 -0
  350. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/3rdparty/CSSS/plugins/incrementable.js +94 -0
  351. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/3rdparty/CSSS/slideshow.css +288 -0
  352. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/3rdparty/CSSS/slideshow.js +471 -0
  353. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/3rdparty/CSSS/talk.css +41 -0
  354. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/3rdparty/CSSS/theme.css +214 -0
  355. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/CPHJS-Oct2011/colorcat/css/colorcat.css +36 -0
  356. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/CPHJS-Oct2011/colorcat/css/demo.css +677 -0
  357. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/CPHJS-Oct2011/colorcat/images/transparent.gif +0 -0
  358. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/CPHJS-Oct2011/colorcat/js/colorcat.js +135 -0
  359. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/CPHJS-Oct2011/colorcat/js/one-color-debug.js +1137 -0
  360. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/CPHJS-Oct2011/images/1024px-HSV_color_solid_cylinder_alpha_lowgamma.png +0 -0
  361. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/CPHJS-Oct2011/images/ExtJS.png +0 -0
  362. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/CPHJS-Oct2011/images/HSL.png +0 -0
  363. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/CPHJS-Oct2011/images/HSV.png +0 -0
  364. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/CPHJS-Oct2011/images/Hsl-hsv_models_b.svg +450 -0
  365. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/CPHJS-Oct2011/images/Pixels.jpg +0 -0
  366. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/CPHJS-Oct2011/images/PullingHair.png +0 -0
  367. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/CPHJS-Oct2011/images/RGB.png +0 -0
  368. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/CPHJS-Oct2011/images/RGB_HSL_HSV_comparison.png +0 -0
  369. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/CPHJS-Oct2011/images/Space_Rainbow_desktop_background_pictures.jpg +0 -0
  370. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/CPHJS-Oct2011/images/blog.png +0 -0
  371. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/CPHJS-Oct2011/images/calendar.png +0 -0
  372. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/CPHJS-Oct2011/images/colorSpace.jpg +0 -0
  373. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/CPHJS-Oct2011/index.html +562 -0
  374. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/CPHJS-Oct2011/talk.css +137 -0
  375. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/slides/CPHJS-Oct2011/theme.css +247 -0
  376. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/test/color-test.js +178 -0
  377. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/test/conversion-test.js +46 -0
  378. data/node_modules/pleeease/node_modules/csswring/node_modules/onecolor/test/samples.js +147 -0
  379. data/node_modules/pleeease/node_modules/csswring/package.json +51 -0
  380. data/node_modules/pleeease/node_modules/csswring/test/csswring_test.js +67 -0
  381. data/node_modules/pleeease/node_modules/csswring/test/expected/empty-declarations.css +1 -0
  382. data/node_modules/pleeease/node_modules/csswring/test/expected/extra-semicolons.css +1 -0
  383. data/node_modules/pleeease/node_modules/csswring/test/expected/issue3.css +1 -0
  384. data/node_modules/pleeease/node_modules/csswring/test/expected/simple.css +3 -0
  385. data/node_modules/pleeease/node_modules/csswring/test/expected/single-charset.css +1 -0
  386. data/node_modules/pleeease/node_modules/csswring/test/expected/value.css +1 -0
  387. data/node_modules/pleeease/node_modules/csswring/test/fixtures/empty-declarations.css +12 -0
  388. data/node_modules/pleeease/node_modules/csswring/test/fixtures/extra-semicolons.css +4 -0
  389. data/node_modules/pleeease/node_modules/csswring/test/fixtures/issue3.css +3 -0
  390. data/node_modules/pleeease/node_modules/csswring/test/fixtures/simple.css +31 -0
  391. data/node_modules/pleeease/node_modules/csswring/test/fixtures/single-charset.css +13 -0
  392. data/node_modules/pleeease/node_modules/csswring/test/fixtures/value.css +14 -0
  393. data/node_modules/pleeease/node_modules/deep-extend/.npmignore +1 -0
  394. data/node_modules/pleeease/node_modules/deep-extend/LICENSE +20 -0
  395. data/node_modules/pleeease/node_modules/deep-extend/README.md +52 -0
  396. data/node_modules/pleeease/node_modules/deep-extend/index.js +87 -0
  397. data/node_modules/pleeease/node_modules/deep-extend/package.json +45 -0
  398. data/node_modules/pleeease/node_modules/deep-extend/test/index.spec.js +44 -0
  399. data/node_modules/pleeease/node_modules/deep-extend/test/mocha.opts +1 -0
  400. data/node_modules/pleeease/node_modules/mkdirp/.npmignore +2 -0
  401. data/node_modules/pleeease/node_modules/mkdirp/.travis.yml +5 -0
  402. data/node_modules/pleeease/node_modules/mkdirp/LICENSE +21 -0
  403. data/node_modules/pleeease/node_modules/mkdirp/bin/cmd.js +33 -0
  404. data/node_modules/pleeease/node_modules/mkdirp/bin/usage.txt +12 -0
  405. data/node_modules/pleeease/node_modules/mkdirp/examples/pow.js +6 -0
  406. data/node_modules/pleeease/node_modules/mkdirp/index.js +80 -0
  407. data/node_modules/pleeease/node_modules/mkdirp/node_modules/minimist/.travis.yml +4 -0
  408. data/node_modules/pleeease/node_modules/mkdirp/node_modules/minimist/LICENSE +18 -0
  409. data/node_modules/pleeease/node_modules/mkdirp/node_modules/minimist/example/parse.js +2 -0
  410. data/node_modules/pleeease/node_modules/mkdirp/node_modules/minimist/index.js +187 -0
  411. data/node_modules/pleeease/node_modules/mkdirp/node_modules/minimist/package.json +52 -0
  412. data/node_modules/pleeease/node_modules/mkdirp/node_modules/minimist/readme.markdown +73 -0
  413. data/node_modules/pleeease/node_modules/mkdirp/node_modules/minimist/test/dash.js +24 -0
  414. data/node_modules/pleeease/node_modules/mkdirp/node_modules/minimist/test/default_bool.js +20 -0
  415. data/node_modules/pleeease/node_modules/mkdirp/node_modules/minimist/test/dotted.js +16 -0
  416. data/node_modules/pleeease/node_modules/mkdirp/node_modules/minimist/test/long.js +31 -0
  417. data/node_modules/pleeease/node_modules/mkdirp/node_modules/minimist/test/parse.js +318 -0
  418. data/node_modules/pleeease/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js +9 -0
  419. data/node_modules/pleeease/node_modules/mkdirp/node_modules/minimist/test/short.js +67 -0
  420. data/node_modules/pleeease/node_modules/mkdirp/node_modules/minimist/test/whitespace.js +8 -0
  421. data/node_modules/pleeease/node_modules/mkdirp/package.json +42 -0
  422. data/node_modules/pleeease/node_modules/mkdirp/readme.markdown +90 -0
  423. data/node_modules/pleeease/node_modules/mkdirp/test/chmod.js +38 -0
  424. data/node_modules/pleeease/node_modules/mkdirp/test/clobber.js +37 -0
  425. data/node_modules/pleeease/node_modules/mkdirp/test/mkdirp.js +28 -0
  426. data/node_modules/pleeease/node_modules/mkdirp/test/perm.js +32 -0
  427. data/node_modules/pleeease/node_modules/mkdirp/test/perm_sync.js +39 -0
  428. data/node_modules/pleeease/node_modules/mkdirp/test/race.js +41 -0
  429. data/node_modules/pleeease/node_modules/mkdirp/test/rel.js +32 -0
  430. data/node_modules/pleeease/node_modules/mkdirp/test/return.js +25 -0
  431. data/node_modules/pleeease/node_modules/mkdirp/test/return_sync.js +24 -0
  432. data/node_modules/pleeease/node_modules/mkdirp/test/root.js +18 -0
  433. data/node_modules/pleeease/node_modules/mkdirp/test/sync.js +32 -0
  434. data/node_modules/pleeease/node_modules/mkdirp/test/umask.js +28 -0
  435. data/node_modules/pleeease/node_modules/mkdirp/test/umask_sync.js +32 -0
  436. data/node_modules/pleeease/node_modules/multi-glob/.npmignore +2 -0
  437. data/node_modules/pleeease/node_modules/multi-glob/.travis.yml +3 -0
  438. data/node_modules/pleeease/node_modules/multi-glob/AUTHORS +2 -0
  439. data/node_modules/pleeease/node_modules/multi-glob/LICENSE +27 -0
  440. data/node_modules/pleeease/node_modules/multi-glob/Readme.rst +42 -0
  441. data/node_modules/pleeease/node_modules/multi-glob/autolint.js +20 -0
  442. data/node_modules/pleeease/node_modules/multi-glob/buster.js +6 -0
  443. data/node_modules/pleeease/node_modules/multi-glob/lib/multi-glob.js +39 -0
  444. data/node_modules/pleeease/node_modules/multi-glob/node_modules/async/.travis.yml +3 -0
  445. data/node_modules/pleeease/node_modules/multi-glob/node_modules/async/LICENSE +19 -0
  446. data/node_modules/pleeease/node_modules/multi-glob/node_modules/async/README.md +1646 -0
  447. data/node_modules/pleeease/node_modules/multi-glob/node_modules/async/component.json +11 -0
  448. data/node_modules/pleeease/node_modules/multi-glob/node_modules/async/lib/async.js +1123 -0
  449. data/node_modules/pleeease/node_modules/multi-glob/node_modules/async/package.json +45 -0
  450. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/.npmignore +2 -0
  451. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/.travis.yml +4 -0
  452. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/LICENSE +27 -0
  453. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/README.md +250 -0
  454. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/examples/g.js +9 -0
  455. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/examples/usr-local.js +9 -0
  456. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/glob.js +738 -0
  457. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/inherits/LICENSE +16 -0
  458. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/inherits/README.md +42 -0
  459. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/inherits/inherits.js +1 -0
  460. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/inherits/inherits_browser.js +23 -0
  461. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/inherits/package.json +33 -0
  462. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/inherits/test.js +25 -0
  463. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/.npmignore +1 -0
  464. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/LICENSE +23 -0
  465. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/README.md +218 -0
  466. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/minimatch.js +1061 -0
  467. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/.npmignore +1 -0
  468. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS +14 -0
  469. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/LICENSE +23 -0
  470. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/README.md +97 -0
  471. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js +252 -0
  472. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/package.json +33 -0
  473. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/basic.js +369 -0
  474. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/foreach.js +52 -0
  475. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js +50 -0
  476. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/node_modules/sigmund/LICENSE +27 -0
  477. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/node_modules/sigmund/README.md +53 -0
  478. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/node_modules/sigmund/bench.js +283 -0
  479. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/node_modules/sigmund/package.json +42 -0
  480. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/node_modules/sigmund/sigmund.js +39 -0
  481. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/node_modules/sigmund/test/basic.js +24 -0
  482. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/package.json +42 -0
  483. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/test/basic.js +399 -0
  484. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/test/brace-expand.js +33 -0
  485. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/test/caching.js +14 -0
  486. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/test/defaults.js +274 -0
  487. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js +8 -0
  488. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/once/LICENSE +27 -0
  489. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/once/README.md +51 -0
  490. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/once/once.js +20 -0
  491. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/once/package.json +42 -0
  492. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/node_modules/once/test/once.js +20 -0
  493. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/package.json +43 -0
  494. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/test/00-setup.js +176 -0
  495. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/test/bash-comparison.js +63 -0
  496. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/test/bash-results.json +354 -0
  497. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/test/cwd-test.js +55 -0
  498. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/test/empty-set.js +20 -0
  499. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/test/error-callback.js +20 -0
  500. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/test/globstar-match.js +19 -0
  501. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/test/mark.js +118 -0
  502. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/test/new-glob-optional-options.js +10 -0
  503. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/test/nocase-nomagic.js +124 -0
  504. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/test/pause-resume.js +73 -0
  505. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/test/readme-issue.js +36 -0
  506. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/test/root-nomount.js +39 -0
  507. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/test/root.js +46 -0
  508. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/test/stat.js +32 -0
  509. data/node_modules/pleeease/node_modules/multi-glob/node_modules/glob/test/zz-cleanup.js +11 -0
  510. data/node_modules/pleeease/node_modules/multi-glob/node_modules/lodash/LICENSE.txt +22 -0
  511. data/node_modules/pleeease/node_modules/multi-glob/node_modules/lodash/README.md +163 -0
  512. data/node_modules/pleeease/node_modules/multi-glob/node_modules/lodash/dist/lodash.compat.js +7157 -0
  513. data/node_modules/pleeease/node_modules/multi-glob/node_modules/lodash/dist/lodash.compat.min.js +61 -0
  514. data/node_modules/pleeease/node_modules/multi-glob/node_modules/lodash/dist/lodash.js +6785 -0
  515. data/node_modules/pleeease/node_modules/multi-glob/node_modules/lodash/dist/lodash.min.js +56 -0
  516. data/node_modules/pleeease/node_modules/multi-glob/node_modules/lodash/dist/lodash.underscore.js +4979 -0
  517. data/node_modules/pleeease/node_modules/multi-glob/node_modules/lodash/dist/lodash.underscore.min.js +39 -0
  518. data/node_modules/pleeease/node_modules/multi-glob/node_modules/lodash/lodash.js +7179 -0
  519. data/node_modules/pleeease/node_modules/multi-glob/node_modules/lodash/package.json +102 -0
  520. data/node_modules/pleeease/node_modules/multi-glob/package.json +46 -0
  521. data/node_modules/pleeease/node_modules/multi-glob/test/multi-glob-test.js +113 -0
  522. data/node_modules/pleeease/node_modules/pixrem/.editorconfig +13 -0
  523. data/node_modules/pleeease/node_modules/pixrem/.gitattributes +1 -0
  524. data/node_modules/pleeease/node_modules/pixrem/.gitignore +2 -0
  525. data/node_modules/pleeease/node_modules/pixrem/.jshintrc +22 -0
  526. data/node_modules/pleeease/node_modules/pixrem/.travis.yml +4 -0
  527. data/node_modules/pleeease/node_modules/pixrem/LICENSE +22 -0
  528. data/node_modules/pleeease/node_modules/pixrem/README.md +108 -0
  529. data/node_modules/pleeease/node_modules/pixrem/lib/pixrem.js +73 -0
  530. data/node_modules/pleeease/node_modules/pixrem/package.json +50 -0
  531. data/node_modules/pleeease/node_modules/pixrem/spec/pixrem-spec.js +78 -0
  532. data/node_modules/pleeease/node_modules/postcss-vars/README.md +84 -0
  533. data/node_modules/pleeease/node_modules/postcss-vars/lib/index.js +91 -0
  534. data/node_modules/pleeease/node_modules/postcss-vars/package.json +18 -0
  535. data/node_modules/pleeease/node_modules/postcss/ChangeLog.md +42 -0
  536. data/node_modules/pleeease/node_modules/postcss/LICENSE +20 -0
  537. data/node_modules/pleeease/node_modules/postcss/README.md +732 -0
  538. data/node_modules/pleeease/node_modules/postcss/lib/at-rule.js +94 -0
  539. data/node_modules/pleeease/node_modules/postcss/lib/comment.js +38 -0
  540. data/node_modules/pleeease/node_modules/postcss/lib/container.js +315 -0
  541. data/node_modules/pleeease/node_modules/postcss/lib/declaration.js +69 -0
  542. data/node_modules/pleeease/node_modules/postcss/lib/lazy.js +18 -0
  543. data/node_modules/pleeease/node_modules/postcss/lib/list.js +64 -0
  544. data/node_modules/pleeease/node_modules/postcss/lib/map-generator.js +242 -0
  545. data/node_modules/pleeease/node_modules/postcss/lib/node.js +189 -0
  546. data/node_modules/pleeease/node_modules/postcss/lib/parse.js +496 -0
  547. data/node_modules/pleeease/node_modules/postcss/lib/postcss.js +76 -0
  548. data/node_modules/pleeease/node_modules/postcss/lib/raw.js +32 -0
  549. data/node_modules/pleeease/node_modules/postcss/lib/result.js +22 -0
  550. data/node_modules/pleeease/node_modules/postcss/lib/root.js +57 -0
  551. data/node_modules/pleeease/node_modules/postcss/lib/rule.js +59 -0
  552. data/node_modules/pleeease/node_modules/postcss/lib/syntax-error.js +27 -0
  553. data/node_modules/pleeease/node_modules/postcss/lib/vendor.js +27 -0
  554. data/node_modules/pleeease/node_modules/postcss/node_modules/base64-js/.travis.yml +5 -0
  555. data/node_modules/pleeease/node_modules/postcss/node_modules/base64-js/LICENSE.MIT +21 -0
  556. data/node_modules/pleeease/node_modules/postcss/node_modules/base64-js/README.md +31 -0
  557. data/node_modules/pleeease/node_modules/postcss/node_modules/base64-js/bench/bench.js +19 -0
  558. data/node_modules/pleeease/node_modules/postcss/node_modules/base64-js/lib/b64.js +120 -0
  559. data/node_modules/pleeease/node_modules/postcss/node_modules/base64-js/package.json +47 -0
  560. data/node_modules/pleeease/node_modules/postcss/node_modules/base64-js/test/convert.js +51 -0
  561. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/.npmignore +2 -0
  562. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/.tern-port +1 -0
  563. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/.travis.yml +4 -0
  564. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/CHANGELOG.md +137 -0
  565. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/LICENSE +28 -0
  566. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/Makefile.dryice.js +166 -0
  567. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/README.md +446 -0
  568. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/build/assert-shim.js +56 -0
  569. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/build/mini-require.js +152 -0
  570. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/build/prefix-source-map.jsm +20 -0
  571. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/build/prefix-utils.jsm +18 -0
  572. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/build/suffix-browser.js +8 -0
  573. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/build/suffix-source-map.jsm +6 -0
  574. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/build/suffix-utils.jsm +21 -0
  575. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/build/test-prefix.js +8 -0
  576. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/build/test-suffix.js +3 -0
  577. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/lib/source-map.js +8 -0
  578. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/lib/source-map/array-set.js +97 -0
  579. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/lib/source-map/base64-vlq.js +144 -0
  580. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/lib/source-map/base64.js +42 -0
  581. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/lib/source-map/binary-search.js +81 -0
  582. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/lib/source-map/source-map-consumer.js +478 -0
  583. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/lib/source-map/source-map-generator.js +400 -0
  584. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/lib/source-map/source-node.js +400 -0
  585. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/lib/source-map/util.js +302 -0
  586. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/node_modules/amdefine/LICENSE +58 -0
  587. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/node_modules/amdefine/README.md +171 -0
  588. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/node_modules/amdefine/amdefine.js +299 -0
  589. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/node_modules/amdefine/intercept.js +36 -0
  590. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/node_modules/amdefine/package.json +38 -0
  591. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/package.json +132 -0
  592. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/test/run-tests.js +62 -0
  593. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/test/source-map/test-api.js +26 -0
  594. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/test/source-map/test-array-set.js +104 -0
  595. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/test/source-map/test-base64-vlq.js +24 -0
  596. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/test/source-map/test-base64.js +35 -0
  597. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/test/source-map/test-binary-search.js +54 -0
  598. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/test/source-map/test-dog-fooding.js +84 -0
  599. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/test/source-map/test-source-map-consumer.js +475 -0
  600. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/test/source-map/test-source-map-generator.js +549 -0
  601. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/test/source-map/test-source-node.js +487 -0
  602. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/test/source-map/test-util.js +127 -0
  603. data/node_modules/pleeease/node_modules/postcss/node_modules/source-map/test/source-map/util.js +161 -0
  604. data/node_modules/pleeease/node_modules/postcss/package.json +46 -0
  605. data/node_modules/pleeease/package.json +40 -0
  606. data/node_modules/pleeease/spec/pleeease-spec.js +112 -0
  607. data/node_modules/pleeease/spec/prefixes.css +1 -0
  608. data/node_modules/pleeease/test/.pleeeaserc +7 -0
  609. data/node_modules/pleeease/test/app.min.css +42 -0
  610. data/node_modules/pleeease/test/bar.css +11 -0
  611. data/node_modules/pleeease/test/foo.css +25 -0
  612. data/node_modules/pleeease/test/import/imported.css +3 -0
  613. data/package.json +11 -0
  614. data/pleeease.gemspec +23 -0
  615. metadata +685 -0
@@ -0,0 +1,77 @@
1
+ var colors = require('./colors');
2
+
3
+ //colors.mode = "browser";
4
+
5
+ var test = colors.red("hopefully colorless output");
6
+ console.log('Rainbows are fun!'.rainbow);
7
+ console.log('So '.italic + 'are'.underline + ' styles! '.bold + 'inverse'.inverse); // styles not widely supported
8
+ console.log('Chains are also cool.'.bold.italic.underline.red); // styles not widely supported
9
+ //console.log('zalgo time!'.zalgo);
10
+ console.log(test.stripColors);
11
+ console.log("a".grey + " b".black);
12
+ console.log("Zebras are so fun!".zebra);
13
+ console.log('background color attack!'.black.whiteBG)
14
+
15
+ //
16
+ // Remark: .strikethrough may not work with Mac OS Terminal App
17
+ //
18
+ console.log("This is " + "not".strikethrough + " fun.");
19
+ console.log(colors.rainbow('Rainbows are fun!'));
20
+ console.log(colors.italic('So ') + colors.underline('are') + colors.bold(' styles! ') + colors.inverse('inverse')); // styles not widely supported
21
+ console.log(colors.bold(colors.italic(colors.underline(colors.red('Chains are also cool.'))))); // styles not widely supported
22
+ //console.log(colors.zalgo('zalgo time!'));
23
+ console.log(colors.stripColors(test));
24
+ console.log(colors.grey("a") + colors.black(" b"));
25
+
26
+ colors.addSequencer("america", function(letter, i, exploded) {
27
+ if(letter === " ") return letter;
28
+ switch(i%3) {
29
+ case 0: return letter.red;
30
+ case 1: return letter.white;
31
+ case 2: return letter.blue;
32
+ }
33
+ });
34
+
35
+ colors.addSequencer("random", (function() {
36
+ var available = ['bold', 'underline', 'italic', 'inverse', 'grey', 'yellow', 'red', 'green', 'blue', 'white', 'cyan', 'magenta'];
37
+
38
+ return function(letter, i, exploded) {
39
+ return letter === " " ? letter : letter[available[Math.round(Math.random() * (available.length - 1))]];
40
+ };
41
+ })());
42
+
43
+ console.log("AMERICA! F--K YEAH!".america);
44
+ console.log("So apparently I've been to Mars, with all the little green men. But you know, I don't recall.".random);
45
+
46
+ //
47
+ // Custom themes
48
+ //
49
+
50
+ // Load theme with JSON literal
51
+ colors.setTheme({
52
+ silly: 'rainbow',
53
+ input: 'grey',
54
+ verbose: 'cyan',
55
+ prompt: 'grey',
56
+ info: 'green',
57
+ data: 'grey',
58
+ help: 'cyan',
59
+ warn: 'yellow',
60
+ debug: 'blue',
61
+ error: 'red'
62
+ });
63
+
64
+ // outputs red text
65
+ console.log("this is an error".error);
66
+
67
+ // outputs yellow text
68
+ console.log("this is a warning".warn);
69
+
70
+ // outputs grey text
71
+ console.log("this is an input".input);
72
+
73
+ // Load a theme from file
74
+ colors.setTheme('./themes/winston-dark.js');
75
+
76
+ console.log("this is an input".input);
77
+
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "colors",
3
+ "description": "get colors in your node.js console like what",
4
+ "version": "0.6.2",
5
+ "author": {
6
+ "name": "Marak Squires"
7
+ },
8
+ "homepage": "https://github.com/Marak/colors.js",
9
+ "bugs": {
10
+ "url": "https://github.com/Marak/colors.js/issues"
11
+ },
12
+ "keywords": [
13
+ "ansi",
14
+ "terminal",
15
+ "colors"
16
+ ],
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "http://github.com/Marak/colors.js.git"
20
+ },
21
+ "engines": {
22
+ "node": ">=0.1.90"
23
+ },
24
+ "main": "colors",
25
+ "readme": "# colors.js - get color and style in your node.js console ( and browser ) like what\n\n<img src=\"http://i.imgur.com/goJdO.png\" border = \"0\"/>\n\n\n## Installation\n\n npm install colors\n\n## colors and styles!\n\n- bold\n- italic\n- underline\n- inverse\n- yellow\n- cyan\n- white\n- magenta\n- green\n- red\n- grey\n- blue\n- rainbow\n- zebra\n- random\n\n## Usage\n\n``` js\nvar colors = require('./colors');\n\nconsole.log('hello'.green); // outputs green text\nconsole.log('i like cake and pies'.underline.red) // outputs red underlined text\nconsole.log('inverse the color'.inverse); // inverses the color\nconsole.log('OMG Rainbows!'.rainbow); // rainbow (ignores spaces)\n```\n\n# Creating Custom themes\n\n```js\n\nvar colors = require('colors');\n\ncolors.setTheme({\n silly: 'rainbow',\n input: 'grey',\n verbose: 'cyan',\n prompt: 'grey',\n info: 'green',\n data: 'grey',\n help: 'cyan',\n warn: 'yellow',\n debug: 'blue',\n error: 'red'\n});\n\n// outputs red text\nconsole.log(\"this is an error\".error);\n\n// outputs yellow text\nconsole.log(\"this is a warning\".warn);\n```\n\n\n### Contributors \n\nMarak (Marak Squires)\nAlexis Sellier (cloudhead)\nmmalecki (Maciej Małecki)\nnicoreed (Nico Reed)\nmorganrallen (Morgan Allen)\nJustinCampbell (Justin Campbell)\nded (Dustin Diaz)\n\n\n#### , Marak Squires , Justin Campbell, Dustin Diaz (@ded)\n",
26
+ "readmeFilename": "ReadMe.md",
27
+ "_id": "colors@0.6.2",
28
+ "_from": "colors@~0.6.2"
29
+ }
@@ -0,0 +1,70 @@
1
+ var assert = require('assert'),
2
+ colors = require('./colors');
3
+
4
+ var s = 'string';
5
+
6
+ function a(s, code) {
7
+ return '\x1B[' + code.toString() + 'm' + s + '\x1B[39m';
8
+ }
9
+
10
+ function aE(s, color, code) {
11
+ assert.equal(s[color], a(s, code));
12
+ assert.equal(colors[color](s), a(s, code));
13
+ assert.equal(s[color], colors[color](s));
14
+ assert.equal(s[color].stripColors, s);
15
+ assert.equal(s[color].stripColors, colors.stripColors(s));
16
+ }
17
+
18
+ function h(s, color) {
19
+ return '<span style="color:' + color + ';">' + s + '</span>';
20
+ }
21
+
22
+ var stylesColors = ['white', 'black', 'blue', 'cyan', 'green', 'magenta', 'red', 'yellow'];
23
+ var stylesAll = stylesColors.concat(['bold', 'italic', 'underline', 'inverse', 'rainbow']);
24
+
25
+ colors.mode = 'console';
26
+ assert.equal(s.bold, '\x1B[1m' + s + '\x1B[22m');
27
+ assert.equal(s.italic, '\x1B[3m' + s + '\x1B[23m');
28
+ assert.equal(s.underline, '\x1B[4m' + s + '\x1B[24m');
29
+ assert.equal(s.strikethrough, '\x1B[9m' + s + '\x1B[29m');
30
+ assert.equal(s.inverse, '\x1B[7m' + s + '\x1B[27m');
31
+ assert.ok(s.rainbow);
32
+ aE(s, 'white', 37);
33
+ aE(s, 'grey', 90);
34
+ aE(s, 'black', 30);
35
+ aE(s, 'blue', 34);
36
+ aE(s, 'cyan', 36);
37
+ aE(s, 'green', 32);
38
+ aE(s, 'magenta', 35);
39
+ aE(s, 'red', 31);
40
+ aE(s, 'yellow', 33);
41
+ assert.equal(s, 'string');
42
+
43
+ colors.setTheme({error:'red'});
44
+
45
+ assert.equal(typeof("astring".red),'string');
46
+ assert.equal(typeof("astring".error),'string');
47
+
48
+ colors.mode = 'browser';
49
+ assert.equal(s.bold, '<b>' + s + '</b>');
50
+ assert.equal(s.italic, '<i>' + s + '</i>');
51
+ assert.equal(s.underline, '<u>' + s + '</u>');
52
+ assert.equal(s.strikethrough, '<del>' + s + '</del>');
53
+ assert.equal(s.inverse, '<span style="background-color:black;color:white;">' + s + '</span>');
54
+ assert.ok(s.rainbow);
55
+ stylesColors.forEach(function (color) {
56
+ assert.equal(s[color], h(s, color));
57
+ assert.equal(colors[color](s), h(s, color));
58
+ });
59
+
60
+ assert.equal(typeof("astring".red),'string');
61
+ assert.equal(typeof("astring".error),'string');
62
+
63
+ colors.mode = 'none';
64
+ stylesAll.forEach(function (style) {
65
+ assert.equal(s[style], s);
66
+ assert.equal(colors[style](s), s);
67
+ });
68
+
69
+ assert.equal(typeof("astring".red),'string');
70
+ assert.equal(typeof("astring".error),'string');
@@ -0,0 +1,12 @@
1
+ module['exports'] = {
2
+ silly: 'rainbow',
3
+ input: 'black',
4
+ verbose: 'cyan',
5
+ prompt: 'grey',
6
+ info: 'green',
7
+ data: 'grey',
8
+ help: 'cyan',
9
+ warn: 'yellow',
10
+ debug: 'blue',
11
+ error: 'red'
12
+ };
@@ -0,0 +1,12 @@
1
+ module['exports'] = {
2
+ silly: 'rainbow',
3
+ input: 'grey',
4
+ verbose: 'cyan',
5
+ prompt: 'grey',
6
+ info: 'green',
7
+ data: 'grey',
8
+ help: 'cyan',
9
+ warn: 'yellow',
10
+ debug: 'blue',
11
+ error: 'red'
12
+ };
@@ -0,0 +1,208 @@
1
+ # Commander.js
2
+
3
+ The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander).
4
+
5
+ [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js)
6
+
7
+ ## Installation
8
+
9
+ $ npm install commander
10
+
11
+ ## Option parsing
12
+
13
+ Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options.
14
+
15
+ ```js
16
+ #!/usr/bin/env node
17
+
18
+ /**
19
+ * Module dependencies.
20
+ */
21
+
22
+ var program = require('commander');
23
+
24
+ program
25
+ .version('0.0.1')
26
+ .option('-p, --peppers', 'Add peppers')
27
+ .option('-P, --pineapple', 'Add pineapple')
28
+ .option('-b, --bbq', 'Add bbq sauce')
29
+ .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')
30
+ .parse(process.argv);
31
+
32
+ console.log('you ordered a pizza with:');
33
+ if (program.peppers) console.log(' - peppers');
34
+ if (program.pineapple) console.log(' - pineapple');
35
+ if (program.bbq) console.log(' - bbq');
36
+ console.log(' - %s cheese', program.cheese);
37
+ ```
38
+
39
+ Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc.
40
+
41
+ ## Automated --help
42
+
43
+ The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free:
44
+
45
+ ```
46
+ $ ./examples/pizza --help
47
+
48
+ Usage: pizza [options]
49
+
50
+ Options:
51
+
52
+ -V, --version output the version number
53
+ -p, --peppers Add peppers
54
+ -P, --pineapple Add pineapple
55
+ -b, --bbq Add bbq sauce
56
+ -c, --cheese <type> Add the specified type of cheese [marble]
57
+ -h, --help output usage information
58
+
59
+ ```
60
+
61
+ ## Coercion
62
+
63
+ ```js
64
+ function range(val) {
65
+ return val.split('..').map(Number);
66
+ }
67
+
68
+ function list(val) {
69
+ return val.split(',');
70
+ }
71
+
72
+ function collect(val, memo) {
73
+ memo.push(val);
74
+ return memo;
75
+ }
76
+
77
+ function increaseVerbosity(v, total) {
78
+ return total + 1;
79
+ }
80
+
81
+ program
82
+ .version('0.0.1')
83
+ .usage('[options] <file ...>')
84
+ .option('-i, --integer <n>', 'An integer argument', parseInt)
85
+ .option('-f, --float <n>', 'A float argument', parseFloat)
86
+ .option('-r, --range <a>..<b>', 'A range', range)
87
+ .option('-l, --list <items>', 'A list', list)
88
+ .option('-o, --optional [value]', 'An optional value')
89
+ .option('-c, --collect [value]', 'A repeatable value', [])
90
+ .option('-v, --verbose', 'A value that can be increased', increaseVerbosity, 0)
91
+ .parse(process.argv);
92
+
93
+ console.log(' int: %j', program.integer);
94
+ console.log(' float: %j', program.float);
95
+ console.log(' optional: %j', program.optional);
96
+ program.range = program.range || [];
97
+ console.log(' range: %j..%j', program.range[0], program.range[1]);
98
+ console.log(' list: %j', program.list);
99
+ console.log(' collect: %j', program.collect);
100
+ console.log(' verbosity: %j', program.verbose);
101
+ console.log(' args: %j', program.args);
102
+ ```
103
+
104
+ ## Custom help
105
+
106
+ You can display arbitrary `-h, --help` information
107
+ by listening for "--help". Commander will automatically
108
+ exit once you are done so that the remainder of your program
109
+ does not execute causing undesired behaviours, for example
110
+ in the following executable "stuff" will not output when
111
+ `--help` is used.
112
+
113
+ ```js
114
+ #!/usr/bin/env node
115
+
116
+ /**
117
+ * Module dependencies.
118
+ */
119
+
120
+ var program = require('../');
121
+
122
+ function list(val) {
123
+ return val.split(',').map(Number);
124
+ }
125
+
126
+ program
127
+ .version('0.0.1')
128
+ .option('-f, --foo', 'enable some foo')
129
+ .option('-b, --bar', 'enable some bar')
130
+ .option('-B, --baz', 'enable some baz');
131
+
132
+ // must be before .parse() since
133
+ // node's emit() is immediate
134
+
135
+ program.on('--help', function(){
136
+ console.log(' Examples:');
137
+ console.log('');
138
+ console.log(' $ custom-help --help');
139
+ console.log(' $ custom-help -h');
140
+ console.log('');
141
+ });
142
+
143
+ program.parse(process.argv);
144
+
145
+ console.log('stuff');
146
+ ```
147
+
148
+ yielding the following help output:
149
+
150
+ ```
151
+
152
+ Usage: custom-help [options]
153
+
154
+ Options:
155
+
156
+ -h, --help output usage information
157
+ -V, --version output the version number
158
+ -f, --foo enable some foo
159
+ -b, --bar enable some bar
160
+ -B, --baz enable some baz
161
+
162
+ Examples:
163
+
164
+ $ custom-help --help
165
+ $ custom-help -h
166
+
167
+ ```
168
+
169
+ ## .outputHelp()
170
+
171
+ Output help information without exiting.
172
+
173
+ ## .help()
174
+
175
+ Output help information and exit immediately.
176
+
177
+ ## Links
178
+
179
+ - [API documentation](http://visionmedia.github.com/commander.js/)
180
+ - [ascii tables](https://github.com/LearnBoost/cli-table)
181
+ - [progress bars](https://github.com/visionmedia/node-progress)
182
+ - [more progress bars](https://github.com/substack/node-multimeter)
183
+ - [examples](https://github.com/visionmedia/commander.js/tree/master/examples)
184
+
185
+ ## License
186
+
187
+ (The MIT License)
188
+
189
+ Copyright (c) 2011 TJ Holowaychuk &lt;tj@vision-media.ca&gt;
190
+
191
+ Permission is hereby granted, free of charge, to any person obtaining
192
+ a copy of this software and associated documentation files (the
193
+ 'Software'), to deal in the Software without restriction, including
194
+ without limitation the rights to use, copy, modify, merge, publish,
195
+ distribute, sublicense, and/or sell copies of the Software, and to
196
+ permit persons to whom the Software is furnished to do so, subject to
197
+ the following conditions:
198
+
199
+ The above copyright notice and this permission notice shall be
200
+ included in all copies or substantial portions of the Software.
201
+
202
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
203
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
204
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
205
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
206
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
207
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
208
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,852 @@
1
+
2
+ /**
3
+ * Module dependencies.
4
+ */
5
+
6
+ var EventEmitter = require('events').EventEmitter;
7
+ var spawn = require('child_process').spawn;
8
+ var fs = require('fs');
9
+ var exists = fs.existsSync;
10
+ var path = require('path');
11
+ var dirname = path.dirname;
12
+ var basename = path.basename;
13
+
14
+ /**
15
+ * Expose the root command.
16
+ */
17
+
18
+ exports = module.exports = new Command;
19
+
20
+ /**
21
+ * Expose `Command`.
22
+ */
23
+
24
+ exports.Command = Command;
25
+
26
+ /**
27
+ * Expose `Option`.
28
+ */
29
+
30
+ exports.Option = Option;
31
+
32
+ /**
33
+ * Initialize a new `Option` with the given `flags` and `description`.
34
+ *
35
+ * @param {String} flags
36
+ * @param {String} description
37
+ * @api public
38
+ */
39
+
40
+ function Option(flags, description) {
41
+ this.flags = flags;
42
+ this.required = ~flags.indexOf('<');
43
+ this.optional = ~flags.indexOf('[');
44
+ this.bool = !~flags.indexOf('-no-');
45
+ flags = flags.split(/[ ,|]+/);
46
+ if (flags.length > 1 && !/^[[<]/.test(flags[1])) this.short = flags.shift();
47
+ this.long = flags.shift();
48
+ this.description = description || '';
49
+ }
50
+
51
+ /**
52
+ * Return option name.
53
+ *
54
+ * @return {String}
55
+ * @api private
56
+ */
57
+
58
+ Option.prototype.name = function(){
59
+ return this.long
60
+ .replace('--', '')
61
+ .replace('no-', '');
62
+ };
63
+
64
+ /**
65
+ * Check if `arg` matches the short or long flag.
66
+ *
67
+ * @param {String} arg
68
+ * @return {Boolean}
69
+ * @api private
70
+ */
71
+
72
+ Option.prototype.is = function(arg){
73
+ return arg == this.short
74
+ || arg == this.long;
75
+ };
76
+
77
+ /**
78
+ * Initialize a new `Command`.
79
+ *
80
+ * @param {String} name
81
+ * @api public
82
+ */
83
+
84
+ function Command(name) {
85
+ this.commands = [];
86
+ this.options = [];
87
+ this._execs = [];
88
+ this._args = [];
89
+ this._name = name;
90
+ }
91
+
92
+ /**
93
+ * Inherit from `EventEmitter.prototype`.
94
+ */
95
+
96
+ Command.prototype.__proto__ = EventEmitter.prototype;
97
+
98
+ /**
99
+ * Add command `name`.
100
+ *
101
+ * The `.action()` callback is invoked when the
102
+ * command `name` is specified via __ARGV__,
103
+ * and the remaining arguments are applied to the
104
+ * function for access.
105
+ *
106
+ * When the `name` is "*" an un-matched command
107
+ * will be passed as the first arg, followed by
108
+ * the rest of __ARGV__ remaining.
109
+ *
110
+ * Examples:
111
+ *
112
+ * program
113
+ * .version('0.0.1')
114
+ * .option('-C, --chdir <path>', 'change the working directory')
115
+ * .option('-c, --config <path>', 'set config path. defaults to ./deploy.conf')
116
+ * .option('-T, --no-tests', 'ignore test hook')
117
+ *
118
+ * program
119
+ * .command('setup')
120
+ * .description('run remote setup commands')
121
+ * .action(function(){
122
+ * console.log('setup');
123
+ * });
124
+ *
125
+ * program
126
+ * .command('exec <cmd>')
127
+ * .description('run the given remote command')
128
+ * .action(function(cmd){
129
+ * console.log('exec "%s"', cmd);
130
+ * });
131
+ *
132
+ * program
133
+ * .command('*')
134
+ * .description('deploy the given env')
135
+ * .action(function(env){
136
+ * console.log('deploying "%s"', env);
137
+ * });
138
+ *
139
+ * program.parse(process.argv);
140
+ *
141
+ * @param {String} name
142
+ * @param {String} [desc]
143
+ * @return {Command} the new command
144
+ * @api public
145
+ */
146
+
147
+ Command.prototype.command = function(name, desc){
148
+ var args = name.split(/ +/);
149
+ var cmd = new Command(args.shift());
150
+ if (desc) cmd.description(desc);
151
+ if (desc) this.executables = true;
152
+ if (desc) this._execs[cmd._name] = true;
153
+ this.commands.push(cmd);
154
+ cmd.parseExpectedArgs(args);
155
+ cmd.parent = this;
156
+ if (desc) return this;
157
+ return cmd;
158
+ };
159
+
160
+ /**
161
+ * Add an implicit `help [cmd]` subcommand
162
+ * which invokes `--help` for the given command.
163
+ *
164
+ * @api private
165
+ */
166
+
167
+ Command.prototype.addImplicitHelpCommand = function() {
168
+ this.command('help [cmd]', 'display help for [cmd]');
169
+ };
170
+
171
+ /**
172
+ * Parse expected `args`.
173
+ *
174
+ * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`.
175
+ *
176
+ * @param {Array} args
177
+ * @return {Command} for chaining
178
+ * @api public
179
+ */
180
+
181
+ Command.prototype.parseExpectedArgs = function(args){
182
+ if (!args.length) return;
183
+ var self = this;
184
+ args.forEach(function(arg){
185
+ switch (arg[0]) {
186
+ case '<':
187
+ self._args.push({ required: true, name: arg.slice(1, -1) });
188
+ break;
189
+ case '[':
190
+ self._args.push({ required: false, name: arg.slice(1, -1) });
191
+ break;
192
+ }
193
+ });
194
+ return this;
195
+ };
196
+
197
+ /**
198
+ * Register callback `fn` for the command.
199
+ *
200
+ * Examples:
201
+ *
202
+ * program
203
+ * .command('help')
204
+ * .description('display verbose help')
205
+ * .action(function(){
206
+ * // output help here
207
+ * });
208
+ *
209
+ * @param {Function} fn
210
+ * @return {Command} for chaining
211
+ * @api public
212
+ */
213
+
214
+ Command.prototype.action = function(fn){
215
+ var self = this;
216
+ this.parent.on(this._name, function(args, unknown){
217
+ // Parse any so-far unknown options
218
+ unknown = unknown || [];
219
+ var parsed = self.parseOptions(unknown);
220
+
221
+ // Output help if necessary
222
+ outputHelpIfNecessary(self, parsed.unknown);
223
+
224
+ // If there are still any unknown options, then we simply
225
+ // die, unless someone asked for help, in which case we give it
226
+ // to them, and then we die.
227
+ if (parsed.unknown.length > 0) {
228
+ self.unknownOption(parsed.unknown[0]);
229
+ }
230
+
231
+ // Leftover arguments need to be pushed back. Fixes issue #56
232
+ if (parsed.args.length) args = parsed.args.concat(args);
233
+
234
+ self._args.forEach(function(arg, i){
235
+ if (arg.required && null == args[i]) {
236
+ self.missingArgument(arg.name);
237
+ }
238
+ });
239
+
240
+ // Always append ourselves to the end of the arguments,
241
+ // to make sure we match the number of arguments the user
242
+ // expects
243
+ if (self._args.length) {
244
+ args[self._args.length] = self;
245
+ } else {
246
+ args.push(self);
247
+ }
248
+
249
+ fn.apply(this, args);
250
+ });
251
+ return this;
252
+ };
253
+
254
+ /**
255
+ * Define option with `flags`, `description` and optional
256
+ * coercion `fn`.
257
+ *
258
+ * The `flags` string should contain both the short and long flags,
259
+ * separated by comma, a pipe or space. The following are all valid
260
+ * all will output this way when `--help` is used.
261
+ *
262
+ * "-p, --pepper"
263
+ * "-p|--pepper"
264
+ * "-p --pepper"
265
+ *
266
+ * Examples:
267
+ *
268
+ * // simple boolean defaulting to false
269
+ * program.option('-p, --pepper', 'add pepper');
270
+ *
271
+ * --pepper
272
+ * program.pepper
273
+ * // => Boolean
274
+ *
275
+ * // simple boolean defaulting to false
276
+ * program.option('-C, --no-cheese', 'remove cheese');
277
+ *
278
+ * program.cheese
279
+ * // => true
280
+ *
281
+ * --no-cheese
282
+ * program.cheese
283
+ * // => true
284
+ *
285
+ * // required argument
286
+ * program.option('-C, --chdir <path>', 'change the working directory');
287
+ *
288
+ * --chdir /tmp
289
+ * program.chdir
290
+ * // => "/tmp"
291
+ *
292
+ * // optional argument
293
+ * program.option('-c, --cheese [type]', 'add cheese [marble]');
294
+ *
295
+ * @param {String} flags
296
+ * @param {String} description
297
+ * @param {Function|Mixed} fn or default
298
+ * @param {Mixed} defaultValue
299
+ * @return {Command} for chaining
300
+ * @api public
301
+ */
302
+
303
+ Command.prototype.option = function(flags, description, fn, defaultValue){
304
+ var self = this
305
+ , option = new Option(flags, description)
306
+ , oname = option.name()
307
+ , name = camelcase(oname);
308
+
309
+ // default as 3rd arg
310
+ if ('function' != typeof fn) defaultValue = fn, fn = null;
311
+
312
+ // preassign default value only for --no-*, [optional], or <required>
313
+ if (false == option.bool || option.optional || option.required) {
314
+ // when --no-* we make sure default is true
315
+ if (false == option.bool) defaultValue = true;
316
+ // preassign only if we have a default
317
+ if (undefined !== defaultValue) self[name] = defaultValue;
318
+ }
319
+
320
+ // register the option
321
+ this.options.push(option);
322
+
323
+ // when it's passed assign the value
324
+ // and conditionally invoke the callback
325
+ this.on(oname, function(val){
326
+ // coercion
327
+ if (null !== val && fn) val = fn(val, undefined === self[name] ? defaultValue : self[name]);
328
+
329
+ // unassigned or bool
330
+ if ('boolean' == typeof self[name] || 'undefined' == typeof self[name]) {
331
+ // if no value, bool true, and we have a default, then use it!
332
+ if (null == val) {
333
+ self[name] = option.bool
334
+ ? defaultValue || true
335
+ : false;
336
+ } else {
337
+ self[name] = val;
338
+ }
339
+ } else if (null !== val) {
340
+ // reassign
341
+ self[name] = val;
342
+ }
343
+ });
344
+
345
+ return this;
346
+ };
347
+
348
+ /**
349
+ * Parse `argv`, settings options and invoking commands when defined.
350
+ *
351
+ * @param {Array} argv
352
+ * @return {Command} for chaining
353
+ * @api public
354
+ */
355
+
356
+ Command.prototype.parse = function(argv){
357
+ // implicit help
358
+ if (this.executables) this.addImplicitHelpCommand();
359
+
360
+ // store raw args
361
+ this.rawArgs = argv;
362
+
363
+ // guess name
364
+ this._name = this._name || basename(argv[1], '.js');
365
+
366
+ // process argv
367
+ var parsed = this.parseOptions(this.normalize(argv.slice(2)));
368
+ var args = this.args = parsed.args;
369
+
370
+ var result = this.parseArgs(this.args, parsed.unknown);
371
+
372
+ // executable sub-commands
373
+ var name = result.args[0];
374
+ if (this._execs[name]) return this.executeSubCommand(argv, args, parsed.unknown);
375
+
376
+ return result;
377
+ };
378
+
379
+ /**
380
+ * Execute a sub-command executable.
381
+ *
382
+ * @param {Array} argv
383
+ * @param {Array} args
384
+ * @param {Array} unknown
385
+ * @api private
386
+ */
387
+
388
+ Command.prototype.executeSubCommand = function(argv, args, unknown) {
389
+ args = args.concat(unknown);
390
+
391
+ if (!args.length) this.help();
392
+ if ('help' == args[0] && 1 == args.length) this.help();
393
+
394
+ // <cmd> --help
395
+ if ('help' == args[0]) {
396
+ args[0] = args[1];
397
+ args[1] = '--help';
398
+ }
399
+
400
+ // executable
401
+ var dir = dirname(argv[1]);
402
+ var bin = basename(argv[1], '.js') + '-' + args[0];
403
+
404
+ // check for ./<bin> first
405
+ var local = path.join(dir, bin);
406
+
407
+ // run it
408
+ args = args.slice(1);
409
+ args.unshift(local);
410
+ var proc = spawn('node', args, { stdio: 'inherit', customFds: [0, 1, 2] });
411
+ proc.on('error', function(err){
412
+ if (err.code == "ENOENT") {
413
+ console.error('\n %s(1) does not exist, try --help\n', bin);
414
+ } else if (err.code == "EACCES") {
415
+ console.error('\n %s(1) not executable. try chmod or run with root\n', bin);
416
+ }
417
+ });
418
+
419
+ this.runningCommand = proc;
420
+ };
421
+
422
+ /**
423
+ * Normalize `args`, splitting joined short flags. For example
424
+ * the arg "-abc" is equivalent to "-a -b -c".
425
+ * This also normalizes equal sign and splits "--abc=def" into "--abc def".
426
+ *
427
+ * @param {Array} args
428
+ * @return {Array}
429
+ * @api private
430
+ */
431
+
432
+ Command.prototype.normalize = function(args){
433
+ var ret = []
434
+ , arg
435
+ , lastOpt
436
+ , index;
437
+
438
+ for (var i = 0, len = args.length; i < len; ++i) {
439
+ arg = args[i];
440
+ i > 0 && (lastOpt = this.optionFor(args[i-1]));
441
+
442
+ if (lastOpt && lastOpt.required) {
443
+ ret.push(arg);
444
+ } else if (arg.length > 1 && '-' == arg[0] && '-' != arg[1]) {
445
+ arg.slice(1).split('').forEach(function(c){
446
+ ret.push('-' + c);
447
+ });
448
+ } else if (/^--/.test(arg) && ~(index = arg.indexOf('='))) {
449
+ ret.push(arg.slice(0, index), arg.slice(index + 1));
450
+ } else {
451
+ ret.push(arg);
452
+ }
453
+ }
454
+
455
+ return ret;
456
+ };
457
+
458
+ /**
459
+ * Parse command `args`.
460
+ *
461
+ * When listener(s) are available those
462
+ * callbacks are invoked, otherwise the "*"
463
+ * event is emitted and those actions are invoked.
464
+ *
465
+ * @param {Array} args
466
+ * @return {Command} for chaining
467
+ * @api private
468
+ */
469
+
470
+ Command.prototype.parseArgs = function(args, unknown){
471
+ var cmds = this.commands
472
+ , len = cmds.length
473
+ , name;
474
+
475
+ if (args.length) {
476
+ name = args[0];
477
+ if (this.listeners(name).length) {
478
+ this.emit(args.shift(), args, unknown);
479
+ } else {
480
+ this.emit('*', args);
481
+ }
482
+ } else {
483
+ outputHelpIfNecessary(this, unknown);
484
+
485
+ // If there were no args and we have unknown options,
486
+ // then they are extraneous and we need to error.
487
+ if (unknown.length > 0) {
488
+ this.unknownOption(unknown[0]);
489
+ }
490
+ }
491
+
492
+ return this;
493
+ };
494
+
495
+ /**
496
+ * Return an option matching `arg` if any.
497
+ *
498
+ * @param {String} arg
499
+ * @return {Option}
500
+ * @api private
501
+ */
502
+
503
+ Command.prototype.optionFor = function(arg){
504
+ for (var i = 0, len = this.options.length; i < len; ++i) {
505
+ if (this.options[i].is(arg)) {
506
+ return this.options[i];
507
+ }
508
+ }
509
+ };
510
+
511
+ /**
512
+ * Parse options from `argv` returning `argv`
513
+ * void of these options.
514
+ *
515
+ * @param {Array} argv
516
+ * @return {Array}
517
+ * @api public
518
+ */
519
+
520
+ Command.prototype.parseOptions = function(argv){
521
+ var args = []
522
+ , len = argv.length
523
+ , literal
524
+ , option
525
+ , arg;
526
+
527
+ var unknownOptions = [];
528
+
529
+ // parse options
530
+ for (var i = 0; i < len; ++i) {
531
+ arg = argv[i];
532
+
533
+ // literal args after --
534
+ if ('--' == arg) {
535
+ literal = true;
536
+ continue;
537
+ }
538
+
539
+ if (literal) {
540
+ args.push(arg);
541
+ continue;
542
+ }
543
+
544
+ // find matching Option
545
+ option = this.optionFor(arg);
546
+
547
+ // option is defined
548
+ if (option) {
549
+ // requires arg
550
+ if (option.required) {
551
+ arg = argv[++i];
552
+ if (null == arg) return this.optionMissingArgument(option);
553
+ this.emit(option.name(), arg);
554
+ // optional arg
555
+ } else if (option.optional) {
556
+ arg = argv[i+1];
557
+ if (null == arg || ('-' == arg[0] && '-' != arg)) {
558
+ arg = null;
559
+ } else {
560
+ ++i;
561
+ }
562
+ this.emit(option.name(), arg);
563
+ // bool
564
+ } else {
565
+ this.emit(option.name());
566
+ }
567
+ continue;
568
+ }
569
+
570
+ // looks like an option
571
+ if (arg.length > 1 && '-' == arg[0]) {
572
+ unknownOptions.push(arg);
573
+
574
+ // If the next argument looks like it might be
575
+ // an argument for this option, we pass it on.
576
+ // If it isn't, then it'll simply be ignored
577
+ if (argv[i+1] && '-' != argv[i+1][0]) {
578
+ unknownOptions.push(argv[++i]);
579
+ }
580
+ continue;
581
+ }
582
+
583
+ // arg
584
+ args.push(arg);
585
+ }
586
+
587
+ return { args: args, unknown: unknownOptions };
588
+ };
589
+
590
+ /**
591
+ * Argument `name` is missing.
592
+ *
593
+ * @param {String} name
594
+ * @api private
595
+ */
596
+
597
+ Command.prototype.missingArgument = function(name){
598
+ console.error();
599
+ console.error(" error: missing required argument `%s'", name);
600
+ console.error();
601
+ process.exit(1);
602
+ };
603
+
604
+ /**
605
+ * `Option` is missing an argument, but received `flag` or nothing.
606
+ *
607
+ * @param {String} option
608
+ * @param {String} flag
609
+ * @api private
610
+ */
611
+
612
+ Command.prototype.optionMissingArgument = function(option, flag){
613
+ console.error();
614
+ if (flag) {
615
+ console.error(" error: option `%s' argument missing, got `%s'", option.flags, flag);
616
+ } else {
617
+ console.error(" error: option `%s' argument missing", option.flags);
618
+ }
619
+ console.error();
620
+ process.exit(1);
621
+ };
622
+
623
+ /**
624
+ * Unknown option `flag`.
625
+ *
626
+ * @param {String} flag
627
+ * @api private
628
+ */
629
+
630
+ Command.prototype.unknownOption = function(flag){
631
+ console.error();
632
+ console.error(" error: unknown option `%s'", flag);
633
+ console.error();
634
+ process.exit(1);
635
+ };
636
+
637
+
638
+ /**
639
+ * Set the program version to `str`.
640
+ *
641
+ * This method auto-registers the "-V, --version" flag
642
+ * which will print the version number when passed.
643
+ *
644
+ * @param {String} str
645
+ * @param {String} flags
646
+ * @return {Command} for chaining
647
+ * @api public
648
+ */
649
+
650
+ Command.prototype.version = function(str, flags){
651
+ if (0 == arguments.length) return this._version;
652
+ this._version = str;
653
+ flags = flags || '-V, --version';
654
+ this.option(flags, 'output the version number');
655
+ this.on('version', function(){
656
+ console.log(str);
657
+ process.exit(0);
658
+ });
659
+ return this;
660
+ };
661
+
662
+ /**
663
+ * Set the description `str`.
664
+ *
665
+ * @param {String} str
666
+ * @return {String|Command}
667
+ * @api public
668
+ */
669
+
670
+ Command.prototype.description = function(str){
671
+ if (0 == arguments.length) return this._description;
672
+ this._description = str;
673
+ return this;
674
+ };
675
+
676
+ /**
677
+ * Set / get the command usage `str`.
678
+ *
679
+ * @param {String} str
680
+ * @return {String|Command}
681
+ * @api public
682
+ */
683
+
684
+ Command.prototype.usage = function(str){
685
+ var args = this._args.map(function(arg){
686
+ return arg.required
687
+ ? '<' + arg.name + '>'
688
+ : '[' + arg.name + ']';
689
+ });
690
+
691
+ var usage = '[options'
692
+ + (this.commands.length ? '] [command' : '')
693
+ + ']'
694
+ + (this._args.length ? ' ' + args : '');
695
+
696
+ if (0 == arguments.length) return this._usage || usage;
697
+ this._usage = str;
698
+
699
+ return this;
700
+ };
701
+
702
+ /**
703
+ * Return the largest option length.
704
+ *
705
+ * @return {Number}
706
+ * @api private
707
+ */
708
+
709
+ Command.prototype.largestOptionLength = function(){
710
+ return this.options.reduce(function(max, option){
711
+ return Math.max(max, option.flags.length);
712
+ }, 0);
713
+ };
714
+
715
+ /**
716
+ * Return help for options.
717
+ *
718
+ * @return {String}
719
+ * @api private
720
+ */
721
+
722
+ Command.prototype.optionHelp = function(){
723
+ var width = this.largestOptionLength();
724
+
725
+ // Prepend the help information
726
+ return [pad('-h, --help', width) + ' ' + 'output usage information']
727
+ .concat(this.options.map(function(option){
728
+ return pad(option.flags, width)
729
+ + ' ' + option.description;
730
+ }))
731
+ .join('\n');
732
+ };
733
+
734
+ /**
735
+ * Return command help documentation.
736
+ *
737
+ * @return {String}
738
+ * @api private
739
+ */
740
+
741
+ Command.prototype.commandHelp = function(){
742
+ if (!this.commands.length) return '';
743
+ return [
744
+ ''
745
+ , ' Commands:'
746
+ , ''
747
+ , this.commands.map(function(cmd){
748
+ var args = cmd._args.map(function(arg){
749
+ return arg.required
750
+ ? '<' + arg.name + '>'
751
+ : '[' + arg.name + ']';
752
+ }).join(' ');
753
+
754
+ return pad(cmd._name
755
+ + (cmd.options.length
756
+ ? ' [options]'
757
+ : '') + ' ' + args, 22)
758
+ + (cmd.description()
759
+ ? ' ' + cmd.description()
760
+ : '');
761
+ }).join('\n').replace(/^/gm, ' ')
762
+ , ''
763
+ ].join('\n');
764
+ };
765
+
766
+ /**
767
+ * Return program help documentation.
768
+ *
769
+ * @return {String}
770
+ * @api private
771
+ */
772
+
773
+ Command.prototype.helpInformation = function(){
774
+ return [
775
+ ''
776
+ , ' Usage: ' + this._name + ' ' + this.usage()
777
+ , '' + this.commandHelp()
778
+ , ' Options:'
779
+ , ''
780
+ , '' + this.optionHelp().replace(/^/gm, ' ')
781
+ , ''
782
+ , ''
783
+ ].join('\n');
784
+ };
785
+
786
+ /**
787
+ * Output help information for this command
788
+ *
789
+ * @api public
790
+ */
791
+
792
+ Command.prototype.outputHelp = function(){
793
+ process.stdout.write(this.helpInformation());
794
+ this.emit('--help');
795
+ };
796
+
797
+ /**
798
+ * Output help information and exit.
799
+ *
800
+ * @api public
801
+ */
802
+
803
+ Command.prototype.help = function(){
804
+ this.outputHelp();
805
+ process.exit();
806
+ };
807
+
808
+ /**
809
+ * Camel-case the given `flag`
810
+ *
811
+ * @param {String} flag
812
+ * @return {String}
813
+ * @api private
814
+ */
815
+
816
+ function camelcase(flag) {
817
+ return flag.split('-').reduce(function(str, word){
818
+ return str + word[0].toUpperCase() + word.slice(1);
819
+ });
820
+ }
821
+
822
+ /**
823
+ * Pad `str` to `width`.
824
+ *
825
+ * @param {String} str
826
+ * @param {Number} width
827
+ * @return {String}
828
+ * @api private
829
+ */
830
+
831
+ function pad(str, width) {
832
+ var len = Math.max(0, width - str.length);
833
+ return str + Array(len + 1).join(' ');
834
+ }
835
+
836
+ /**
837
+ * Output help information if necessary
838
+ *
839
+ * @param {Command} command to output help for
840
+ * @param {Array} array of options to search for -h or --help
841
+ * @api private
842
+ */
843
+
844
+ function outputHelpIfNecessary(cmd, options) {
845
+ options = options || [];
846
+ for (var i = 0; i < options.length; i++) {
847
+ if (options[i] == '--help' || options[i] == '-h') {
848
+ cmd.outputHelp();
849
+ process.exit(0);
850
+ }
851
+ }
852
+ }