snowball 0.1.21 → 0.1.22

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 (589) hide show
  1. checksums.yaml +5 -13
  2. data/.gitignore +1 -3
  3. data/{lib/snowball → bin}/roll.js +0 -0
  4. data/lib/snowball/roller.rb +1 -1
  5. data/lib/snowball/version.rb +1 -1
  6. data/node_modules/.bin/browserify +161 -0
  7. data/node_modules/.bin/cake +7 -0
  8. data/node_modules/.bin/coffee +7 -0
  9. data/node_modules/.bin/jade +168 -0
  10. data/node_modules/browserify/.travis.yml +4 -0
  11. data/node_modules/browserify/LICENSE +63 -0
  12. data/node_modules/browserify/README.markdown +172 -0
  13. data/node_modules/browserify/bin/cmd.js +161 -0
  14. data/node_modules/browserify/builtins/__browserify_process.js +55 -0
  15. data/node_modules/browserify/builtins/assert.js +314 -0
  16. data/node_modules/browserify/builtins/child_process.js +2 -0
  17. data/node_modules/browserify/builtins/events.js +178 -0
  18. data/node_modules/browserify/builtins/fs.js +1 -0
  19. data/node_modules/browserify/builtins/https.js +1 -0
  20. data/node_modules/browserify/builtins/net.js +1 -0
  21. data/node_modules/browserify/builtins/path.js +175 -0
  22. data/node_modules/browserify/builtins/querystring.js +250 -0
  23. data/node_modules/browserify/builtins/stream.js +119 -0
  24. data/node_modules/browserify/builtins/string_decoder.js +161 -0
  25. data/node_modules/browserify/builtins/sys.js +1 -0
  26. data/node_modules/browserify/builtins/timers.js +39 -0
  27. data/node_modules/browserify/builtins/tls.js +1 -0
  28. data/node_modules/browserify/builtins/tty.js +2 -0
  29. data/node_modules/browserify/builtins/url.js +604 -0
  30. data/node_modules/browserify/builtins/util.js +351 -0
  31. data/node_modules/browserify/example/debug/browserify.js +219 -0
  32. data/node_modules/browserify/example/debug/build.sh +3 -0
  33. data/node_modules/browserify/example/debug/index.html +7 -0
  34. data/node_modules/browserify/example/debug/js/entry.js +2 -0
  35. data/node_modules/browserify/example/debug/js/thrower.js +3 -0
  36. data/node_modules/browserify/example/debug/server.js +9 -0
  37. data/node_modules/browserify/example/simple-build/browserify.js +368 -0
  38. data/node_modules/browserify/example/simple-build/build.sh +3 -0
  39. data/node_modules/browserify/example/simple-build/index.html +9 -0
  40. data/node_modules/browserify/example/simple-build/js/bar.js +3 -0
  41. data/node_modules/browserify/example/simple-build/js/entry.js +5 -0
  42. data/node_modules/browserify/example/simple-build/js/foo.js +5 -0
  43. data/node_modules/browserify/example/simple-build/server.js +9 -0
  44. data/node_modules/browserify/example/test/b.js +5 -0
  45. data/node_modules/browserify/example/test/bar.js +3 -0
  46. data/node_modules/browserify/example/test/foo.js +3 -0
  47. data/node_modules/browserify/example/test/m.js +3 -0
  48. data/node_modules/browserify/example/test/n.js +3 -0
  49. data/node_modules/browserify/example/using-http/bundle.js +813 -0
  50. data/node_modules/browserify/example/using-http/entry.js +25 -0
  51. data/node_modules/browserify/example/using-http/index.html +9 -0
  52. data/node_modules/browserify/example/using-http/server.js +28 -0
  53. data/node_modules/browserify/index.js +202 -0
  54. data/node_modules/browserify/lib/watch.js +75 -0
  55. data/node_modules/browserify/lib/wrap.js +580 -0
  56. data/node_modules/browserify/lib/wrappers.js +10 -0
  57. data/node_modules/browserify/node_modules/buffer-browserify/.npmignore +1 -0
  58. data/node_modules/browserify/node_modules/buffer-browserify/README.md +11 -0
  59. data/node_modules/browserify/node_modules/buffer-browserify/buffer_ieee754.js +84 -0
  60. data/node_modules/browserify/node_modules/buffer-browserify/index.js +1317 -0
  61. data/node_modules/browserify/node_modules/buffer-browserify/node_modules/base64-js/README.md +14 -0
  62. data/node_modules/browserify/node_modules/buffer-browserify/node_modules/base64-js/lib/b64.js +84 -0
  63. data/node_modules/browserify/node_modules/buffer-browserify/node_modules/base64-js/package.json +30 -0
  64. data/node_modules/browserify/node_modules/buffer-browserify/node_modules/base64-js/test/runner.js +50 -0
  65. data/node_modules/browserify/node_modules/buffer-browserify/package.json +46 -0
  66. data/node_modules/browserify/node_modules/buffer-browserify/test/buffer.js +218 -0
  67. data/node_modules/browserify/node_modules/commondir/README.markdown +45 -0
  68. data/node_modules/browserify/node_modules/commondir/example/base.js +3 -0
  69. data/node_modules/browserify/node_modules/commondir/example/dir.js +3 -0
  70. data/node_modules/browserify/node_modules/commondir/index.js +29 -0
  71. data/node_modules/browserify/node_modules/commondir/package.json +47 -0
  72. data/node_modules/browserify/node_modules/commondir/test/dirs.js +66 -0
  73. data/node_modules/browserify/node_modules/crypto-browserify/.travis.yml +4 -0
  74. data/node_modules/browserify/node_modules/crypto-browserify/example/bundle.js +637 -0
  75. data/node_modules/browserify/node_modules/crypto-browserify/example/index.html +12 -0
  76. data/node_modules/browserify/node_modules/crypto-browserify/example/test.js +4 -0
  77. data/node_modules/browserify/node_modules/crypto-browserify/index.js +74 -0
  78. data/node_modules/browserify/node_modules/crypto-browserify/md5.js +384 -0
  79. data/node_modules/browserify/node_modules/crypto-browserify/package.json +33 -0
  80. data/node_modules/browserify/node_modules/crypto-browserify/readme.markdown +20 -0
  81. data/node_modules/browserify/node_modules/crypto-browserify/rng.js +37 -0
  82. data/node_modules/browserify/node_modules/crypto-browserify/sha.js +210 -0
  83. data/node_modules/browserify/node_modules/crypto-browserify/test/simple.js +35 -0
  84. data/node_modules/browserify/node_modules/deputy/.travis.yml +4 -0
  85. data/node_modules/browserify/node_modules/deputy/README.markdown +55 -0
  86. data/node_modules/browserify/node_modules/deputy/example/cache.js +5 -0
  87. data/node_modules/browserify/node_modules/deputy/index.js +46 -0
  88. data/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/.npmignore +2 -0
  89. data/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/.travis.yml +5 -0
  90. data/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/LICENSE +21 -0
  91. data/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/examples/pow.js +6 -0
  92. data/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/index.js +82 -0
  93. data/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/package.json +34 -0
  94. data/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/readme.markdown +63 -0
  95. data/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/chmod.js +38 -0
  96. data/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/clobber.js +37 -0
  97. data/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/mkdirp.js +28 -0
  98. data/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/perm.js +32 -0
  99. data/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/perm_sync.js +39 -0
  100. data/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/race.js +41 -0
  101. data/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/rel.js +32 -0
  102. data/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/return.js +25 -0
  103. data/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/return_sync.js +24 -0
  104. data/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/root.js +18 -0
  105. data/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/sync.js +32 -0
  106. data/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/umask.js +28 -0
  107. data/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/umask_sync.js +32 -0
  108. data/node_modules/browserify/node_modules/deputy/package.json +47 -0
  109. data/node_modules/browserify/node_modules/deputy/test/cache.js +58 -0
  110. data/node_modules/browserify/node_modules/detective/.travis.yml +4 -0
  111. data/node_modules/browserify/node_modules/detective/README.markdown +66 -0
  112. data/node_modules/browserify/node_modules/detective/example/strings.js +6 -0
  113. data/node_modules/browserify/node_modules/detective/example/strings_src.js +3 -0
  114. data/node_modules/browserify/node_modules/detective/index.js +60 -0
  115. data/node_modules/browserify/node_modules/detective/node_modules/.bin/esparse +42 -0
  116. data/node_modules/browserify/node_modules/detective/node_modules/esprima/.travis.yml +5 -0
  117. data/node_modules/browserify/node_modules/detective/node_modules/esprima/LICENSE.BSD +19 -0
  118. data/node_modules/browserify/node_modules/detective/node_modules/esprima/README.md +74 -0
  119. data/node_modules/browserify/node_modules/detective/node_modules/esprima/assets/codemirror/codemirror.css +112 -0
  120. data/node_modules/browserify/node_modules/detective/node_modules/esprima/assets/codemirror/codemirror.js +2972 -0
  121. data/node_modules/browserify/node_modules/detective/node_modules/esprima/assets/codemirror/javascript.js +360 -0
  122. data/node_modules/browserify/node_modules/detective/node_modules/esprima/assets/json2.js +487 -0
  123. data/node_modules/browserify/node_modules/detective/node_modules/esprima/assets/style.css +164 -0
  124. data/node_modules/browserify/node_modules/detective/node_modules/esprima/assets/yui/treeview-min.js +12 -0
  125. data/node_modules/browserify/node_modules/detective/node_modules/esprima/assets/yui/treeview-sprite.gif +0 -0
  126. data/node_modules/browserify/node_modules/detective/node_modules/esprima/assets/yui/treeview.css +7 -0
  127. data/node_modules/browserify/node_modules/detective/node_modules/esprima/assets/yui/yahoo-dom-event.js +14 -0
  128. data/node_modules/browserify/node_modules/detective/node_modules/esprima/bin/esparse.js +42 -0
  129. data/node_modules/browserify/node_modules/detective/node_modules/esprima/changes +92 -0
  130. data/node_modules/browserify/node_modules/detective/node_modules/esprima/cm +696 -0
  131. data/node_modules/browserify/node_modules/detective/node_modules/esprima/demo/checkenv.js +42 -0
  132. data/node_modules/browserify/node_modules/detective/node_modules/esprima/demo/collector.html +82 -0
  133. data/node_modules/browserify/node_modules/detective/node_modules/esprima/demo/collector.js +170 -0
  134. data/node_modules/browserify/node_modules/detective/node_modules/esprima/demo/functiontrace.html +106 -0
  135. data/node_modules/browserify/node_modules/detective/node_modules/esprima/demo/functiontrace.js +123 -0
  136. data/node_modules/browserify/node_modules/detective/node_modules/esprima/demo/parse.css +82 -0
  137. data/node_modules/browserify/node_modules/detective/node_modules/esprima/demo/parse.html +352 -0
  138. data/node_modules/browserify/node_modules/detective/node_modules/esprima/demo/precedence.html +225 -0
  139. data/node_modules/browserify/node_modules/detective/node_modules/esprima/demo/rewrite.html +120 -0
  140. data/node_modules/browserify/node_modules/detective/node_modules/esprima/demo/rewrite.js +71 -0
  141. data/node_modules/browserify/node_modules/detective/node_modules/esprima/esprima.js +3577 -0
  142. data/node_modules/browserify/node_modules/detective/node_modules/esprima/index.html +103 -0
  143. data/node_modules/browserify/node_modules/detective/node_modules/esprima/package.json +42 -0
  144. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/3rdparty/Tokenizer.js +646 -0
  145. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/3rdparty/XMLHttpRequest.js +509 -0
  146. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/3rdparty/ZeParser.js +2185 -0
  147. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/3rdparty/backbone-0.5.3.js +1158 -0
  148. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/3rdparty/benchmark.js +3261 -0
  149. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/3rdparty/escodegen.js +906 -0
  150. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/3rdparty/esmorph.js +240 -0
  151. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/3rdparty/ext-core-3.0.0.js +6579 -0
  152. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/3rdparty/ext-core-3.1.0.js +10255 -0
  153. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/3rdparty/jquery-1.6.4.js +9046 -0
  154. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/3rdparty/jquery-1.7.1.js +9266 -0
  155. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/3rdparty/jquery.mobile-1.0.js +6951 -0
  156. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/3rdparty/jsdefs.js +731 -0
  157. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/3rdparty/jslex.js +588 -0
  158. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/3rdparty/jsparse.js +1921 -0
  159. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/3rdparty/mootools-1.3.2.js +5952 -0
  160. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/3rdparty/mootools-1.4.1.js +6297 -0
  161. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/3rdparty/parse-js.js +1342 -0
  162. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/3rdparty/platform.js +878 -0
  163. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/3rdparty/prototype-1.6.1.js +4874 -0
  164. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/3rdparty/prototype-1.7.0.0.js +6082 -0
  165. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/3rdparty/underscore-1.2.3.js +981 -0
  166. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/benchmarks.html +58 -0
  167. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/benchmarks.js +328 -0
  168. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/compare.html +140 -0
  169. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/compare.js +270 -0
  170. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/compat.html +40 -0
  171. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/compat.js +239 -0
  172. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/coverage.footer.html +3 -0
  173. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/coverage.header.html +37 -0
  174. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/coverage.html +3617 -0
  175. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/index.html +36 -0
  176. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/reflect.js +403 -0
  177. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/run.js +66 -0
  178. data/node_modules/browserify/node_modules/detective/node_modules/esprima/test/test.js +16659 -0
  179. data/node_modules/browserify/node_modules/detective/node_modules/esprima/tools/generate-unicode-regex.py +164 -0
  180. data/node_modules/browserify/node_modules/detective/node_modules/esprima/tools/update-coverage.sh +28 -0
  181. data/node_modules/browserify/node_modules/detective/package.json +47 -0
  182. data/node_modules/browserify/node_modules/detective/test/both.js +11 -0
  183. data/node_modules/browserify/node_modules/detective/test/chained.js +9 -0
  184. data/node_modules/browserify/node_modules/detective/test/files/both.js +4 -0
  185. data/node_modules/browserify/node_modules/detective/test/files/chained.js +5 -0
  186. data/node_modules/browserify/node_modules/detective/test/files/nested.js +22 -0
  187. data/node_modules/browserify/node_modules/detective/test/files/skip.js +7 -0
  188. data/node_modules/browserify/node_modules/detective/test/files/strings.js +13 -0
  189. data/node_modules/browserify/node_modules/detective/test/files/word.js +13 -0
  190. data/node_modules/browserify/node_modules/detective/test/nested.js +9 -0
  191. data/node_modules/browserify/node_modules/detective/test/skip.js +9 -0
  192. data/node_modules/browserify/node_modules/detective/test/strings.js +9 -0
  193. data/node_modules/browserify/node_modules/detective/test/word.js +12 -0
  194. data/node_modules/browserify/node_modules/http-browserify/.npmignore +1 -0
  195. data/node_modules/browserify/node_modules/http-browserify/example/get/index.html +9 -0
  196. data/node_modules/browserify/node_modules/http-browserify/example/get/main.js +14 -0
  197. data/node_modules/browserify/node_modules/http-browserify/example/get/server.js +12 -0
  198. data/node_modules/browserify/node_modules/http-browserify/example/headers/index.html +9 -0
  199. data/node_modules/browserify/node_modules/http-browserify/example/headers/main.js +18 -0
  200. data/node_modules/browserify/node_modules/http-browserify/example/headers/server.js +15 -0
  201. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/data.json +139 -0
  202. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/index.html +9 -0
  203. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/main.js +13 -0
  204. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/.npmignore +2 -0
  205. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/.travis.yml +4 -0
  206. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/LICENSE.APACHE2 +15 -0
  207. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/LICENSE.MIT +24 -0
  208. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/examples/all_docs.js +13 -0
  209. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/index.js +189 -0
  210. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/node_modules/jsonparse/LICENSE +24 -0
  211. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/node_modules/jsonparse/README.markdown +11 -0
  212. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/node_modules/jsonparse/bench.js +26 -0
  213. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/node_modules/jsonparse/examples/twitterfeed.js +30 -0
  214. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/node_modules/jsonparse/jsonparse.js +379 -0
  215. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/node_modules/jsonparse/package.json +36 -0
  216. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/node_modules/jsonparse/samplejson/basic.json +167 -0
  217. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/node_modules/jsonparse/samplejson/basic2.json +180 -0
  218. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/node_modules/jsonparse/test/primitives.js +54 -0
  219. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/node_modules/jsonparse/test/utf8.js +38 -0
  220. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/package.json +40 -0
  221. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/readme.markdown +145 -0
  222. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/test/bool.js +41 -0
  223. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/test/destroy_missing.js +22 -0
  224. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/test/empty.js +44 -0
  225. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/test/fixtures/all_npm.json +4030 -0
  226. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/test/fn.js +39 -0
  227. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/test/memory.js +69 -0
  228. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/test/multiple_objects.js +42 -0
  229. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/test/multiple_objects_error.js +35 -0
  230. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/test/parsejson.js +28 -0
  231. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/test/stringify.js +41 -0
  232. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/test/stringify_object.js +47 -0
  233. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/test/test.js +35 -0
  234. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/test/test2.js +29 -0
  235. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/node_modules/JSONStream/test/two-ways.js +41 -0
  236. data/node_modules/browserify/node_modules/http-browserify/example/json-stream/server.js +10 -0
  237. data/node_modules/browserify/node_modules/http-browserify/example/post/index.html +9 -0
  238. data/node_modules/browserify/node_modules/http-browserify/example/post/main.js +16 -0
  239. data/node_modules/browserify/node_modules/http-browserify/example/post/server.js +19 -0
  240. data/node_modules/browserify/node_modules/http-browserify/example/streaming/index.html +9 -0
  241. data/node_modules/browserify/node_modules/http-browserify/example/streaming/main.js +16 -0
  242. data/node_modules/browserify/node_modules/http-browserify/example/streaming/server.js +21 -0
  243. data/node_modules/browserify/node_modules/http-browserify/index.js +59 -0
  244. data/node_modules/browserify/node_modules/http-browserify/lib/request.js +128 -0
  245. data/node_modules/browserify/node_modules/http-browserify/lib/response.js +119 -0
  246. data/node_modules/browserify/node_modules/http-browserify/node_modules/concat-stream/index.js +48 -0
  247. data/node_modules/browserify/node_modules/http-browserify/node_modules/concat-stream/package.json +30 -0
  248. data/node_modules/browserify/node_modules/http-browserify/node_modules/concat-stream/readme.md +31 -0
  249. data/node_modules/browserify/node_modules/http-browserify/node_modules/concat-stream/test.js +34 -0
  250. data/node_modules/browserify/node_modules/http-browserify/package.json +46 -0
  251. data/node_modules/browserify/node_modules/http-browserify/readme.markdown +128 -0
  252. data/node_modules/browserify/node_modules/nub/README.markdown +23 -0
  253. data/node_modules/browserify/node_modules/nub/index.js +64 -0
  254. data/node_modules/browserify/node_modules/nub/package.json +46 -0
  255. data/node_modules/browserify/node_modules/nub/test/by.js +51 -0
  256. data/node_modules/browserify/node_modules/nub/test/nub.js +46 -0
  257. data/node_modules/browserify/node_modules/resolve/.travis.yml +4 -0
  258. data/node_modules/browserify/node_modules/resolve/LICENSE +18 -0
  259. data/node_modules/browserify/node_modules/resolve/README.markdown +47 -0
  260. data/node_modules/browserify/node_modules/resolve/index.js +106 -0
  261. data/node_modules/browserify/node_modules/resolve/package.json +45 -0
  262. data/node_modules/browserify/node_modules/resolve/test/core.js +12 -0
  263. data/node_modules/browserify/node_modules/resolve/test/filter.js +15 -0
  264. data/node_modules/browserify/node_modules/resolve/test/mock.js +64 -0
  265. data/node_modules/browserify/node_modules/resolve/test/resolver.js +157 -0
  266. data/node_modules/browserify/node_modules/resolve/test/resolver/bar/node_modules/foo/index.js +1 -0
  267. data/node_modules/browserify/node_modules/resolve/test/resolver/baz/doom.js +0 -0
  268. data/node_modules/browserify/node_modules/resolve/test/resolver/baz/package.json +3 -0
  269. data/node_modules/browserify/node_modules/resolve/test/resolver/baz/quux.js +1 -0
  270. data/node_modules/browserify/node_modules/resolve/test/resolver/biz/node_modules/grux/index.js +1 -0
  271. data/node_modules/browserify/node_modules/resolve/test/resolver/biz/node_modules/tiv/index.js +1 -0
  272. data/node_modules/browserify/node_modules/resolve/test/resolver/cup.coffee +1 -0
  273. data/node_modules/browserify/node_modules/resolve/test/resolver/foo.js +1 -0
  274. data/node_modules/browserify/node_modules/resolve/test/resolver/mug.coffee +0 -0
  275. data/node_modules/browserify/node_modules/resolve/test/resolver/mug.js +0 -0
  276. data/node_modules/browserify/node_modules/resolve/test/resolver/other_path/lib/other-lib.js +0 -0
  277. data/node_modules/browserify/node_modules/resolve/test/resolver/other_path/root.js +0 -0
  278. data/node_modules/browserify/node_modules/syntax-error/.travis.yml +4 -0
  279. data/node_modules/browserify/node_modules/syntax-error/LICENSE +18 -0
  280. data/node_modules/browserify/node_modules/syntax-error/example/check.js +12 -0
  281. data/node_modules/browserify/node_modules/syntax-error/example/src.js +9 -0
  282. data/node_modules/browserify/node_modules/syntax-error/index.js +54 -0
  283. data/node_modules/browserify/node_modules/syntax-error/node_modules/.bin/esparse +42 -0
  284. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/.travis.yml +5 -0
  285. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/LICENSE.BSD +19 -0
  286. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/README.md +74 -0
  287. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/assets/codemirror/codemirror.css +112 -0
  288. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/assets/codemirror/codemirror.js +2972 -0
  289. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/assets/codemirror/javascript.js +360 -0
  290. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/assets/json2.js +487 -0
  291. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/assets/style.css +164 -0
  292. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/assets/yui/treeview-min.js +12 -0
  293. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/assets/yui/treeview-sprite.gif +0 -0
  294. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/assets/yui/treeview.css +7 -0
  295. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/assets/yui/yahoo-dom-event.js +14 -0
  296. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/bin/esparse.js +42 -0
  297. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/changes +92 -0
  298. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/cm +696 -0
  299. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/demo/checkenv.js +42 -0
  300. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/demo/collector.html +82 -0
  301. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/demo/collector.js +170 -0
  302. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/demo/functiontrace.html +106 -0
  303. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/demo/functiontrace.js +123 -0
  304. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/demo/parse.css +82 -0
  305. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/demo/parse.html +352 -0
  306. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/demo/precedence.html +225 -0
  307. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/demo/rewrite.html +120 -0
  308. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/demo/rewrite.js +71 -0
  309. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/esprima.js +3577 -0
  310. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/index.html +103 -0
  311. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/package.json +42 -0
  312. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/3rdparty/Tokenizer.js +646 -0
  313. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/3rdparty/XMLHttpRequest.js +509 -0
  314. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/3rdparty/ZeParser.js +2185 -0
  315. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/3rdparty/backbone-0.5.3.js +1158 -0
  316. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/3rdparty/benchmark.js +3261 -0
  317. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/3rdparty/escodegen.js +906 -0
  318. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/3rdparty/esmorph.js +240 -0
  319. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/3rdparty/ext-core-3.0.0.js +6579 -0
  320. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/3rdparty/ext-core-3.1.0.js +10255 -0
  321. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/3rdparty/jquery-1.6.4.js +9046 -0
  322. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/3rdparty/jquery-1.7.1.js +9266 -0
  323. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/3rdparty/jquery.mobile-1.0.js +6951 -0
  324. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/3rdparty/jsdefs.js +731 -0
  325. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/3rdparty/jslex.js +588 -0
  326. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/3rdparty/jsparse.js +1921 -0
  327. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/3rdparty/mootools-1.3.2.js +5952 -0
  328. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/3rdparty/mootools-1.4.1.js +6297 -0
  329. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/3rdparty/parse-js.js +1342 -0
  330. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/3rdparty/platform.js +878 -0
  331. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/3rdparty/prototype-1.6.1.js +4874 -0
  332. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/3rdparty/prototype-1.7.0.0.js +6082 -0
  333. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/3rdparty/underscore-1.2.3.js +981 -0
  334. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/benchmarks.html +58 -0
  335. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/benchmarks.js +328 -0
  336. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/compare.html +140 -0
  337. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/compare.js +270 -0
  338. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/compat.html +40 -0
  339. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/compat.js +239 -0
  340. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/coverage.footer.html +3 -0
  341. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/coverage.header.html +37 -0
  342. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/coverage.html +3617 -0
  343. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/index.html +36 -0
  344. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/reflect.js +403 -0
  345. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/run.js +66 -0
  346. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/test/test.js +16659 -0
  347. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/tools/generate-unicode-regex.py +164 -0
  348. data/node_modules/browserify/node_modules/syntax-error/node_modules/esprima/tools/update-coverage.sh +28 -0
  349. data/node_modules/browserify/node_modules/syntax-error/package.json +49 -0
  350. data/node_modules/browserify/node_modules/syntax-error/readme.markdown +87 -0
  351. data/node_modules/browserify/node_modules/syntax-error/test/check.js +17 -0
  352. data/node_modules/browserify/node_modules/syntax-error/test/sources/check.js +9 -0
  353. data/node_modules/browserify/node_modules/vm-browserify/README.markdown +103 -0
  354. data/node_modules/browserify/node_modules/vm-browserify/example/run/bundle.js +473 -0
  355. data/node_modules/browserify/node_modules/vm-browserify/example/run/entry.js +6 -0
  356. data/node_modules/browserify/node_modules/vm-browserify/example/run/index.html +9 -0
  357. data/node_modules/browserify/node_modules/vm-browserify/example/run/server.js +6 -0
  358. data/node_modules/browserify/node_modules/vm-browserify/index.js +85 -0
  359. data/node_modules/browserify/node_modules/vm-browserify/package.json +43 -0
  360. data/node_modules/browserify/node_modules/vm-browserify/testling/run.js +22 -0
  361. data/node_modules/browserify/node_modules/vm-browserify/testling/test.sh +11 -0
  362. data/node_modules/browserify/package.json +78 -0
  363. data/node_modules/browserify/test/alias.js +58 -0
  364. data/node_modules/browserify/test/backbone.js +21 -0
  365. data/node_modules/browserify/test/bin.js +39 -0
  366. data/node_modules/browserify/test/buffer.js +99 -0
  367. data/node_modules/browserify/test/bundle.js +32 -0
  368. data/node_modules/browserify/test/cache.js +28 -0
  369. data/node_modules/browserify/test/coffee.js +39 -0
  370. data/node_modules/browserify/test/coffee/bar.js +1 -0
  371. data/node_modules/browserify/test/coffee/baz.coffee +1 -0
  372. data/node_modules/browserify/test/coffee/entry.coffee +1 -0
  373. data/node_modules/browserify/test/coffee/foo.coffee +1 -0
  374. data/node_modules/browserify/test/coffee/index.coffee +5 -0
  375. data/node_modules/browserify/test/coffee/nested/nested.coffee +2 -0
  376. data/node_modules/browserify/test/comment.js +17 -0
  377. data/node_modules/browserify/test/comment/main.js +2 -0
  378. data/node_modules/browserify/test/crypto.js +37 -0
  379. data/node_modules/browserify/test/dnode.js +27 -0
  380. data/node_modules/browserify/test/dollar.js +19 -0
  381. data/node_modules/browserify/test/dollar/dollar/index.js +7 -0
  382. data/node_modules/browserify/test/entry.js +36 -0
  383. data/node_modules/browserify/test/entry/main.js +1 -0
  384. data/node_modules/browserify/test/entry/one.js +1 -0
  385. data/node_modules/browserify/test/entry/two.js +1 -0
  386. data/node_modules/browserify/test/error_code.js +24 -0
  387. data/node_modules/browserify/test/error_code/src.js +2 -0
  388. data/node_modules/browserify/test/export.js +52 -0
  389. data/node_modules/browserify/test/export/entry.js +1 -0
  390. data/node_modules/browserify/test/field.js +64 -0
  391. data/node_modules/browserify/test/field/miss.js +1 -0
  392. data/node_modules/browserify/test/field/node_modules/z-miss/browser.js +1 -0
  393. data/node_modules/browserify/test/field/node_modules/z-miss/main.js +1 -0
  394. data/node_modules/browserify/test/field/node_modules/z-miss/package.json +4 -0
  395. data/node_modules/browserify/test/field/node_modules/z-object/browser.js +1 -0
  396. data/node_modules/browserify/test/field/node_modules/z-object/main.js +1 -0
  397. data/node_modules/browserify/test/field/node_modules/z-object/package.json +6 -0
  398. data/node_modules/browserify/test/field/node_modules/z-string/browser.js +1 -0
  399. data/node_modules/browserify/test/field/node_modules/z-string/main.js +1 -0
  400. data/node_modules/browserify/test/field/node_modules/z-string/package.json +4 -0
  401. data/node_modules/browserify/test/field/node_modules/z-sub/browser/a.js +1 -0
  402. data/node_modules/browserify/test/field/node_modules/z-sub/browser/b.js +1 -0
  403. data/node_modules/browserify/test/field/node_modules/z-sub/main.js +1 -0
  404. data/node_modules/browserify/test/field/node_modules/z-sub/package.json +4 -0
  405. data/node_modules/browserify/test/field/object.js +1 -0
  406. data/node_modules/browserify/test/field/string.js +1 -0
  407. data/node_modules/browserify/test/field/sub.js +1 -0
  408. data/node_modules/browserify/test/global.js +19 -0
  409. data/node_modules/browserify/test/global/main.js +2 -0
  410. data/node_modules/browserify/test/jade.js +35 -0
  411. data/node_modules/browserify/test/json.js +17 -0
  412. data/node_modules/browserify/test/json/beep.json +4 -0
  413. data/node_modules/browserify/test/json/main.js +1 -0
  414. data/node_modules/browserify/test/maxlisteners.js +8 -0
  415. data/node_modules/browserify/test/module.js +22 -0
  416. data/node_modules/browserify/test/multi_entry.js +20 -0
  417. data/node_modules/browserify/test/multi_entry/a.js +2 -0
  418. data/node_modules/browserify/test/multi_entry/b.js +2 -0
  419. data/node_modules/browserify/test/multi_entry/c.js +3 -0
  420. data/node_modules/browserify/test/multi_ignore.js +23 -0
  421. data/node_modules/browserify/test/node_modules/beep/index.js +1 -0
  422. data/node_modules/browserify/test/require_cache.js +18 -0
  423. data/node_modules/browserify/test/retarget.js +27 -0
  424. data/node_modules/browserify/test/seq.js +47 -0
  425. data/node_modules/browserify/test/subdep.js +26 -0
  426. data/node_modules/browserify/test/subdep/index.js +1 -0
  427. data/node_modules/browserify/test/subdep/package.json +6 -0
  428. data/node_modules/browserify/test/util.js +48 -0
  429. data/node_modules/browserify/test/watch.js +91 -0
  430. data/node_modules/browserify/test/watch/a.js +1 -0
  431. data/node_modules/browserify/test/wrap.js +43 -0
  432. data/node_modules/browserify/test/wrap/a.js +2 -0
  433. data/node_modules/browserify/test/wrap/c.js +1 -0
  434. data/node_modules/browserify/test/wrap/node_modules/b/main.js +1 -0
  435. data/node_modules/browserify/test/wrap/node_modules/b/package.json +3 -0
  436. data/node_modules/browserify/test/wrap/node_modules/skipmetoo/index.js +1 -0
  437. data/node_modules/browserify/test/wrap/skipme.js +1 -0
  438. data/node_modules/browserify/test/wrap/x.js +0 -0
  439. data/node_modules/browserify/testling/README.markdown +29 -0
  440. data/node_modules/browserify/testling/test.sh +37 -0
  441. data/node_modules/browserify/testling/tick.js +9 -0
  442. data/node_modules/browserify/testling/timers.js +50 -0
  443. data/node_modules/browserify/testling/util.js +24 -0
  444. data/node_modules/browserify/v2.markdown +41 -0
  445. data/node_modules/browserify/wrappers/alias.js +1 -0
  446. data/node_modules/browserify/wrappers/body.js +2 -0
  447. data/node_modules/browserify/wrappers/body_debug.js +2 -0
  448. data/node_modules/browserify/wrappers/entry.js +3 -0
  449. data/node_modules/browserify/wrappers/entry_debug.js +3 -0
  450. data/node_modules/browserify/wrappers/package.js +3 -0
  451. data/node_modules/browserify/wrappers/prelude.js +196 -0
  452. data/node_modules/coffee-script/.npmignore +11 -0
  453. data/node_modules/coffee-script/CNAME +1 -0
  454. data/node_modules/coffee-script/CONTRIBUTING.md +9 -0
  455. data/node_modules/coffee-script/LICENSE +22 -0
  456. data/node_modules/coffee-script/README +51 -0
  457. data/node_modules/coffee-script/Rakefile +78 -0
  458. data/node_modules/coffee-script/bin/cake +7 -0
  459. data/node_modules/coffee-script/bin/coffee +7 -0
  460. data/node_modules/coffee-script/extras/jsl.conf +44 -0
  461. data/node_modules/coffee-script/lib/coffee-script/browser.js +92 -0
  462. data/node_modules/coffee-script/lib/coffee-script/cake.js +113 -0
  463. data/node_modules/coffee-script/lib/coffee-script/coffee-script.js +171 -0
  464. data/node_modules/coffee-script/lib/coffee-script/command.js +502 -0
  465. data/node_modules/coffee-script/lib/coffee-script/grammar.js +606 -0
  466. data/node_modules/coffee-script/lib/coffee-script/helpers.js +88 -0
  467. data/node_modules/coffee-script/lib/coffee-script/index.js +11 -0
  468. data/node_modules/coffee-script/lib/coffee-script/lexer.js +788 -0
  469. data/node_modules/coffee-script/lib/coffee-script/nodes.js +2971 -0
  470. data/node_modules/coffee-script/lib/coffee-script/optparse.js +138 -0
  471. data/node_modules/coffee-script/lib/coffee-script/parser.js +683 -0
  472. data/node_modules/coffee-script/lib/coffee-script/repl.js +276 -0
  473. data/node_modules/coffee-script/lib/coffee-script/rewriter.js +349 -0
  474. data/node_modules/coffee-script/lib/coffee-script/scope.js +146 -0
  475. data/node_modules/coffee-script/package.json +50 -0
  476. data/node_modules/jade-runtime/.npmignore +15 -0
  477. data/node_modules/jade-runtime/README.md +8 -0
  478. data/node_modules/jade-runtime/globals.js +32 -0
  479. data/node_modules/jade-runtime/index.js +2 -0
  480. data/node_modules/jade-runtime/jade-runtime.js +181 -0
  481. data/node_modules/jade-runtime/package.json +18 -0
  482. data/node_modules/jade/.npmignore +14 -0
  483. data/node_modules/jade/LICENSE +22 -0
  484. data/node_modules/jade/Readme.md +1299 -0
  485. data/node_modules/jade/bin/jade +168 -0
  486. data/node_modules/jade/index.js +4 -0
  487. data/node_modules/jade/jade.js +3586 -0
  488. data/node_modules/jade/jade.md +510 -0
  489. data/node_modules/jade/jade.min.js +2 -0
  490. data/node_modules/jade/lib/compiler.js +654 -0
  491. data/node_modules/jade/lib/doctypes.js +18 -0
  492. data/node_modules/jade/lib/filters.js +97 -0
  493. data/node_modules/jade/lib/inline-tags.js +28 -0
  494. data/node_modules/jade/lib/jade.js +253 -0
  495. data/node_modules/jade/lib/lexer.js +774 -0
  496. data/node_modules/jade/lib/nodes/attrs.js +77 -0
  497. data/node_modules/jade/lib/nodes/block-comment.js +33 -0
  498. data/node_modules/jade/lib/nodes/block.js +122 -0
  499. data/node_modules/jade/lib/nodes/case.js +43 -0
  500. data/node_modules/jade/lib/nodes/code.js +35 -0
  501. data/node_modules/jade/lib/nodes/comment.js +32 -0
  502. data/node_modules/jade/lib/nodes/doctype.js +29 -0
  503. data/node_modules/jade/lib/nodes/each.js +35 -0
  504. data/node_modules/jade/lib/nodes/filter.js +35 -0
  505. data/node_modules/jade/lib/nodes/index.js +20 -0
  506. data/node_modules/jade/lib/nodes/literal.js +32 -0
  507. data/node_modules/jade/lib/nodes/mixin.js +36 -0
  508. data/node_modules/jade/lib/nodes/node.js +25 -0
  509. data/node_modules/jade/lib/nodes/tag.js +95 -0
  510. data/node_modules/jade/lib/nodes/text.js +36 -0
  511. data/node_modules/jade/lib/parser.js +714 -0
  512. data/node_modules/jade/lib/runtime.js +174 -0
  513. data/node_modules/jade/lib/self-closing.js +19 -0
  514. data/node_modules/jade/lib/utils.js +49 -0
  515. data/node_modules/jade/node_modules/commander/.npmignore +4 -0
  516. data/node_modules/jade/node_modules/commander/.travis.yml +4 -0
  517. data/node_modules/jade/node_modules/commander/History.md +107 -0
  518. data/node_modules/jade/node_modules/commander/Makefile +7 -0
  519. data/node_modules/jade/node_modules/commander/Readme.md +262 -0
  520. data/node_modules/jade/node_modules/commander/index.js +2 -0
  521. data/node_modules/jade/node_modules/commander/lib/commander.js +1026 -0
  522. data/node_modules/jade/node_modules/commander/package.json +39 -0
  523. data/node_modules/jade/node_modules/mkdirp/.npmignore +2 -0
  524. data/node_modules/jade/node_modules/mkdirp/.travis.yml +4 -0
  525. data/node_modules/jade/node_modules/mkdirp/LICENSE +21 -0
  526. data/node_modules/jade/node_modules/mkdirp/README.markdown +61 -0
  527. data/node_modules/jade/node_modules/mkdirp/examples/pow.js +6 -0
  528. data/node_modules/jade/node_modules/mkdirp/index.js +82 -0
  529. data/node_modules/jade/node_modules/mkdirp/package.json +37 -0
  530. data/node_modules/jade/node_modules/mkdirp/test/chmod.js +38 -0
  531. data/node_modules/jade/node_modules/mkdirp/test/clobber.js +37 -0
  532. data/node_modules/jade/node_modules/mkdirp/test/mkdirp.js +28 -0
  533. data/node_modules/jade/node_modules/mkdirp/test/perm.js +32 -0
  534. data/node_modules/jade/node_modules/mkdirp/test/perm_sync.js +39 -0
  535. data/node_modules/jade/node_modules/mkdirp/test/race.js +41 -0
  536. data/node_modules/jade/node_modules/mkdirp/test/rel.js +32 -0
  537. data/node_modules/jade/node_modules/mkdirp/test/return.js +25 -0
  538. data/node_modules/jade/node_modules/mkdirp/test/return_sync.js +24 -0
  539. data/node_modules/jade/node_modules/mkdirp/test/root.js +18 -0
  540. data/node_modules/jade/node_modules/mkdirp/test/sync.js +32 -0
  541. data/node_modules/jade/node_modules/mkdirp/test/umask.js +28 -0
  542. data/node_modules/jade/node_modules/mkdirp/test/umask_sync.js +32 -0
  543. data/node_modules/jade/package.json +53 -0
  544. data/node_modules/jade/runtime.js +179 -0
  545. data/node_modules/jade/runtime.min.js +1 -0
  546. data/node_modules/jade/test.jade +7 -0
  547. data/node_modules/jade/testing/head.jade +5 -0
  548. data/node_modules/jade/testing/index.jade +1 -0
  549. data/node_modules/jade/testing/index.js +14 -0
  550. data/node_modules/jade/testing/layout.jade +10 -0
  551. data/node_modules/jade/testing/user.jade +7 -0
  552. data/node_modules/jade/testing/user.js +27 -0
  553. data/node_modules/optimist/.travis.yml +4 -0
  554. data/node_modules/optimist/LICENSE +21 -0
  555. data/node_modules/optimist/README.markdown +487 -0
  556. data/node_modules/optimist/example/bool.js +10 -0
  557. data/node_modules/optimist/example/boolean_double.js +7 -0
  558. data/node_modules/optimist/example/boolean_single.js +7 -0
  559. data/node_modules/optimist/example/default_hash.js +8 -0
  560. data/node_modules/optimist/example/default_singles.js +7 -0
  561. data/node_modules/optimist/example/divide.js +8 -0
  562. data/node_modules/optimist/example/line_count.js +20 -0
  563. data/node_modules/optimist/example/line_count_options.js +29 -0
  564. data/node_modules/optimist/example/line_count_wrap.js +29 -0
  565. data/node_modules/optimist/example/nonopt.js +4 -0
  566. data/node_modules/optimist/example/reflect.js +2 -0
  567. data/node_modules/optimist/example/short.js +3 -0
  568. data/node_modules/optimist/example/string.js +11 -0
  569. data/node_modules/optimist/example/usage-options.js +19 -0
  570. data/node_modules/optimist/example/xup.js +10 -0
  571. data/node_modules/optimist/index.js +475 -0
  572. data/node_modules/optimist/node_modules/wordwrap/.npmignore +1 -0
  573. data/node_modules/optimist/node_modules/wordwrap/README.markdown +70 -0
  574. data/node_modules/optimist/node_modules/wordwrap/example/center.js +10 -0
  575. data/node_modules/optimist/node_modules/wordwrap/example/meat.js +3 -0
  576. data/node_modules/optimist/node_modules/wordwrap/index.js +76 -0
  577. data/node_modules/optimist/node_modules/wordwrap/package.json +45 -0
  578. data/node_modules/optimist/node_modules/wordwrap/test/break.js +30 -0
  579. data/node_modules/optimist/node_modules/wordwrap/test/idleness.txt +63 -0
  580. data/node_modules/optimist/node_modules/wordwrap/test/wrap.js +31 -0
  581. data/node_modules/optimist/package.json +55 -0
  582. data/node_modules/optimist/test/_.js +71 -0
  583. data/node_modules/optimist/test/_/argv.js +2 -0
  584. data/node_modules/optimist/test/_/bin.js +3 -0
  585. data/node_modules/optimist/test/parse.js +420 -0
  586. data/node_modules/optimist/test/usage.js +292 -0
  587. data/snowball.gemspec +1 -2
  588. metadata +601 -21
  589. data/extconf.rb +0 -9
@@ -0,0 +1,878 @@
1
+ /*!
2
+ * Platform.js v1.0.0-pre <http://mths.be/platform>
3
+ * Copyright 2010-2012 John-David Dalton <http://allyoucanleet.com/>
4
+ * Available under MIT license <http://mths.be/mit>
5
+ */
6
+ ;(function(window) {
7
+
8
+ /** Backup possible window/global object */
9
+ var oldWin = window;
10
+
11
+ /** Detect free variable `exports` */
12
+ var freeExports = typeof exports == 'object' && exports;
13
+
14
+ /** Detect free variable `global` */
15
+ var freeGlobal = typeof global == 'object' && global &&
16
+ (global == global.global ? (window = global) : global);
17
+
18
+ /** Opera regexp */
19
+ var reOpera = /Opera/;
20
+
21
+ /** Used to resolve a value's internal [[Class]] */
22
+ var toString = {}.toString;
23
+
24
+ /** Detect Java environment */
25
+ var java = /Java/.test(getClassOf(window.java)) && window.java;
26
+
27
+ /** A character to represent alpha */
28
+ var alpha = java ? 'a' : '\u03b1';
29
+
30
+ /** A character to represent beta */
31
+ var beta = java ? 'b' : '\u03b2';
32
+
33
+ /** Browser document object */
34
+ var doc = window.document || {};
35
+
36
+ /** Used to check for own properties of an object */
37
+ var hasOwnProperty = {}.hasOwnProperty;
38
+
39
+ /** Browser navigator object */
40
+ var nav = window.navigator || {};
41
+
42
+ /**
43
+ * Detect Opera browser
44
+ * http://www.howtocreate.co.uk/operaStuff/operaObject.html
45
+ * http://dev.opera.com/articles/view/opera-mini-web-content-authoring-guidelines/#operamini
46
+ */
47
+ var opera = window.operamini || window.opera;
48
+
49
+ /** Opera [[Class]] */
50
+ var operaClass = reOpera.test(operaClass = getClassOf(opera)) ? operaClass : (opera = null);
51
+
52
+ /** Possible global object */
53
+ var thisBinding = this;
54
+
55
+ /** Browser user agent string */
56
+ var userAgent = nav.userAgent || '';
57
+
58
+ /*--------------------------------------------------------------------------*/
59
+
60
+ /**
61
+ * Capitalizes a string value.
62
+ * @private
63
+ * @param {String} string The string to capitalize.
64
+ * @returns {String} The capitalized string.
65
+ */
66
+ function capitalize(string) {
67
+ string = String(string);
68
+ return string.charAt(0).toUpperCase() + string.slice(1);
69
+ }
70
+
71
+ /**
72
+ * An iteration utility for arrays and objects.
73
+ * @private
74
+ * @param {Array|Object} object The object to iterate over.
75
+ * @param {Function} callback The function called per iteration.
76
+ */
77
+ function each(object, callback) {
78
+ var index = -1,
79
+ length = object.length;
80
+
81
+ if (length == length >>> 0) {
82
+ while (++index < length) {
83
+ callback(object[index], index, object);
84
+ }
85
+ } else {
86
+ forOwn(object, callback);
87
+ }
88
+ }
89
+
90
+ /**
91
+ * Iterates over an object's own properties, executing the `callback` for each.
92
+ * @private
93
+ * @param {Object} object The object to iterate over.
94
+ * @param {Function} callback The function executed per own property.
95
+ */
96
+ function forOwn(object, callback) {
97
+ for (var key in object) {
98
+ hasKey(object, key) && callback(object[key], key, object);
99
+ }
100
+ }
101
+
102
+ /**
103
+ * Trim and conditionally capitalize string values.
104
+ * @private
105
+ * @param {String} string The string to format.
106
+ * @returns {String} The formatted string.
107
+ */
108
+ function format(string) {
109
+ string = trim(string);
110
+ return /^(?:webOS|i(?:OS|P))/.test(string)
111
+ ? string
112
+ : capitalize(string);
113
+ }
114
+
115
+ /**
116
+ * Gets the internal [[Class]] of a value.
117
+ * @private
118
+ * @param {Mixed} value The value.
119
+ * @returns {String} The [[Class]].
120
+ */
121
+ function getClassOf(value) {
122
+ return value == null
123
+ ? capitalize(value)
124
+ : toString.call(value).slice(8, -1);
125
+ }
126
+
127
+ /**
128
+ * Checks if an object has the specified key as a direct property.
129
+ * @private
130
+ * @param {Object} object The object to check.
131
+ * @param {String} key The key to check for.
132
+ * @returns {Boolean} Returns `true` if key is a direct property, else `false`.
133
+ */
134
+ function hasKey() {
135
+ // lazy define for others (not as accurate)
136
+ hasKey = function(object, key) {
137
+ var parent = object != null && (object.constructor || Object).prototype;
138
+ return !!parent && key in Object(object) && !(key in parent && object[key] === parent[key]);
139
+ };
140
+ // for modern browsers
141
+ if (getClassOf(hasOwnProperty) == 'Function') {
142
+ hasKey = function(object, key) {
143
+ return object != null && hasOwnProperty.call(object, key);
144
+ };
145
+ }
146
+ // for Safari 2
147
+ else if ({}.__proto__ == Object.prototype) {
148
+ hasKey = function(object, key) {
149
+ var result = false;
150
+ if (object != null) {
151
+ object = Object(object);
152
+ object.__proto__ = [object.__proto__, object.__proto__ = null, result = key in object][0];
153
+ }
154
+ return result;
155
+ };
156
+ }
157
+ return hasKey.apply(this, arguments);
158
+ }
159
+
160
+ /**
161
+ * Host objects can return type values that are different from their actual
162
+ * data type. The objects we are concerned with usually return non-primitive
163
+ * types of object, function, or unknown.
164
+ * @private
165
+ * @param {Mixed} object The owner of the property.
166
+ * @param {String} property The property to check.
167
+ * @returns {Boolean} Returns `true` if the property value is a non-primitive, else `false`.
168
+ */
169
+ function isHostType(object, property) {
170
+ var type = object != null ? typeof object[property] : 'number';
171
+ return !/^(?:boolean|number|string|undefined)$/.test(type) &&
172
+ (type == 'object' ? !!object[property] : true);
173
+ }
174
+
175
+ /**
176
+ * Prepares a string for use in a RegExp constructor by making hyphens and spaces optional.
177
+ * @private
178
+ * @param {String} string The string to qualify.
179
+ * @returns {String} The qualified string.
180
+ */
181
+ function qualify(string) {
182
+ return String(string).replace(/([ -])(?!$)/g, '$1?');
183
+ }
184
+
185
+ /**
186
+ * A bare-bones` Array#reduce` like utility function.
187
+ * @private
188
+ * @param {Array} array The array to iterate over.
189
+ * @param {Function} callback The function called per iteration.
190
+ * @param {Mixed} accumulator Initial value of the accumulator.
191
+ * @returns {Mixed} The accumulator.
192
+ */
193
+ function reduce(array, callback) {
194
+ var accumulator = null;
195
+ each(array, function(value, index) {
196
+ accumulator = callback(accumulator, value, index, array);
197
+ });
198
+ return accumulator;
199
+ }
200
+
201
+ /**
202
+ * Removes leading and trailing whitespace from a string.
203
+ * @private
204
+ * @param {String} string The string to trim.
205
+ * @returns {String} The trimmed string.
206
+ */
207
+ function trim(string) {
208
+ return String(string).replace(/^ +| +$/g, '');
209
+ }
210
+
211
+ /*--------------------------------------------------------------------------*/
212
+
213
+ /**
214
+ * Creates a new platform object.
215
+ * @memberOf platform
216
+ * @param {String} [ua = navigator.userAgent] The user agent string.
217
+ * @returns {Object} A platform object.
218
+ */
219
+ function parse(ua) {
220
+
221
+ ua || (ua = userAgent);
222
+
223
+ /** Temporary variable used over the script's lifetime */
224
+ var data;
225
+
226
+ /** The CPU architecture */
227
+ var arch = ua;
228
+
229
+ /** Platform description array */
230
+ var description = [];
231
+
232
+ /** Platform alpha/beta indicator */
233
+ var prerelease = null;
234
+
235
+ /** A flag to indicate that environment features should be used to resolve the platform */
236
+ var useFeatures = ua == userAgent;
237
+
238
+ /** The browser/environment version */
239
+ var version = useFeatures && opera && typeof opera.version == 'function' && opera.version();
240
+
241
+ /* Detectable layout engines (order is important) */
242
+ var layout = getLayout([
243
+ { 'label': 'WebKit', 'pattern': 'AppleWebKit' },
244
+ 'iCab',
245
+ 'Presto',
246
+ 'NetFront',
247
+ 'Tasman',
248
+ 'Trident',
249
+ 'KHTML',
250
+ 'Gecko'
251
+ ]);
252
+
253
+ /* Detectable browser names (order is important) */
254
+ var name = getName([
255
+ 'Adobe AIR',
256
+ 'Arora',
257
+ 'Avant Browser',
258
+ 'Camino',
259
+ 'Epiphany',
260
+ 'Fennec',
261
+ 'Flock',
262
+ 'Galeon',
263
+ 'GreenBrowser',
264
+ 'iCab',
265
+ 'Iceweasel',
266
+ 'Iron',
267
+ 'K-Meleon',
268
+ 'Konqueror',
269
+ 'Lunascape',
270
+ 'Maxthon',
271
+ 'Midori',
272
+ 'Nook Browser',
273
+ 'PhantomJS',
274
+ 'Raven',
275
+ 'Rekonq',
276
+ 'RockMelt',
277
+ 'SeaMonkey',
278
+ { 'label': 'Silk', 'pattern': '(?:Cloud9|Silk)' },
279
+ 'Sleipnir',
280
+ 'SlimBrowser',
281
+ 'Sunrise',
282
+ 'Swiftfox',
283
+ 'WebPositive',
284
+ 'Opera Mini',
285
+ 'Opera',
286
+ 'Chrome',
287
+ { 'label': 'Firefox', 'pattern': '(?:Firefox|Minefield)' },
288
+ { 'label': 'IE', 'pattern': 'MSIE' },
289
+ 'Safari'
290
+ ]);
291
+
292
+ /* Detectable products (order is important) */
293
+ var product = getProduct([
294
+ 'BlackBerry',
295
+ { 'label': 'Galaxy S', 'pattern': 'GT-I9000' },
296
+ { 'label': 'Galaxy S2', 'pattern': 'GT-I9100' },
297
+ 'iPad',
298
+ 'iPod',
299
+ 'iPhone',
300
+ 'Kindle',
301
+ { 'label': 'Kindle Fire', 'pattern': '(?:Cloud9|Silk)' },
302
+ 'Nook',
303
+ 'PlayBook',
304
+ 'TouchPad',
305
+ 'Transformer',
306
+ 'Xoom'
307
+ ]);
308
+
309
+ /* Detectable manufacturers */
310
+ var manufacturer = getManufacturer({
311
+ 'Apple': { 'iPad': 1, 'iPhone': 1, 'iPod': 1 },
312
+ 'Amazon': { 'Kindle': 1, 'Kindle Fire': 1 },
313
+ 'Asus': { 'Transformer': 1 },
314
+ 'Barnes & Noble': { 'Nook': 1 },
315
+ 'BlackBerry': { 'PlayBook': 1 },
316
+ 'HP': { 'TouchPad': 1 },
317
+ 'LG': { },
318
+ 'Motorola': { 'Xoom': 1 },
319
+ 'Nokia': { },
320
+ 'Samsung': { 'Galaxy S': 1, 'Galaxy S2': 1 }
321
+ });
322
+
323
+ /* Detectable OSes (order is important) */
324
+ var os = getOS([
325
+ 'Android',
326
+ 'CentOS',
327
+ 'Debian',
328
+ 'Fedora',
329
+ 'FreeBSD',
330
+ 'Gentoo',
331
+ 'Haiku',
332
+ 'Kubuntu',
333
+ 'Linux Mint',
334
+ 'Red Hat',
335
+ 'SuSE',
336
+ 'Ubuntu',
337
+ 'Xubuntu',
338
+ 'Cygwin',
339
+ 'Symbian OS',
340
+ 'hpwOS',
341
+ 'webOS ',
342
+ 'webOS',
343
+ 'Tablet OS',
344
+ 'Linux',
345
+ 'Mac OS X',
346
+ 'Macintosh',
347
+ 'Mac',
348
+ 'Windows 98;',
349
+ 'Windows '
350
+ ]);
351
+
352
+ /*------------------------------------------------------------------------*/
353
+
354
+ /**
355
+ * Picks the layout engine from an array of guesses.
356
+ * @private
357
+ * @param {Array} guesses An array of guesses.
358
+ * @returns {String|Null} The detected layout engine.
359
+ */
360
+ function getLayout(guesses) {
361
+ return reduce(guesses, function(result, guess) {
362
+ return result || RegExp('\\b' + (
363
+ guess.pattern || qualify(guess)
364
+ ) + '\\b', 'i').exec(ua) && (guess.label || guess);
365
+ });
366
+ }
367
+
368
+ /**
369
+ * Picks the manufacturer from an array of guesses.
370
+ * @private
371
+ * @param {Array} guesses An array of guesses.
372
+ * @returns {String|Null} The detected manufacturer.
373
+ */
374
+ function getManufacturer(guesses) {
375
+ return reduce(guesses, function(result, value, key) {
376
+ // lookup the manufacturer by product or scan the UA for the manufacturer
377
+ return result || (
378
+ value[product] ||
379
+ value[0/*Opera 9.25 fix*/, /^[a-z]+/i.exec(product)] ||
380
+ RegExp('\\b' + (key.pattern || qualify(key)) + '(?:\\b|\\w*\\d)', 'i').exec(ua)
381
+ ) && (key.label || key);
382
+ });
383
+ }
384
+
385
+ /**
386
+ * Picks the browser name from an array of guesses.
387
+ * @private
388
+ * @param {Array} guesses An array of guesses.
389
+ * @returns {String|Null} The detected browser name.
390
+ */
391
+ function getName(guesses) {
392
+ return reduce(guesses, function(result, guess) {
393
+ return result || RegExp('\\b' + (
394
+ guess.pattern || qualify(guess)
395
+ ) + '\\b', 'i').exec(ua) && (guess.label || guess);
396
+ });
397
+ }
398
+
399
+ /**
400
+ * Picks the OS name from an array of guesses.
401
+ * @private
402
+ * @param {Array} guesses An array of guesses.
403
+ * @returns {String|Null} The detected OS name.
404
+ */
405
+ function getOS(guesses) {
406
+ return reduce(guesses, function(result, guess) {
407
+ var pattern = guess.pattern || qualify(guess);
408
+ if (!result && (result =
409
+ RegExp('\\b' + pattern + '(?:/[\\d.]+|[ \\w.]*)', 'i').exec(ua))) {
410
+ // platform tokens defined at
411
+ // http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx
412
+ // http://web.archive.org/web/20081122053950/http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx
413
+ data = {
414
+ '6.2': '8',
415
+ '6.1': 'Server 2008 R2 / 7',
416
+ '6.0': 'Server 2008 / Vista',
417
+ '5.2': 'Server 2003 / XP 64-bit',
418
+ '5.1': 'XP',
419
+ '5.01': '2000 SP1',
420
+ '5.0': '2000',
421
+ '4.0': 'NT',
422
+ '4.90': 'ME'
423
+ };
424
+ // detect Windows version from platform tokens
425
+ if (/^Win/i.test(result) &&
426
+ (data = data[0/*Opera 9.25 fix*/, /[\d.]+$/.exec(result)])) {
427
+ result = 'Windows ' + data;
428
+ }
429
+ // correct character case and cleanup
430
+ result = format(String(result)
431
+ .replace(RegExp(pattern, 'i'), guess.label || guess)
432
+ .replace(/ ce$/i, ' CE')
433
+ .replace(/hpw/i, 'web')
434
+ .replace(/Macintosh/, 'Mac OS')
435
+ .replace(/_PowerPC/i, ' OS')
436
+ .replace(/(OS X) [^ \d]+/i, '$1')
437
+ .replace(/\/(\d)/, ' $1')
438
+ .replace(/_/g, '.')
439
+ .replace(/(?: BePC|[ .]*fc[ \d.]+)$/i, '')
440
+ .replace(/x86\.64/gi, 'x86_64')
441
+ .split(' on ')[0]);
442
+ }
443
+ return result;
444
+ });
445
+ }
446
+
447
+ /**
448
+ * Picks the product name from an array of guesses.
449
+ * @private
450
+ * @param {Array} guesses An array of guesses.
451
+ * @returns {String|Null} The detected product name.
452
+ */
453
+ function getProduct(guesses) {
454
+ return reduce(guesses, function(result, guess) {
455
+ var pattern = guess.pattern || qualify(guess);
456
+ if (!result && (result =
457
+ RegExp('\\b' + pattern + ' *\\d+[.\\w_]*', 'i').exec(ua) ||
458
+ RegExp('\\b' + pattern + '(?:; *(?:[a-z]+[_-])?[a-z]+\\d+|[^ ();-]*)', 'i').exec(ua)
459
+ )) {
460
+ // split by forward slash and append product version if needed
461
+ if ((result = String(guess.label || result).split('/'))[1] && !/[\d.]+/.test(result[0])) {
462
+ result[0] += ' ' + result[1];
463
+ }
464
+ // correct character case and cleanup
465
+ guess = guess.label || guess;
466
+ result = format(result[0]
467
+ .replace(RegExp(pattern, 'i'), guess)
468
+ .replace(RegExp('; *(?:' + guess + '[_-])?', 'i'), ' ')
469
+ .replace(RegExp('(' + guess + ')(\\w)', 'i'), '$1 $2'));
470
+ }
471
+ return result;
472
+ });
473
+ }
474
+
475
+ /**
476
+ * Resolves the version using an array of UA patterns.
477
+ * @private
478
+ * @param {Array} patterns An array of UA patterns.
479
+ * @returns {String|Null} The detected version.
480
+ */
481
+ function getVersion(patterns) {
482
+ return reduce(patterns, function(result, pattern) {
483
+ return result || (RegExp(pattern +
484
+ '(?:-[\\d.]+/|(?: for [\\w-]+)?[ /-])([\\d.]+[^ ();/-]*)', 'i').exec(ua) || 0)[1] || null;
485
+ });
486
+ }
487
+
488
+ /*------------------------------------------------------------------------*/
489
+
490
+ /**
491
+ * Return platform description when the platform object is coerced to a string.
492
+ * @name toString
493
+ * @memberOf platform
494
+ * @type Function
495
+ * @returns {String} The platform description.
496
+ */
497
+ function toStringPlatform() {
498
+ return this.description || '';
499
+ }
500
+
501
+ /*------------------------------------------------------------------------*/
502
+
503
+ // convert layout to an array so we can add extra details
504
+ layout && (layout = [layout]);
505
+
506
+ // detect product names that contain their manufacturer's name
507
+ if (manufacturer && !product) {
508
+ product = getProduct([manufacturer]);
509
+ }
510
+ // detect simulators
511
+ if (/\bSimulator\b/i.test(ua)) {
512
+ product = (product ? product + ' ' : '') + 'Simulator';
513
+ }
514
+ // detect iOS
515
+ if (/^iP/.test(product)) {
516
+ name || (name = 'Safari');
517
+ os = 'iOS' + ((data = / OS ([\d_]+)/i.exec(ua))
518
+ ? ' ' + data[1].replace(/_/g, '.')
519
+ : '');
520
+ }
521
+ // detect Kubuntu
522
+ else if (name == 'Konqueror' && !/buntu/i.test(os)) {
523
+ os = 'Kubuntu';
524
+ }
525
+ // detect Android browsers
526
+ else if (name == 'Chrome' && manufacturer) {
527
+ name = 'Android Browser';
528
+ os = /Android/.test(os) ? os : 'Android';
529
+ }
530
+ // detect false positives for Firefox/Safari
531
+ else if (!name || (data = !/\bMinefield\b/i.test(ua) && /Firefox|Safari/.exec(name))) {
532
+ // escape the `/` for Firefox 1
533
+ if (name && !product && /[\/,]|^[^(]+?\)/.test(ua.slice(ua.indexOf(data + '/') + 8))) {
534
+ // clear name of false positives
535
+ name = null;
536
+ }
537
+ // reassign a generic name
538
+ if ((data = product || manufacturer || os) &&
539
+ (product || manufacturer || /Android|Symbian OS|Tablet OS|webOS/.test(os))) {
540
+ name = /[a-z]+(?: Hat)?/i.exec(/Android/.test(os) ? os : data) + ' Browser';
541
+ }
542
+ }
543
+ // detect non-Opera versions (order is important)
544
+ if (!version) {
545
+ version = getVersion([
546
+ '(?:Cloud9|Opera ?Mini|Raven|Silk)',
547
+ 'Version',
548
+ qualify(name),
549
+ '(?:Firefox|Minefield|NetFront)'
550
+ ]);
551
+ }
552
+ // detect stubborn layout engines
553
+ if (layout == 'iCab' && parseFloat(version) > 3) {
554
+ layout = ['WebKit'];
555
+ } else if (name == 'Konqueror' && /\bKHTML\b/i.test(ua)) {
556
+ layout = ['KHTML'];
557
+ } else if (data =
558
+ /Opera/.test(name) && 'Presto' ||
559
+ /\b(?:Midori|Nook|Safari)\b/i.test(ua) && 'WebKit' ||
560
+ !layout && /\bMSIE\b/i.test(ua) && (/^Mac/.test(os) ? 'Tasman' : 'Trident')) {
561
+ layout = [data];
562
+ }
563
+ // leverage environment features
564
+ if (useFeatures) {
565
+ // detect server-side environments
566
+ // Rhino has a global function while others have a global object
567
+ if (isHostType(thisBinding, 'global')) {
568
+ if (java) {
569
+ data = java.lang.System;
570
+ arch = data.getProperty('os.arch');
571
+ os = os || data.getProperty('os.name') + ' ' + data.getProperty('os.version');
572
+ }
573
+ if (typeof exports == 'object' && exports) {
574
+ // if `thisBinding` is the [ModuleScope]
575
+ if (thisBinding == oldWin && typeof system == 'object' && (data = [system])[0]) {
576
+ os || (os = data[0].os || null);
577
+ try {
578
+ data[1] = require('ringo/engine').version;
579
+ version = data[1].join('.');
580
+ name = 'RingoJS';
581
+ } catch(e) {
582
+ if (data[0].global == freeGlobal) {
583
+ name = 'Narwhal';
584
+ }
585
+ }
586
+ } else if (typeof process == 'object' && (data = process)) {
587
+ name = 'Node.js';
588
+ arch = data.arch;
589
+ os = data.platform;
590
+ version = /[\d.]+/.exec(data.version)[0];
591
+ }
592
+ } else if (getClassOf(window.environment) == 'Environment') {
593
+ name = 'Rhino';
594
+ }
595
+ }
596
+ // detect Adobe AIR
597
+ else if (getClassOf(data = window.runtime) == 'ScriptBridgingProxyObject') {
598
+ name = 'Adobe AIR';
599
+ os = data.flash.system.Capabilities.os;
600
+ }
601
+ // detect PhantomJS
602
+ else if (getClassOf(data = window.phantom) == 'RuntimeObject') {
603
+ name = 'PhantomJS';
604
+ version = (data = data.version || null) && (data.major + '.' + data.minor + '.' + data.patch);
605
+ }
606
+ // detect IE compatibility modes
607
+ else if (typeof doc.documentMode == 'number' && (data = /\bTrident\/(\d+)/i.exec(ua))) {
608
+ // we're in compatibility mode when the Trident version + 4 doesn't
609
+ // equal the document mode
610
+ version = [version, doc.documentMode];
611
+ if ((data = +data[1] + 4) != version[1]) {
612
+ description.push('IE ' + version[1] + ' mode');
613
+ layout[1] = '';
614
+ version[1] = data;
615
+ }
616
+ version = name == 'IE' ? String(version[1].toFixed(1)) : version[0];
617
+ }
618
+ os = os && format(os);
619
+ }
620
+ // detect prerelease phases
621
+ if (version && (data =
622
+ /(?:[ab]|dp|pre|[ab]\d+pre)(?:\d+\+?)?$/i.exec(version) ||
623
+ /(?:alpha|beta)(?: ?\d)?/i.exec(ua + ';' + (useFeatures && nav.appMinorVersion)) ||
624
+ /\bMinefield\b/i.test(ua) && 'a')) {
625
+ prerelease = /b/i.test(data) ? 'beta' : 'alpha';
626
+ version = version.replace(RegExp(data + '\\+?$'), '') +
627
+ (prerelease == 'beta' ? beta : alpha) + (/\d+\+?/.exec(data) || '');
628
+ }
629
+ // obscure Maxthon's unreliable version
630
+ if (name == 'Maxthon' && version) {
631
+ version = version.replace(/\.[\d.]+/, '.x');
632
+ }
633
+ // detect Silk desktop/accelerated modes
634
+ else if (name == 'Silk') {
635
+ if (!/Mobi/i.test(ua)) {
636
+ os = 'Android';
637
+ description.unshift('desktop mode');
638
+ }
639
+ if (/Accelerated *= *true/i.test(ua)) {
640
+ description.unshift('accelerated');
641
+ }
642
+ }
643
+ // detect Windows Phone desktop mode
644
+ else if (name == 'IE' && (data = (/; *(?:XBLWP|ZuneWP)(\d+)/i.exec(ua) || 0)[1])) {
645
+ name += ' Mobile';
646
+ os = 'Windows Phone OS ' + data + '.x';
647
+ description.unshift('desktop mode');
648
+ }
649
+ // add mobile postfix
650
+ else if ((name == 'IE' || name && !product && !/Browser/.test(name)) &&
651
+ (os == 'Windows CE' || /Mobi/i.test(ua))) {
652
+ name += ' Mobile';
653
+ }
654
+ // detect IE platform preview
655
+ else if (name == 'IE' && useFeatures && typeof external == 'object' && !external) {
656
+ description.unshift('platform preview');
657
+ }
658
+ // detect BlackBerry OS version
659
+ // http://docs.blackberry.com/en/developers/deliverables/18169/HTTP_headers_sent_by_BB_Browser_1234911_11.jsp
660
+ else if (/BlackBerry/.test(product) && (data =
661
+ (RegExp(product.replace(/ +/g, ' *') + '/([.\\d]+)', 'i').exec(ua) || 0)[1] ||
662
+ version)) {
663
+ os = 'Device Software ' + data;
664
+ version = null;
665
+ }
666
+ // detect Opera identifying/masking itself as another browser
667
+ // http://www.opera.com/support/kb/view/843/
668
+ else if (this != forOwn && (
669
+ (useFeatures && opera) ||
670
+ (/Opera/.test(name) && /\b(?:MSIE|Firefox)\b/i.test(ua)) ||
671
+ (name == 'Firefox' && /OS X (?:\d+\.){2,}/.test(os)) ||
672
+ (name == 'IE' && (
673
+ (os && !/^Win/.test(os) && version > 5.5) ||
674
+ /Windows XP/.test(os) && version > 8 ||
675
+ version == 8 && !/Trident/.test(ua)
676
+ ))
677
+ ) && !reOpera.test(data = parse.call(forOwn, ua.replace(reOpera, '') + ';')) && data.name) {
678
+
679
+ // when "indentifying" the UA contains both Opera and the other browser's name
680
+ data = 'ing as ' + data.name + ((data = data.version) ? ' ' + data : '');
681
+ if (reOpera.test(name)) {
682
+ if (/IE/.test(data) && os == 'Mac OS') {
683
+ os = null;
684
+ }
685
+ data = 'identify' + data;
686
+ }
687
+ // when "masking" the UA contains only the other browser's name
688
+ else {
689
+ data = 'mask' + data;
690
+ if (operaClass) {
691
+ name = format(operaClass.replace(/([a-z])([A-Z])/g, '$1 $2'));
692
+ } else {
693
+ name = 'Opera';
694
+ }
695
+ if (/IE/.test(data)) {
696
+ os = null;
697
+ }
698
+ if (!useFeatures) {
699
+ version = null;
700
+ }
701
+ }
702
+ layout = ['Presto'];
703
+ description.push(data);
704
+ }
705
+ // detect WebKit Nightly and approximate Chrome/Safari versions
706
+ if ((data = (/AppleWebKit\/([\d.]+\+?)/i.exec(ua) || 0)[1])) {
707
+ // correct build for numeric comparison
708
+ // (e.g. "532.5" becomes "532.05")
709
+ data = [parseFloat(data.replace(/\.(\d)$/, '.0$1')), data];
710
+ // nightly builds are postfixed with a `+`
711
+ if (name == 'Safari' && data[1].slice(-1) == '+') {
712
+ name = 'WebKit Nightly';
713
+ prerelease = 'alpha';
714
+ version = data[1].slice(0, -1);
715
+ }
716
+ // clear incorrect browser versions
717
+ else if (version == data[1] ||
718
+ version == (/Safari\/([\d.]+\+?)/i.exec(ua) || 0)[1]) {
719
+ version = null;
720
+ }
721
+ // use the full Chrome version when available
722
+ data = [data[0], (/Chrome\/([\d.]+)/i.exec(ua) || 0)[1]];
723
+
724
+ // detect JavaScriptCore
725
+ // http://stackoverflow.com/questions/6768474/how-can-i-detect-which-javascript-engine-v8-or-jsc-is-used-at-runtime-in-androi
726
+ if (!useFeatures || (/internal|\n/i.test(toString.toString()) && !data[1])) {
727
+ layout[1] = 'like Safari';
728
+ data = (data = data[0], data < 400 ? 1 : data < 500 ? 2 : data < 526 ? 3 : data < 533 ? 4 : data < 534 ? '4+' : data < 535 ? 5 : '5');
729
+ } else {
730
+ layout[1] = 'like Chrome';
731
+ data = data[1] || (data = data[0], data < 530 ? 1 : data < 532 ? 2 : data < 532.05 ? 3 : data < 533 ? 4 : data < 534.03 ? 5 : data < 534.07 ? 6 : data < 534.10 ? 7 : data < 534.13 ? 8 : data < 534.16 ? 9 : data < 534.24 ? 10 : data < 534.30 ? 11 : data < 535.01 ? 12 : data < 535.02 ? '13+' : data < 535.07 ? 15 : data < 535.11 ? 16 : data < 535.19 ? 17 : data < 535.21 ? 18 : '19');
732
+ }
733
+ // add the postfix of ".x" or "+" for approximate versions
734
+ layout[1] += ' ' + (data += typeof data == 'number' ? '.x' : /[.+]/.test(data) ? '' : '+');
735
+ // obscure version for some Safari 1-2 releases
736
+ if (name == 'Safari' && (!version || parseInt(version) > 45)) {
737
+ version = data;
738
+ }
739
+ }
740
+ // strip incorrect OS versions
741
+ if (version && version.indexOf(data = /[\d.]+$/.exec(os)) == 0 &&
742
+ ua.indexOf('/' + data + '-') > -1) {
743
+ os = trim(os.replace(data, ''));
744
+ }
745
+ // add layout engine
746
+ if (layout && !/Avant|Nook/.test(name) && (
747
+ /Browser|Lunascape|Maxthon/.test(name) ||
748
+ /^(?:Adobe|Arora|Midori|Phantom|Rekonq|Rock|Sleipnir|Web)/.test(name) && layout[1])) {
749
+ // don't add layout details to description if they are falsey
750
+ (data = layout[layout.length - 1]) && description.push(data);
751
+ }
752
+ // combine contextual information
753
+ if (description.length) {
754
+ description = ['(' + description.join('; ') + ')'];
755
+ }
756
+ // append manufacturer
757
+ if (manufacturer && product && product.indexOf(manufacturer) < 0) {
758
+ description.push('on ' + manufacturer);
759
+ }
760
+ // append product
761
+ if (product) {
762
+ description.push((/^on /.test(description[description.length -1]) ? '' : 'on ') + product);
763
+ }
764
+ // add browser/OS architecture
765
+ if ((data = /\b(?:AMD|IA|Win|WOW|x86_|x)64\b/i).test(arch) && !/\bi686\b/i.test(arch)) {
766
+ os = os && os + (data.test(os) ? '' : ' 64-bit');
767
+ if (name && (/WOW64/i.test(ua) ||
768
+ (useFeatures && /\w(?:86|32)$/.test(nav.cpuClass || nav.platform)))) {
769
+ description.unshift('32-bit');
770
+ }
771
+ }
772
+
773
+ ua || (ua = null);
774
+
775
+ /*------------------------------------------------------------------------*/
776
+
777
+ /**
778
+ * The platform object.
779
+ * @name platform
780
+ * @type Object
781
+ */
782
+ return {
783
+
784
+ /**
785
+ * The browser/environment version.
786
+ * @memberOf platform
787
+ * @type String|Null
788
+ */
789
+ 'version': name && version && (description.unshift(version), version),
790
+
791
+ /**
792
+ * The name of the browser/environment.
793
+ * @memberOf platform
794
+ * @type String|Null
795
+ */
796
+ 'name': name && (description.unshift(name), name),
797
+
798
+ /**
799
+ * The name of the operating system.
800
+ * @memberOf platform
801
+ * @type String|Null
802
+ */
803
+ 'os': os && (name &&
804
+ !(os == os.split(' ')[0] && (os == name.split(' ')[0] || product)) &&
805
+ description.push(product ? '(' + os + ')' : 'on ' + os), os),
806
+
807
+ /**
808
+ * The platform description.
809
+ * @memberOf platform
810
+ * @type String|Null
811
+ */
812
+ 'description': description.length ? description.join(' ') : ua,
813
+
814
+ /**
815
+ * The name of the browser layout engine.
816
+ * @memberOf platform
817
+ * @type String|Null
818
+ */
819
+ 'layout': layout && layout[0],
820
+
821
+ /**
822
+ * The name of the product's manufacturer.
823
+ * @memberOf platform
824
+ * @type String|Null
825
+ */
826
+ 'manufacturer': manufacturer,
827
+
828
+ /**
829
+ * The alpha/beta release indicator.
830
+ * @memberOf platform
831
+ * @type String|Null
832
+ */
833
+ 'prerelease': prerelease,
834
+
835
+ /**
836
+ * The name of the product hosting the browser.
837
+ * @memberOf platform
838
+ * @type String|Null
839
+ */
840
+ 'product': product,
841
+
842
+ /**
843
+ * The browser's user agent string.
844
+ * @memberOf platform
845
+ * @type String|Null
846
+ */
847
+ 'ua': ua,
848
+
849
+ // parses a user agent string into a platform object
850
+ 'parse': parse,
851
+
852
+ // returns the platform description
853
+ 'toString': toStringPlatform
854
+ };
855
+ }
856
+
857
+ /*--------------------------------------------------------------------------*/
858
+
859
+ // expose platform
860
+ // in Narwhal, Node.js, or RingoJS
861
+ if (freeExports) {
862
+ forOwn(parse(), function(value, key) {
863
+ freeExports[key] = value;
864
+ });
865
+ }
866
+ // via an AMD loader
867
+ else if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {
868
+ define('platform', function() {
869
+ return parse();
870
+ });
871
+ }
872
+ // in a browser or Rhino
873
+ else {
874
+ // use square bracket notation so Closure Compiler won't munge `platform`
875
+ // http://code.google.com/closure/compiler/docs/api-tutorial3.html#export
876
+ window['platform'] = parse();
877
+ }
878
+ }(this));