exercism-analysis 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (579) hide show
  1. checksums.yaml +7 -0
  2. data/exercism-analysis.gemspec +30 -0
  3. data/lib/exercism-analysis.rb +38 -0
  4. data/lib/exercism-analysis/adapters/adapter.rb +23 -0
  5. data/lib/exercism-analysis/adapters/clojure.rb +13 -0
  6. data/lib/exercism-analysis/adapters/go.rb +19 -0
  7. data/lib/exercism-analysis/adapters/javascript.rb +13 -0
  8. data/lib/exercism-analysis/adapters/python.rb +13 -0
  9. data/lib/exercism-analysis/adapters/ruby.rb +19 -0
  10. data/lib/exercism-analysis/analysis.rb +18 -0
  11. data/lib/exercism-analysis/analyzers/analyzer.rb +54 -0
  12. data/lib/exercism-analysis/analyzers/clojure/kibit.rb +25 -0
  13. data/lib/exercism-analysis/analyzers/go/golint.rb +23 -0
  14. data/lib/exercism-analysis/analyzers/javascript/jslint.rb +24 -0
  15. data/lib/exercism-analysis/analyzers/python/pylint.rb +24 -0
  16. data/lib/exercism-analysis/analyzers/ruby/control_flow.rb +21 -0
  17. data/lib/exercism-analysis/analyzers/ruby/enumerable_condition.rb +21 -0
  18. data/lib/exercism-analysis/analyzers/ruby/for_loop.rb +29 -0
  19. data/lib/exercism-analysis/analyzers/ruby/indentation.rb +21 -0
  20. data/lib/exercism-analysis/analyzers/ruby/iter_mutation.rb +37 -0
  21. data/lib/exercism-analysis/analyzers/ruby/output.rb +20 -0
  22. data/lib/exercism-analysis/analyzers/ruby/range.rb +28 -0
  23. data/lib/exercism-analysis/analyzers/ruby/roodi.rb +19 -0
  24. data/lib/exercism-analysis/analyzers/ruby/send.rb +25 -0
  25. data/lib/exercism-analysis/analyzers/ruby/shebang.rb +23 -0
  26. data/lib/exercism-analysis/analyzers/ruby/tab.rb +38 -0
  27. data/lib/exercism-analysis/processors/call_processor.rb +39 -0
  28. data/lib/exercism-analysis/processors/control_flow_processor.rb +27 -0
  29. data/lib/exercism-analysis/processors/enumerable_condition_processor.rb +31 -0
  30. data/lib/exercism-analysis/processors/for_loop_processor.rb +21 -0
  31. data/lib/exercism-analysis/processors/indentation_processor.rb +69 -0
  32. data/lib/exercism-analysis/processors/iter_mutation_processor.rb +50 -0
  33. data/lib/exercism-analysis/processors/processor.rb +34 -0
  34. data/lib/exercism-analysis/processors/range_processor.rb +23 -0
  35. data/lib/exercism-analysis/processors/send_processor.rb +23 -0
  36. data/lib/exercism-analysis/templates/each_to_map.rb +29 -0
  37. data/lib/exercism-analysis/templates/each_to_select.rb +31 -0
  38. data/lib/exercism-analysis/templates/range_exclusive.rb +19 -0
  39. data/lib/exercism-analysis/templates/template.rb +29 -0
  40. data/vendor/clojure/kibit-runner/LICENSE +214 -0
  41. data/vendor/clojure/kibit-runner/project.clj +10 -0
  42. data/vendor/clojure/kibit-runner/src/kibit_runner/core.clj +17 -0
  43. data/vendor/clojure/kibit-runner/target/kibit-runner-0.1.0-SNAPSHOT-standalone.jar +0 -0
  44. data/vendor/clojure/kibit-runner/target/kibit-runner-0.1.0-SNAPSHOT.jar +0 -0
  45. data/vendor/clojure/kibit-runner/target/stale/extract-native.dependencies +1 -0
  46. data/vendor/go/src/github.com/golang/lint/LICENSE +27 -0
  47. data/vendor/go/src/github.com/golang/lint/README +59 -0
  48. data/vendor/go/src/github.com/golang/lint/golint/golint.go +67 -0
  49. data/vendor/go/src/github.com/golang/lint/lint.go +1061 -0
  50. data/vendor/go/src/runner/golint_runner.go +23 -0
  51. data/vendor/javascript/jshint_runner.js +6 -0
  52. data/vendor/javascript/node_modules/jshint/README.md +47 -0
  53. data/vendor/javascript/node_modules/jshint/bin/apply +6 -0
  54. data/vendor/javascript/node_modules/jshint/bin/build +36 -0
  55. data/vendor/javascript/node_modules/jshint/bin/changelog +36 -0
  56. data/vendor/javascript/node_modules/jshint/bin/jshint +3 -0
  57. data/vendor/javascript/node_modules/jshint/bin/land +34 -0
  58. data/vendor/javascript/node_modules/jshint/data/ascii-identifier-data.js +22 -0
  59. data/vendor/javascript/node_modules/jshint/data/non-ascii-identifier-part-only.js +1570 -0
  60. data/vendor/javascript/node_modules/jshint/data/non-ascii-identifier-start.js +48477 -0
  61. data/vendor/javascript/node_modules/jshint/dist/jshint-rhino.js +60642 -0
  62. data/vendor/javascript/node_modules/jshint/dist/jshint.js +60525 -0
  63. data/vendor/javascript/node_modules/jshint/node_modules/cli/README.md +196 -0
  64. data/vendor/javascript/node_modules/jshint/node_modules/cli/cli.js +1139 -0
  65. data/vendor/javascript/node_modules/jshint/node_modules/cli/examples/cat.js +17 -0
  66. data/vendor/javascript/node_modules/jshint/node_modules/cli/examples/command.js +16 -0
  67. data/vendor/javascript/node_modules/jshint/node_modules/cli/examples/echo.js +54 -0
  68. data/vendor/javascript/node_modules/jshint/node_modules/cli/examples/glob.js +6 -0
  69. data/vendor/javascript/node_modules/jshint/node_modules/cli/examples/long_desc.js +20 -0
  70. data/vendor/javascript/node_modules/jshint/node_modules/cli/examples/progress.js +11 -0
  71. data/vendor/javascript/node_modules/jshint/node_modules/cli/examples/sort.js +18 -0
  72. data/vendor/javascript/node_modules/jshint/node_modules/cli/examples/spinner.js +9 -0
  73. data/vendor/javascript/node_modules/jshint/node_modules/cli/examples/static.coffee +27 -0
  74. data/vendor/javascript/node_modules/jshint/node_modules/cli/examples/static.js +25 -0
  75. data/vendor/javascript/node_modules/jshint/node_modules/cli/index.js +1 -0
  76. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/LICENSE +27 -0
  77. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/README.md +250 -0
  78. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/examples/g.js +9 -0
  79. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/examples/usr-local.js +9 -0
  80. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/glob.js +728 -0
  81. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/LICENSE +16 -0
  82. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/README.md +42 -0
  83. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/inherits.js +1 -0
  84. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/inherits_browser.js +23 -0
  85. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/package.json +51 -0
  86. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/test.js +25 -0
  87. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/package.json +58 -0
  88. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/00-setup.js +176 -0
  89. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/bash-comparison.js +63 -0
  90. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/bash-results.json +351 -0
  91. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/cwd-test.js +55 -0
  92. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/globstar-match.js +19 -0
  93. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/mark.js +118 -0
  94. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/new-glob-optional-options.js +10 -0
  95. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/nocase-nomagic.js +113 -0
  96. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/pause-resume.js +73 -0
  97. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/readme-issue.js +36 -0
  98. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/root-nomount.js +39 -0
  99. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/root.js +46 -0
  100. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/stat.js +32 -0
  101. data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/zz-cleanup.js +11 -0
  102. data/vendor/javascript/node_modules/jshint/node_modules/cli/package.json +70 -0
  103. data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/LICENCE +19 -0
  104. data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/README.md +33 -0
  105. data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/index.js +86 -0
  106. data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/node_modules/date-now/LICENCE +19 -0
  107. data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/node_modules/date-now/README.md +45 -0
  108. data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/node_modules/date-now/index.js +5 -0
  109. data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/node_modules/date-now/package.json +89 -0
  110. data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/node_modules/date-now/seed.js +16 -0
  111. data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/node_modules/date-now/test/index.js +28 -0
  112. data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/node_modules/date-now/test/static/index.html +10 -0
  113. data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/package.json +88 -0
  114. data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/test/index.js +67 -0
  115. data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/test/static/index.html +12 -0
  116. data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/test/static/test-adapter.js +53 -0
  117. data/vendor/javascript/node_modules/jshint/node_modules/exit/Gruntfile.js +48 -0
  118. data/vendor/javascript/node_modules/jshint/node_modules/exit/LICENSE-MIT +22 -0
  119. data/vendor/javascript/node_modules/jshint/node_modules/exit/README.md +75 -0
  120. data/vendor/javascript/node_modules/jshint/node_modules/exit/lib/exit.js +41 -0
  121. data/vendor/javascript/node_modules/jshint/node_modules/exit/package.json +69 -0
  122. data/vendor/javascript/node_modules/jshint/node_modules/exit/test/exit_test.js +121 -0
  123. data/vendor/javascript/node_modules/jshint/node_modules/exit/test/fixtures/10-stderr.txt +10 -0
  124. data/vendor/javascript/node_modules/jshint/node_modules/exit/test/fixtures/10-stdout-stderr.txt +20 -0
  125. data/vendor/javascript/node_modules/jshint/node_modules/exit/test/fixtures/10-stdout.txt +10 -0
  126. data/vendor/javascript/node_modules/jshint/node_modules/exit/test/fixtures/100-stderr.txt +100 -0
  127. data/vendor/javascript/node_modules/jshint/node_modules/exit/test/fixtures/100-stdout-stderr.txt +200 -0
  128. data/vendor/javascript/node_modules/jshint/node_modules/exit/test/fixtures/100-stdout.txt +100 -0
  129. data/vendor/javascript/node_modules/jshint/node_modules/exit/test/fixtures/1000-stderr.txt +1000 -0
  130. data/vendor/javascript/node_modules/jshint/node_modules/exit/test/fixtures/1000-stdout-stderr.txt +2000 -0
  131. data/vendor/javascript/node_modules/jshint/node_modules/exit/test/fixtures/1000-stdout.txt +1000 -0
  132. data/vendor/javascript/node_modules/jshint/node_modules/exit/test/fixtures/create-files.sh +8 -0
  133. data/vendor/javascript/node_modules/jshint/node_modules/exit/test/fixtures/log-broken.js +23 -0
  134. data/vendor/javascript/node_modules/jshint/node_modules/exit/test/fixtures/log.js +25 -0
  135. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/LICENSE +18 -0
  136. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/README.md +83 -0
  137. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/lib/CollectingHandler.js +55 -0
  138. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/lib/FeedHandler.js +95 -0
  139. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/lib/Parser.js +337 -0
  140. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/lib/ProxyHandler.js +27 -0
  141. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/lib/Stream.js +35 -0
  142. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/lib/Tokenizer.js +891 -0
  143. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/lib/WritableStream.js +21 -0
  144. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/lib/index.js +68 -0
  145. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domelementtype/LICENSE +11 -0
  146. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domelementtype/index.js +14 -0
  147. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domelementtype/package.json +40 -0
  148. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domelementtype/readme.md +1 -0
  149. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/LICENSE +11 -0
  150. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/index.js +211 -0
  151. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/package.json +68 -0
  152. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/readme.md +102 -0
  153. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/01-basic.json +57 -0
  154. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/02-single_tag_1.json +21 -0
  155. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/03-single_tag_2.json +21 -0
  156. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/04-unescaped_in_script.json +27 -0
  157. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/05-tags_in_comment.json +18 -0
  158. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/06-comment_in_script.json +18 -0
  159. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/07-unescaped_in_style.json +20 -0
  160. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/08-extra_spaces_in_tag.json +20 -0
  161. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/09-unquoted_attrib.json +20 -0
  162. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/10-singular_attribute.json +15 -0
  163. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/11-text_outside_tags.json +40 -0
  164. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/12-text_only.json +11 -0
  165. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/13-comment_in_text.json +19 -0
  166. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/14-comment_in_text_in_script.json +18 -0
  167. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/15-non-verbose.json +22 -0
  168. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/16-normalize_whitespace.json +47 -0
  169. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/17-xml_namespace.json +18 -0
  170. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/18-enforce_empty_tags.json +16 -0
  171. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/19-ignore_empty_tags.json +20 -0
  172. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/20-template_script_tags.json +20 -0
  173. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/21-conditional_comments.json +15 -0
  174. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/22-lowercase_tags.json +41 -0
  175. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/23-dom-lvl1.json +121 -0
  176. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/tests.js +58 -0
  177. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/LICENSE +11 -0
  178. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/index.js +14 -0
  179. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/lib/helpers.js +141 -0
  180. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/lib/legacy.js +87 -0
  181. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/lib/manipulation.js +77 -0
  182. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/lib/querying.js +94 -0
  183. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/lib/stringify.js +93 -0
  184. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/lib/traversal.js +24 -0
  185. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/package.json +71 -0
  186. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/readme.md +1 -0
  187. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/test/fixture.js +6 -0
  188. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/test/tests/helpers.js +89 -0
  189. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/test/tests/legacy.js +119 -0
  190. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/test/utils.js +9 -0
  191. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/LICENSE +11 -0
  192. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/index.js +31 -0
  193. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/lib/decode.js +72 -0
  194. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/lib/decode_codepoint.js +26 -0
  195. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/lib/encode.js +48 -0
  196. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/maps/decode.json +1 -0
  197. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/maps/entities.json +1 -0
  198. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/maps/legacy.json +1 -0
  199. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/maps/xml.json +1 -0
  200. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/package.json +79 -0
  201. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/readme.md +31 -0
  202. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/test/mocha.opts +2 -0
  203. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/test/test.js +150 -0
  204. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/LICENSE +18 -0
  205. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/README.md +15 -0
  206. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/duplex.js +1 -0
  207. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/float.patch +923 -0
  208. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_duplex.js +89 -0
  209. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_passthrough.js +46 -0
  210. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_readable.js +944 -0
  211. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_transform.js +209 -0
  212. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_writable.js +472 -0
  213. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/core-util-is/README.md +3 -0
  214. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/core-util-is/float.patch +604 -0
  215. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/core-util-is/lib/util.js +107 -0
  216. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/core-util-is/package.json +53 -0
  217. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/core-util-is/util.js +106 -0
  218. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits/LICENSE +16 -0
  219. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits/README.md +42 -0
  220. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits/inherits.js +1 -0
  221. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits/inherits_browser.js +23 -0
  222. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits/package.json +51 -0
  223. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits/test.js +25 -0
  224. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/isarray/README.md +54 -0
  225. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/isarray/build/build.js +209 -0
  226. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/isarray/component.json +19 -0
  227. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/isarray/index.js +3 -0
  228. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/isarray/package.json +54 -0
  229. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/string_decoder/LICENSE +20 -0
  230. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/string_decoder/README.md +7 -0
  231. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/string_decoder/index.js +200 -0
  232. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/string_decoder/package.json +53 -0
  233. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/package.json +68 -0
  234. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/passthrough.js +1 -0
  235. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/readable.js +7 -0
  236. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/transform.js +1 -0
  237. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/writable.js +1 -0
  238. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/package.json +90 -0
  239. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/01-events.js +9 -0
  240. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/02-stream.js +23 -0
  241. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/03-feed.js +19 -0
  242. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Documents/Atom_Example.xml +25 -0
  243. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Documents/Attributes.html +16 -0
  244. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Documents/Basic.html +1 -0
  245. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Documents/RDF_Example.xml +63 -0
  246. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Documents/RSS_Example.xml +48 -0
  247. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/01-simple.json +44 -0
  248. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/02-template.json +63 -0
  249. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/03-lowercase_tags.json +46 -0
  250. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/04-cdata.json +50 -0
  251. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/05-cdata-special.json +35 -0
  252. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/06-leading-lt.json +16 -0
  253. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/07-self-closing.json +67 -0
  254. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/08-implicit-close-tags.json +59 -0
  255. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/09-attributes.json +68 -0
  256. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/10-crazy-attrib.json +52 -0
  257. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/11-script_in_script.json +54 -0
  258. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/12-long-comment-end.json +20 -0
  259. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/13-long-cdata-end.json +22 -0
  260. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/14-implicit-open-tags.json +27 -0
  261. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/15-lt-whitespace.json +16 -0
  262. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/16-double_attribs.json +45 -0
  263. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/17-numeric_entities.json +16 -0
  264. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/18-legacy_entities.json +16 -0
  265. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/19-named_entities.json +16 -0
  266. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/20-xml_entities.json +16 -0
  267. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/21-entity_in_attribute.json +38 -0
  268. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/22-double_brackets.json +41 -0
  269. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/23-legacy_entity_fail.json +16 -0
  270. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/24-special_special.json +133 -0
  271. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/25-empty_tag_name.json +13 -0
  272. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/26-not-quite-closed.json +35 -0
  273. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/27-entities_in_attributes.json +62 -0
  274. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/28-cdata_in_html.json +9 -0
  275. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/29-comment_edge-cases.json +18 -0
  276. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/30-cdata_edge-cases.json +22 -0
  277. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Feeds/01-rss.js +34 -0
  278. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Feeds/02-atom.js +18 -0
  279. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Feeds/03-rdf.js +20 -0
  280. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Stream/01-basic.json +83 -0
  281. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Stream/02-RSS.json +1093 -0
  282. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Stream/03-Atom.json +644 -0
  283. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Stream/04-RDF.json +1399 -0
  284. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Stream/05-Attributes.json +354 -0
  285. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/api.js +63 -0
  286. data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/test-helper.js +83 -0
  287. data/vendor/javascript/node_modules/jshint/node_modules/minimatch/LICENSE +23 -0
  288. data/vendor/javascript/node_modules/jshint/node_modules/minimatch/README.md +218 -0
  289. data/vendor/javascript/node_modules/jshint/node_modules/minimatch/minimatch.js +1061 -0
  290. data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS +14 -0
  291. data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/LICENSE +23 -0
  292. data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/README.md +97 -0
  293. data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js +252 -0
  294. data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/package.json +50 -0
  295. data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/test/basic.js +369 -0
  296. data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/test/foreach.js +52 -0
  297. data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js +50 -0
  298. data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/sigmund/LICENSE +27 -0
  299. data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/sigmund/README.md +53 -0
  300. data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/sigmund/bench.js +283 -0
  301. data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/sigmund/package.json +58 -0
  302. data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/sigmund/sigmund.js +39 -0
  303. data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/sigmund/test/basic.js +24 -0
  304. data/vendor/javascript/node_modules/jshint/node_modules/minimatch/package.json +57 -0
  305. data/vendor/javascript/node_modules/jshint/node_modules/minimatch/test/basic.js +399 -0
  306. data/vendor/javascript/node_modules/jshint/node_modules/minimatch/test/brace-expand.js +33 -0
  307. data/vendor/javascript/node_modules/jshint/node_modules/minimatch/test/caching.js +14 -0
  308. data/vendor/javascript/node_modules/jshint/node_modules/minimatch/test/defaults.js +274 -0
  309. data/vendor/javascript/node_modules/jshint/node_modules/minimatch/test/extglob-ending-with-state-char.js +8 -0
  310. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/LICENSE +26 -0
  311. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/README.md +569 -0
  312. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/bin/shjs +51 -0
  313. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/global.js +3 -0
  314. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/make.js +47 -0
  315. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/package.json +61 -0
  316. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/scripts/generate-docs.js +21 -0
  317. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/scripts/run-tests.js +50 -0
  318. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/shell.js +157 -0
  319. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/cat.js +43 -0
  320. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/cd.js +19 -0
  321. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/chmod.js +208 -0
  322. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/common.js +203 -0
  323. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/cp.js +201 -0
  324. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/dirs.js +191 -0
  325. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/echo.js +20 -0
  326. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/error.js +10 -0
  327. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/exec.js +181 -0
  328. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/find.js +51 -0
  329. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/grep.js +52 -0
  330. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/ln.js +53 -0
  331. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/ls.js +126 -0
  332. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/mkdir.js +68 -0
  333. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/mv.js +80 -0
  334. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/popd.js +1 -0
  335. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/pushd.js +1 -0
  336. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/pwd.js +11 -0
  337. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/rm.js +145 -0
  338. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/sed.js +43 -0
  339. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/tempdir.js +56 -0
  340. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/test.js +85 -0
  341. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/to.js +29 -0
  342. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/toEnd.js +29 -0
  343. data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/which.js +83 -0
  344. data/vendor/javascript/node_modules/jshint/node_modules/strip-json-comments/cli.js +41 -0
  345. data/vendor/javascript/node_modules/jshint/node_modules/strip-json-comments/package.json +76 -0
  346. data/vendor/javascript/node_modules/jshint/node_modules/strip-json-comments/readme.md +74 -0
  347. data/vendor/javascript/node_modules/jshint/node_modules/strip-json-comments/strip-json-comments.js +64 -0
  348. data/vendor/javascript/node_modules/jshint/node_modules/underscore/LICENSE +23 -0
  349. data/vendor/javascript/node_modules/jshint/node_modules/underscore/README.md +22 -0
  350. data/vendor/javascript/node_modules/jshint/node_modules/underscore/package.json +66 -0
  351. data/vendor/javascript/node_modules/jshint/node_modules/underscore/underscore-min.js +6 -0
  352. data/vendor/javascript/node_modules/jshint/node_modules/underscore/underscore.js +1343 -0
  353. data/vendor/javascript/node_modules/jshint/package.json +80 -0
  354. data/vendor/javascript/node_modules/jshint/src/cli.js +731 -0
  355. data/vendor/javascript/node_modules/jshint/src/jshint.js +5023 -0
  356. data/vendor/javascript/node_modules/jshint/src/lex.js +1650 -0
  357. data/vendor/javascript/node_modules/jshint/src/messages.js +223 -0
  358. data/vendor/javascript/node_modules/jshint/src/platforms/rhino.js +115 -0
  359. data/vendor/javascript/node_modules/jshint/src/reg.js +38 -0
  360. data/vendor/javascript/node_modules/jshint/src/reporters/checkstyle.js +81 -0
  361. data/vendor/javascript/node_modules/jshint/src/reporters/default.js +34 -0
  362. data/vendor/javascript/node_modules/jshint/src/reporters/jslint_xml.js +57 -0
  363. data/vendor/javascript/node_modules/jshint/src/reporters/non_error.js +52 -0
  364. data/vendor/javascript/node_modules/jshint/src/state.js +28 -0
  365. data/vendor/javascript/node_modules/jshint/src/style.js +143 -0
  366. data/vendor/javascript/node_modules/jshint/src/vars.js +658 -0
  367. data/vendor/python/astroid/COPYING +339 -0
  368. data/vendor/python/astroid/COPYING.LESSER +510 -0
  369. data/vendor/python/astroid/ChangeLog +574 -0
  370. data/vendor/python/astroid/MANIFEST.in +9 -0
  371. data/vendor/python/astroid/README +56 -0
  372. data/vendor/python/astroid/README.Python3 +26 -0
  373. data/vendor/python/astroid/__init__.py +118 -0
  374. data/vendor/python/astroid/__init__.pyc +0 -0
  375. data/vendor/python/astroid/__pkginfo__.py +48 -0
  376. data/vendor/python/astroid/__pkginfo__.pyc +0 -0
  377. data/vendor/python/astroid/announce.txt +23 -0
  378. data/vendor/python/astroid/as_string.py +496 -0
  379. data/vendor/python/astroid/as_string.pyc +0 -0
  380. data/vendor/python/astroid/bases.py +618 -0
  381. data/vendor/python/astroid/bases.pyc +0 -0
  382. data/vendor/python/astroid/brain/py2gi.py +159 -0
  383. data/vendor/python/astroid/brain/py2gi.pyc +0 -0
  384. data/vendor/python/astroid/brain/py2mechanize.py +20 -0
  385. data/vendor/python/astroid/brain/py2mechanize.pyc +0 -0
  386. data/vendor/python/astroid/brain/py2qt4.py +25 -0
  387. data/vendor/python/astroid/brain/py2qt4.pyc +0 -0
  388. data/vendor/python/astroid/brain/py2stdlib.py +252 -0
  389. data/vendor/python/astroid/brain/py2stdlib.pyc +0 -0
  390. data/vendor/python/astroid/builder.py +238 -0
  391. data/vendor/python/astroid/builder.pyc +0 -0
  392. data/vendor/python/astroid/exceptions.py +51 -0
  393. data/vendor/python/astroid/exceptions.pyc +0 -0
  394. data/vendor/python/astroid/inference.py +393 -0
  395. data/vendor/python/astroid/inference.pyc +0 -0
  396. data/vendor/python/astroid/inspector.py +275 -0
  397. data/vendor/python/astroid/manager.py +336 -0
  398. data/vendor/python/astroid/manager.pyc +0 -0
  399. data/vendor/python/astroid/mixins.py +122 -0
  400. data/vendor/python/astroid/mixins.pyc +0 -0
  401. data/vendor/python/astroid/node_classes.py +928 -0
  402. data/vendor/python/astroid/node_classes.pyc +0 -0
  403. data/vendor/python/astroid/nodes.py +73 -0
  404. data/vendor/python/astroid/nodes.pyc +0 -0
  405. data/vendor/python/astroid/protocols.py +322 -0
  406. data/vendor/python/astroid/protocols.pyc +0 -0
  407. data/vendor/python/astroid/raw_building.py +361 -0
  408. data/vendor/python/astroid/raw_building.pyc +0 -0
  409. data/vendor/python/astroid/rebuilder.py +954 -0
  410. data/vendor/python/astroid/rebuilder.pyc +0 -0
  411. data/vendor/python/astroid/scoped_nodes.py +1118 -0
  412. data/vendor/python/astroid/scoped_nodes.pyc +0 -0
  413. data/vendor/python/astroid/setup.py +184 -0
  414. data/vendor/python/astroid/tox.ini +10 -0
  415. data/vendor/python/astroid/utils.py +236 -0
  416. data/vendor/python/astroid/utils.pyc +0 -0
  417. data/vendor/python/logilab/__init__.py +0 -0
  418. data/vendor/python/logilab/__init__.pyc +0 -0
  419. data/vendor/python/logilab/common/COPYING +339 -0
  420. data/vendor/python/logilab/common/COPYING.LESSER +510 -0
  421. data/vendor/python/logilab/common/ChangeLog +1517 -0
  422. data/vendor/python/logilab/common/MANIFEST.in +13 -0
  423. data/vendor/python/logilab/common/README +185 -0
  424. data/vendor/python/logilab/common/README.Python3 +29 -0
  425. data/vendor/python/logilab/common/__init__.py +171 -0
  426. data/vendor/python/logilab/common/__init__.pyc +0 -0
  427. data/vendor/python/logilab/common/__pkginfo__.py +53 -0
  428. data/vendor/python/logilab/common/__pkginfo__.pyc +0 -0
  429. data/vendor/python/logilab/common/announce.txt +25 -0
  430. data/vendor/python/logilab/common/bin/pytest +7 -0
  431. data/vendor/python/logilab/common/bin/pytest.bat +17 -0
  432. data/vendor/python/logilab/common/cache.py +114 -0
  433. data/vendor/python/logilab/common/changelog.py +236 -0
  434. data/vendor/python/logilab/common/changelog.pyc +0 -0
  435. data/vendor/python/logilab/common/clcommands.py +332 -0
  436. data/vendor/python/logilab/common/cli.py +208 -0
  437. data/vendor/python/logilab/common/compat.py +243 -0
  438. data/vendor/python/logilab/common/compat.pyc +0 -0
  439. data/vendor/python/logilab/common/configuration.py +1094 -0
  440. data/vendor/python/logilab/common/configuration.pyc +0 -0
  441. data/vendor/python/logilab/common/contexts.py +5 -0
  442. data/vendor/python/logilab/common/corbautils.py +117 -0
  443. data/vendor/python/logilab/common/daemon.py +100 -0
  444. data/vendor/python/logilab/common/date.py +333 -0
  445. data/vendor/python/logilab/common/dbf.py +229 -0
  446. data/vendor/python/logilab/common/debugger.py +210 -0
  447. data/vendor/python/logilab/common/decorators.py +281 -0
  448. data/vendor/python/logilab/common/decorators.pyc +0 -0
  449. data/vendor/python/logilab/common/deprecation.py +188 -0
  450. data/vendor/python/logilab/common/deprecation.pyc +0 -0
  451. data/vendor/python/logilab/common/fileutils.py +402 -0
  452. data/vendor/python/logilab/common/graph.py +276 -0
  453. data/vendor/python/logilab/common/graph.pyc +0 -0
  454. data/vendor/python/logilab/common/hg.py +130 -0
  455. data/vendor/python/logilab/common/interface.py +71 -0
  456. data/vendor/python/logilab/common/interface.pyc +0 -0
  457. data/vendor/python/logilab/common/logging_ext.py +193 -0
  458. data/vendor/python/logilab/common/modutils.py +695 -0
  459. data/vendor/python/logilab/common/modutils.pyc +0 -0
  460. data/vendor/python/logilab/common/optik_ext.py +391 -0
  461. data/vendor/python/logilab/common/optik_ext.pyc +0 -0
  462. data/vendor/python/logilab/common/optparser.py +90 -0
  463. data/vendor/python/logilab/common/proc.py +277 -0
  464. data/vendor/python/logilab/common/pyro_ext.py +180 -0
  465. data/vendor/python/logilab/common/pytest.py +1177 -0
  466. data/vendor/python/logilab/common/python-logilab-common.spec +184 -0
  467. data/vendor/python/logilab/common/registry.py +1113 -0
  468. data/vendor/python/logilab/common/setup.cfg +3 -0
  469. data/vendor/python/logilab/common/setup.py +189 -0
  470. data/vendor/python/logilab/common/shellutils.py +455 -0
  471. data/vendor/python/logilab/common/sphinx_ext.py +87 -0
  472. data/vendor/python/logilab/common/sphinxutils.py +122 -0
  473. data/vendor/python/logilab/common/table.py +925 -0
  474. data/vendor/python/logilab/common/tasksqueue.py +100 -0
  475. data/vendor/python/logilab/common/textutils.py +534 -0
  476. data/vendor/python/logilab/common/textutils.pyc +0 -0
  477. data/vendor/python/logilab/common/tree.py +369 -0
  478. data/vendor/python/logilab/common/tree.pyc +0 -0
  479. data/vendor/python/logilab/common/umessage.py +190 -0
  480. data/vendor/python/logilab/common/ureports/__init__.py +174 -0
  481. data/vendor/python/logilab/common/ureports/__init__.pyc +0 -0
  482. data/vendor/python/logilab/common/ureports/docbook_writer.py +139 -0
  483. data/vendor/python/logilab/common/ureports/html_writer.py +131 -0
  484. data/vendor/python/logilab/common/ureports/html_writer.pyc +0 -0
  485. data/vendor/python/logilab/common/ureports/nodes.py +201 -0
  486. data/vendor/python/logilab/common/ureports/nodes.pyc +0 -0
  487. data/vendor/python/logilab/common/ureports/text_writer.py +140 -0
  488. data/vendor/python/logilab/common/ureports/text_writer.pyc +0 -0
  489. data/vendor/python/logilab/common/urllib2ext.py +87 -0
  490. data/vendor/python/logilab/common/vcgutils.py +216 -0
  491. data/vendor/python/logilab/common/visitor.py +107 -0
  492. data/vendor/python/logilab/common/visitor.pyc +0 -0
  493. data/vendor/python/logilab/common/xmlrpcutils.py +131 -0
  494. data/vendor/python/logilab/common/xmlutils.py +61 -0
  495. data/vendor/python/pylint/CONTRIBUTORS.txt +38 -0
  496. data/vendor/python/pylint/COPYING +340 -0
  497. data/vendor/python/pylint/ChangeLog +1437 -0
  498. data/vendor/python/pylint/DEPENDS +3 -0
  499. data/vendor/python/pylint/MANIFEST.in +14 -0
  500. data/vendor/python/pylint/README +50 -0
  501. data/vendor/python/pylint/README.Python3 +37 -0
  502. data/vendor/python/pylint/__init__.py +44 -0
  503. data/vendor/python/pylint/__init__.pyc +0 -0
  504. data/vendor/python/pylint/__main__.py +3 -0
  505. data/vendor/python/pylint/__pkginfo__.py +74 -0
  506. data/vendor/python/pylint/__pkginfo__.pyc +0 -0
  507. data/vendor/python/pylint/bin/epylint +3 -0
  508. data/vendor/python/pylint/bin/epylint.bat +5 -0
  509. data/vendor/python/pylint/bin/pylint +3 -0
  510. data/vendor/python/pylint/bin/pylint-gui +3 -0
  511. data/vendor/python/pylint/bin/pylint-gui.bat +5 -0
  512. data/vendor/python/pylint/bin/pylint.bat +5 -0
  513. data/vendor/python/pylint/bin/pyreverse +3 -0
  514. data/vendor/python/pylint/bin/pyreverse.bat +5 -0
  515. data/vendor/python/pylint/bin/symilar +3 -0
  516. data/vendor/python/pylint/bin/symilar.bat +5 -0
  517. data/vendor/python/pylint/checkers/__init__.py +145 -0
  518. data/vendor/python/pylint/checkers/__init__.pyc +0 -0
  519. data/vendor/python/pylint/checkers/base.py +1141 -0
  520. data/vendor/python/pylint/checkers/base.pyc +0 -0
  521. data/vendor/python/pylint/checkers/classes.py +792 -0
  522. data/vendor/python/pylint/checkers/classes.pyc +0 -0
  523. data/vendor/python/pylint/checkers/design_analysis.py +367 -0
  524. data/vendor/python/pylint/checkers/design_analysis.pyc +0 -0
  525. data/vendor/python/pylint/checkers/exceptions.py +306 -0
  526. data/vendor/python/pylint/checkers/exceptions.pyc +0 -0
  527. data/vendor/python/pylint/checkers/format.py +943 -0
  528. data/vendor/python/pylint/checkers/format.pyc +0 -0
  529. data/vendor/python/pylint/checkers/imports.py +394 -0
  530. data/vendor/python/pylint/checkers/imports.pyc +0 -0
  531. data/vendor/python/pylint/checkers/logging.py +213 -0
  532. data/vendor/python/pylint/checkers/logging.pyc +0 -0
  533. data/vendor/python/pylint/checkers/misc.py +90 -0
  534. data/vendor/python/pylint/checkers/misc.pyc +0 -0
  535. data/vendor/python/pylint/checkers/newstyle.py +151 -0
  536. data/vendor/python/pylint/checkers/newstyle.pyc +0 -0
  537. data/vendor/python/pylint/checkers/raw_metrics.py +129 -0
  538. data/vendor/python/pylint/checkers/raw_metrics.pyc +0 -0
  539. data/vendor/python/pylint/checkers/similar.py +365 -0
  540. data/vendor/python/pylint/checkers/similar.pyc +0 -0
  541. data/vendor/python/pylint/checkers/stdlib.py +69 -0
  542. data/vendor/python/pylint/checkers/stdlib.pyc +0 -0
  543. data/vendor/python/pylint/checkers/strings.py +304 -0
  544. data/vendor/python/pylint/checkers/strings.pyc +0 -0
  545. data/vendor/python/pylint/checkers/typecheck.py +451 -0
  546. data/vendor/python/pylint/checkers/typecheck.pyc +0 -0
  547. data/vendor/python/pylint/checkers/utils.py +416 -0
  548. data/vendor/python/pylint/checkers/utils.pyc +0 -0
  549. data/vendor/python/pylint/checkers/variables.py +741 -0
  550. data/vendor/python/pylint/checkers/variables.pyc +0 -0
  551. data/vendor/python/pylint/config.py +156 -0
  552. data/vendor/python/pylint/config.pyc +0 -0
  553. data/vendor/python/pylint/epylint.py +175 -0
  554. data/vendor/python/pylint/gui.py +508 -0
  555. data/vendor/python/pylint/interfaces.py +72 -0
  556. data/vendor/python/pylint/interfaces.pyc +0 -0
  557. data/vendor/python/pylint/lint.py +1106 -0
  558. data/vendor/python/pylint/lint.pyc +0 -0
  559. data/vendor/python/pylint/pyreverse/__init__.py +5 -0
  560. data/vendor/python/pylint/pyreverse/diadefslib.py +233 -0
  561. data/vendor/python/pylint/pyreverse/diagrams.py +247 -0
  562. data/vendor/python/pylint/pyreverse/main.py +124 -0
  563. data/vendor/python/pylint/pyreverse/utils.py +131 -0
  564. data/vendor/python/pylint/pyreverse/writer.py +199 -0
  565. data/vendor/python/pylint/reporters/__init__.py +138 -0
  566. data/vendor/python/pylint/reporters/__init__.pyc +0 -0
  567. data/vendor/python/pylint/reporters/guireporter.py +28 -0
  568. data/vendor/python/pylint/reporters/guireporter.pyc +0 -0
  569. data/vendor/python/pylint/reporters/html.py +70 -0
  570. data/vendor/python/pylint/reporters/html.pyc +0 -0
  571. data/vendor/python/pylint/reporters/text.py +143 -0
  572. data/vendor/python/pylint/reporters/text.pyc +0 -0
  573. data/vendor/python/pylint/setup.cfg +3 -0
  574. data/vendor/python/pylint/setup.py +203 -0
  575. data/vendor/python/pylint/tox.ini +10 -0
  576. data/vendor/python/pylint/utils.py +744 -0
  577. data/vendor/python/pylint/utils.pyc +0 -0
  578. data/vendor/python/pylint_runner.py +22 -0
  579. metadata +675 -0
@@ -0,0 +1,33 @@
1
+ var tap = require("tap")
2
+ , minimatch = require("../")
3
+
4
+ tap.test("brace expansion", function (t) {
5
+ // [ pattern, [expanded] ]
6
+ ; [ [ "a{b,c{d,e},{f,g}h}x{y,z}"
7
+ , [ "abxy"
8
+ , "abxz"
9
+ , "acdxy"
10
+ , "acdxz"
11
+ , "acexy"
12
+ , "acexz"
13
+ , "afhxy"
14
+ , "afhxz"
15
+ , "aghxy"
16
+ , "aghxz" ] ]
17
+ , [ "a{1..5}b"
18
+ , [ "a1b"
19
+ , "a2b"
20
+ , "a3b"
21
+ , "a4b"
22
+ , "a5b" ] ]
23
+ , [ "a{b}c", ["a{b}c"] ]
24
+ ].forEach(function (tc) {
25
+ var p = tc[0]
26
+ , expect = tc[1]
27
+ t.equivalent(minimatch.braceExpand(p), expect, p)
28
+ })
29
+ console.error("ending")
30
+ t.end()
31
+ })
32
+
33
+
@@ -0,0 +1,14 @@
1
+ var Minimatch = require("../minimatch.js").Minimatch
2
+ var tap = require("tap")
3
+ tap.test("cache test", function (t) {
4
+ var mm1 = new Minimatch("a?b")
5
+ var mm2 = new Minimatch("a?b")
6
+ t.equal(mm1, mm2, "should get the same object")
7
+ // the lru should drop it after 100 entries
8
+ for (var i = 0; i < 100; i ++) {
9
+ new Minimatch("a"+i)
10
+ }
11
+ mm2 = new Minimatch("a?b")
12
+ t.notEqual(mm1, mm2, "cache should have dropped")
13
+ t.end()
14
+ })
@@ -0,0 +1,274 @@
1
+ // http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test
2
+ //
3
+ // TODO: Some of these tests do very bad things with backslashes, and will
4
+ // most likely fail badly on windows. They should probably be skipped.
5
+
6
+ var tap = require("tap")
7
+ , globalBefore = Object.keys(global)
8
+ , mm = require("../")
9
+ , files = [ "a", "b", "c", "d", "abc"
10
+ , "abd", "abe", "bb", "bcd"
11
+ , "ca", "cb", "dd", "de"
12
+ , "bdir/", "bdir/cfile"]
13
+ , next = files.concat([ "a-b", "aXb"
14
+ , ".x", ".y" ])
15
+
16
+ tap.test("basic tests", function (t) {
17
+ var start = Date.now()
18
+
19
+ // [ pattern, [matches], MM opts, files, TAP opts]
20
+ ; [ "http://www.bashcookbook.com/bashinfo" +
21
+ "/source/bash-1.14.7/tests/glob-test"
22
+ , ["a*", ["a", "abc", "abd", "abe"]]
23
+ , ["X*", ["X*"], {nonull: true}]
24
+
25
+ // allow null glob expansion
26
+ , ["X*", []]
27
+
28
+ // isaacs: Slightly different than bash/sh/ksh
29
+ // \\* is not un-escaped to literal "*" in a failed match,
30
+ // but it does make it get treated as a literal star
31
+ , ["\\*", ["\\*"], {nonull: true}]
32
+ , ["\\**", ["\\**"], {nonull: true}]
33
+ , ["\\*\\*", ["\\*\\*"], {nonull: true}]
34
+
35
+ , ["b*/", ["bdir/"]]
36
+ , ["c*", ["c", "ca", "cb"]]
37
+ , ["**", files]
38
+
39
+ , ["\\.\\./*/", ["\\.\\./*/"], {nonull: true}]
40
+ , ["s/\\..*//", ["s/\\..*//"], {nonull: true}]
41
+
42
+ , "legendary larry crashes bashes"
43
+ , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"
44
+ , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"], {nonull: true}]
45
+ , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"
46
+ , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"], {nonull: true}]
47
+
48
+ , "character classes"
49
+ , ["[a-c]b*", ["abc", "abd", "abe", "bb", "cb"]]
50
+ , ["[a-y]*[^c]", ["abd", "abe", "bb", "bcd",
51
+ "bdir/", "ca", "cb", "dd", "de"]]
52
+ , ["a*[^c]", ["abd", "abe"]]
53
+ , function () { files.push("a-b", "aXb") }
54
+ , ["a[X-]b", ["a-b", "aXb"]]
55
+ , function () { files.push(".x", ".y") }
56
+ , ["[^a-c]*", ["d", "dd", "de"]]
57
+ , function () { files.push("a*b/", "a*b/ooo") }
58
+ , ["a\\*b/*", ["a*b/ooo"]]
59
+ , ["a\\*?/*", ["a*b/ooo"]]
60
+ , ["*\\\\!*", [], {null: true}, ["echo !7"]]
61
+ , ["*\\!*", ["echo !7"], null, ["echo !7"]]
62
+ , ["*.\\*", ["r.*"], null, ["r.*"]]
63
+ , ["a[b]c", ["abc"]]
64
+ , ["a[\\b]c", ["abc"]]
65
+ , ["a?c", ["abc"]]
66
+ , ["a\\*c", [], {null: true}, ["abc"]]
67
+ , ["", [""], { null: true }, [""]]
68
+
69
+ , "http://www.opensource.apple.com/source/bash/bash-23/" +
70
+ "bash/tests/glob-test"
71
+ , function () { files.push("man/", "man/man1/", "man/man1/bash.1") }
72
+ , ["*/man*/bash.*", ["man/man1/bash.1"]]
73
+ , ["man/man1/bash.1", ["man/man1/bash.1"]]
74
+ , ["a***c", ["abc"], null, ["abc"]]
75
+ , ["a*****?c", ["abc"], null, ["abc"]]
76
+ , ["?*****??", ["abc"], null, ["abc"]]
77
+ , ["*****??", ["abc"], null, ["abc"]]
78
+ , ["?*****?c", ["abc"], null, ["abc"]]
79
+ , ["?***?****c", ["abc"], null, ["abc"]]
80
+ , ["?***?****?", ["abc"], null, ["abc"]]
81
+ , ["?***?****", ["abc"], null, ["abc"]]
82
+ , ["*******c", ["abc"], null, ["abc"]]
83
+ , ["*******?", ["abc"], null, ["abc"]]
84
+ , ["a*cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]]
85
+ , ["a**?**cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]]
86
+ , ["a**?**cd**?**??k***", ["abcdecdhjk"], null, ["abcdecdhjk"]]
87
+ , ["a**?**cd**?**??***k", ["abcdecdhjk"], null, ["abcdecdhjk"]]
88
+ , ["a**?**cd**?**??***k**", ["abcdecdhjk"], null, ["abcdecdhjk"]]
89
+ , ["a****c**?**??*****", ["abcdecdhjk"], null, ["abcdecdhjk"]]
90
+ , ["[-abc]", ["-"], null, ["-"]]
91
+ , ["[abc-]", ["-"], null, ["-"]]
92
+ , ["\\", ["\\"], null, ["\\"]]
93
+ , ["[\\\\]", ["\\"], null, ["\\"]]
94
+ , ["[[]", ["["], null, ["["]]
95
+ , ["[", ["["], null, ["["]]
96
+ , ["[*", ["[abc"], null, ["[abc"]]
97
+ , "a right bracket shall lose its special meaning and\n" +
98
+ "represent itself in a bracket expression if it occurs\n" +
99
+ "first in the list. -- POSIX.2 2.8.3.2"
100
+ , ["[]]", ["]"], null, ["]"]]
101
+ , ["[]-]", ["]"], null, ["]"]]
102
+ , ["[a-\z]", ["p"], null, ["p"]]
103
+ , ["??**********?****?", [], { null: true }, ["abc"]]
104
+ , ["??**********?****c", [], { null: true }, ["abc"]]
105
+ , ["?************c****?****", [], { null: true }, ["abc"]]
106
+ , ["*c*?**", [], { null: true }, ["abc"]]
107
+ , ["a*****c*?**", [], { null: true }, ["abc"]]
108
+ , ["a********???*******", [], { null: true }, ["abc"]]
109
+ , ["[]", [], { null: true }, ["a"]]
110
+ , ["[abc", [], { null: true }, ["["]]
111
+
112
+ , "nocase tests"
113
+ , ["XYZ", ["xYz"], { nocase: true, null: true }
114
+ , ["xYz", "ABC", "IjK"]]
115
+ , ["ab*", ["ABC"], { nocase: true, null: true }
116
+ , ["xYz", "ABC", "IjK"]]
117
+ , ["[ia]?[ck]", ["ABC", "IjK"], { nocase: true, null: true }
118
+ , ["xYz", "ABC", "IjK"]]
119
+
120
+ // [ pattern, [matches], MM opts, files, TAP opts]
121
+ , "onestar/twostar"
122
+ , ["{/*,*}", [], {null: true}, ["/asdf/asdf/asdf"]]
123
+ , ["{/?,*}", ["/a", "bb"], {null: true}
124
+ , ["/a", "/b/b", "/a/b/c", "bb"]]
125
+
126
+ , "dots should not match unless requested"
127
+ , ["**", ["a/b"], {}, ["a/b", "a/.d", ".a/.d"]]
128
+
129
+ // .. and . can only match patterns starting with .,
130
+ // even when options.dot is set.
131
+ , function () {
132
+ files = ["a/./b", "a/../b", "a/c/b", "a/.d/b"]
133
+ }
134
+ , ["a/*/b", ["a/c/b", "a/.d/b"], {dot: true}]
135
+ , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: true}]
136
+ , ["a/*/b", ["a/c/b"], {dot:false}]
137
+ , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: false}]
138
+
139
+
140
+ // this also tests that changing the options needs
141
+ // to change the cache key, even if the pattern is
142
+ // the same!
143
+ , ["**", ["a/b","a/.d",".a/.d"], { dot: true }
144
+ , [ ".a/.d", "a/.d", "a/b"]]
145
+
146
+ , "paren sets cannot contain slashes"
147
+ , ["*(a/b)", ["*(a/b)"], {nonull: true}, ["a/b"]]
148
+
149
+ // brace sets trump all else.
150
+ //
151
+ // invalid glob pattern. fails on bash4 and bsdglob.
152
+ // however, in this implementation, it's easier just
153
+ // to do the intuitive thing, and let brace-expansion
154
+ // actually come before parsing any extglob patterns,
155
+ // like the documentation seems to say.
156
+ //
157
+ // XXX: if anyone complains about this, either fix it
158
+ // or tell them to grow up and stop complaining.
159
+ //
160
+ // bash/bsdglob says this:
161
+ // , ["*(a|{b),c)}", ["*(a|{b),c)}"], {}, ["a", "ab", "ac", "ad"]]
162
+ // but we do this instead:
163
+ , ["*(a|{b),c)}", ["a", "ab", "ac"], {}, ["a", "ab", "ac", "ad"]]
164
+
165
+ // test partial parsing in the presence of comment/negation chars
166
+ , ["[!a*", ["[!ab"], {}, ["[!ab", "[ab"]]
167
+ , ["[#a*", ["[#ab"], {}, ["[#ab", "[ab"]]
168
+
169
+ // like: {a,b|c\\,d\\\|e} except it's unclosed, so it has to be escaped.
170
+ , ["+(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g"
171
+ , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g"]
172
+ , {}
173
+ , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g", "a", "b\\c"]]
174
+
175
+
176
+ // crazy nested {,,} and *(||) tests.
177
+ , function () {
178
+ files = [ "a", "b", "c", "d"
179
+ , "ab", "ac", "ad"
180
+ , "bc", "cb"
181
+ , "bc,d", "c,db", "c,d"
182
+ , "d)", "(b|c", "*(b|c"
183
+ , "b|c", "b|cc", "cb|c"
184
+ , "x(a|b|c)", "x(a|c)"
185
+ , "(a|b|c)", "(a|c)"]
186
+ }
187
+ , ["*(a|{b,c})", ["a", "b", "c", "ab", "ac"]]
188
+ , ["{a,*(b|c,d)}", ["a","(b|c", "*(b|c", "d)"]]
189
+ // a
190
+ // *(b|c)
191
+ // *(b|d)
192
+ , ["{a,*(b|{c,d})}", ["a","b", "bc", "cb", "c", "d"]]
193
+ , ["*(a|{b|c,c})", ["a", "b", "c", "ab", "ac", "bc", "cb"]]
194
+
195
+
196
+ // test various flag settings.
197
+ , [ "*(a|{b|c,c})", ["x(a|b|c)", "x(a|c)", "(a|b|c)", "(a|c)"]
198
+ , { noext: true } ]
199
+ , ["a?b", ["x/y/acb", "acb/"], {matchBase: true}
200
+ , ["x/y/acb", "acb/", "acb/d/e", "x/y/acb/d"] ]
201
+ , ["#*", ["#a", "#b"], {nocomment: true}, ["#a", "#b", "c#d"]]
202
+
203
+
204
+ // begin channelling Boole and deMorgan...
205
+ , "negation tests"
206
+ , function () {
207
+ files = ["d", "e", "!ab", "!abc", "a!b", "\\!a"]
208
+ }
209
+
210
+ // anything that is NOT a* matches.
211
+ , ["!a*", ["\\!a", "d", "e", "!ab", "!abc"]]
212
+
213
+ // anything that IS !a* matches.
214
+ , ["!a*", ["!ab", "!abc"], {nonegate: true}]
215
+
216
+ // anything that IS a* matches
217
+ , ["!!a*", ["a!b"]]
218
+
219
+ // anything that is NOT !a* matches
220
+ , ["!\\!a*", ["a!b", "d", "e", "\\!a"]]
221
+
222
+ // negation nestled within a pattern
223
+ , function () {
224
+ files = [ "foo.js"
225
+ , "foo.bar"
226
+ // can't match this one without negative lookbehind.
227
+ , "foo.js.js"
228
+ , "blar.js"
229
+ , "foo."
230
+ , "boo.js.boo" ]
231
+ }
232
+ , ["*.!(js)", ["foo.bar", "foo.", "boo.js.boo"] ]
233
+
234
+ ].forEach(function (c) {
235
+ if (typeof c === "function") return c()
236
+ if (typeof c === "string") return t.comment(c)
237
+
238
+ var pattern = c[0]
239
+ , expect = c[1].sort(alpha)
240
+ , options = c[2]
241
+ , f = c[3] || files
242
+ , tapOpts = c[4] || {}
243
+
244
+ // options.debug = true
245
+ var Class = mm.defaults(options).Minimatch
246
+ var m = new Class(pattern, {})
247
+ var r = m.makeRe()
248
+ tapOpts.re = String(r) || JSON.stringify(r)
249
+ tapOpts.files = JSON.stringify(f)
250
+ tapOpts.pattern = pattern
251
+ tapOpts.set = m.set
252
+ tapOpts.negated = m.negate
253
+
254
+ var actual = mm.match(f, pattern, options)
255
+ actual.sort(alpha)
256
+
257
+ t.equivalent( actual, expect
258
+ , JSON.stringify(pattern) + " " + JSON.stringify(expect)
259
+ , tapOpts )
260
+ })
261
+
262
+ t.comment("time=" + (Date.now() - start) + "ms")
263
+ t.end()
264
+ })
265
+
266
+ tap.test("global leak test", function (t) {
267
+ var globalAfter = Object.keys(global)
268
+ t.equivalent(globalAfter, globalBefore, "no new globals, please")
269
+ t.end()
270
+ })
271
+
272
+ function alpha (a, b) {
273
+ return a > b ? 1 : -1
274
+ }
@@ -0,0 +1,8 @@
1
+ var test = require('tap').test
2
+ var minimatch = require('../')
3
+
4
+ test('extglob ending with statechar', function(t) {
5
+ t.notOk(minimatch('ax', 'a?(b*)'))
6
+ t.ok(minimatch('ax', '?(a*|b)'))
7
+ t.end()
8
+ })
@@ -0,0 +1,26 @@
1
+ Copyright (c) 2012, Artur Adib <aadib@mozilla.com>
2
+ All rights reserved.
3
+
4
+ You may use this project under the terms of the New BSD license as follows:
5
+
6
+ Redistribution and use in source and binary forms, with or without
7
+ modification, are permitted provided that the following conditions are met:
8
+ * Redistributions of source code must retain the above copyright
9
+ notice, this list of conditions and the following disclaimer.
10
+ * Redistributions in binary form must reproduce the above copyright
11
+ notice, this list of conditions and the following disclaimer in the
12
+ documentation and/or other materials provided with the distribution.
13
+ * Neither the name of Artur Adib nor the
14
+ names of the contributors may be used to endorse or promote products
15
+ derived from this software without specific prior written permission.
16
+
17
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
+ ARE DISCLAIMED. IN NO EVENT SHALL ARTUR ADIB BE LIABLE FOR ANY
21
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,569 @@
1
+ # ShellJS - Unix shell commands for Node.js [![Build Status](https://secure.travis-ci.org/arturadib/shelljs.png)](http://travis-ci.org/arturadib/shelljs)
2
+
3
+ ShellJS is a portable **(Windows/Linux/OS X)** implementation of Unix shell commands on top of the Node.js API. You can use it to eliminate your shell script's dependency on Unix while still keeping its familiar and powerful commands. You can also install it globally so you can run it from outside Node projects - say goodbye to those gnarly Bash scripts!
4
+
5
+ The project is [unit-tested](http://travis-ci.org/arturadib/shelljs) and battled-tested in projects like:
6
+
7
+ + [PDF.js](http://github.com/mozilla/pdf.js) - Firefox's next-gen PDF reader
8
+ + [Firebug](http://getfirebug.com/) - Firefox's infamous debugger
9
+ + [JSHint](http://jshint.com) - Most popular JavaScript linter
10
+ + [Zepto](http://zeptojs.com) - jQuery-compatible JavaScript library for modern browsers
11
+ + [Yeoman](http://yeoman.io/) - Web application stack and development tool
12
+ + [Deployd.com](http://deployd.com) - Open source PaaS for quick API backend generation
13
+
14
+ and [many more](https://npmjs.org/browse/depended/shelljs).
15
+
16
+ ## Installing
17
+
18
+ Via npm:
19
+
20
+ ```bash
21
+ $ npm install [-g] shelljs
22
+ ```
23
+
24
+ If the global option `-g` is specified, the binary `shjs` will be installed. This makes it possible to
25
+ run ShellJS scripts much like any shell script from the command line, i.e. without requiring a `node_modules` folder:
26
+
27
+ ```bash
28
+ $ shjs my_script
29
+ ```
30
+
31
+ You can also just copy `shell.js` into your project's directory, and `require()` accordingly.
32
+
33
+
34
+ ## Examples
35
+
36
+ ### JavaScript
37
+
38
+ ```javascript
39
+ require('shelljs/global');
40
+
41
+ if (!which('git')) {
42
+ echo('Sorry, this script requires git');
43
+ exit(1);
44
+ }
45
+
46
+ // Copy files to release dir
47
+ mkdir('-p', 'out/Release');
48
+ cp('-R', 'stuff/*', 'out/Release');
49
+
50
+ // Replace macros in each .js file
51
+ cd('lib');
52
+ ls('*.js').forEach(function(file) {
53
+ sed('-i', 'BUILD_VERSION', 'v0.1.2', file);
54
+ sed('-i', /.*REMOVE_THIS_LINE.*\n/, '', file);
55
+ sed('-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, cat('macro.js'), file);
56
+ });
57
+ cd('..');
58
+
59
+ // Run external tool synchronously
60
+ if (exec('git commit -am "Auto-commit"').code !== 0) {
61
+ echo('Error: Git commit failed');
62
+ exit(1);
63
+ }
64
+ ```
65
+
66
+ ### CoffeeScript
67
+
68
+ ```coffeescript
69
+ require 'shelljs/global'
70
+
71
+ if not which 'git'
72
+ echo 'Sorry, this script requires git'
73
+ exit 1
74
+
75
+ # Copy files to release dir
76
+ mkdir '-p', 'out/Release'
77
+ cp '-R', 'stuff/*', 'out/Release'
78
+
79
+ # Replace macros in each .js file
80
+ cd 'lib'
81
+ for file in ls '*.js'
82
+ sed '-i', 'BUILD_VERSION', 'v0.1.2', file
83
+ sed '-i', /.*REMOVE_THIS_LINE.*\n/, '', file
84
+ sed '-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, cat 'macro.js', file
85
+ cd '..'
86
+
87
+ # Run external tool synchronously
88
+ if (exec 'git commit -am "Auto-commit"').code != 0
89
+ echo 'Error: Git commit failed'
90
+ exit 1
91
+ ```
92
+
93
+ ## Global vs. Local
94
+
95
+ The example above uses the convenience script `shelljs/global` to reduce verbosity. If polluting your global namespace is not desirable, simply require `shelljs`.
96
+
97
+ Example:
98
+
99
+ ```javascript
100
+ var shell = require('shelljs');
101
+ shell.echo('hello world');
102
+ ```
103
+
104
+ ## Make tool
105
+
106
+ A convenience script `shelljs/make` is also provided to mimic the behavior of a Unix Makefile. In this case all shell objects are global, and command line arguments will cause the script to execute only the corresponding function in the global `target` object. To avoid redundant calls, target functions are executed only once per script.
107
+
108
+ Example (CoffeeScript):
109
+
110
+ ```coffeescript
111
+ require 'shelljs/make'
112
+
113
+ target.all = ->
114
+ target.bundle()
115
+ target.docs()
116
+
117
+ target.bundle = ->
118
+ cd __dirname
119
+ mkdir 'build'
120
+ cd 'lib'
121
+ (cat '*.js').to '../build/output.js'
122
+
123
+ target.docs = ->
124
+ cd __dirname
125
+ mkdir 'docs'
126
+ cd 'lib'
127
+ for file in ls '*.js'
128
+ text = grep '//@', file # extract special comments
129
+ text.replace '//@', '' # remove comment tags
130
+ text.to 'docs/my_docs.md'
131
+ ```
132
+
133
+ To run the target `all`, call the above script without arguments: `$ node make`. To run the target `docs`: `$ node make docs`, and so on.
134
+
135
+
136
+
137
+ <!--
138
+
139
+ DO NOT MODIFY BEYOND THIS POINT - IT'S AUTOMATICALLY GENERATED
140
+
141
+ -->
142
+
143
+
144
+ ## Command reference
145
+
146
+
147
+ All commands run synchronously, unless otherwise stated.
148
+
149
+
150
+ ### cd('dir')
151
+ Changes to directory `dir` for the duration of the script
152
+
153
+
154
+ ### pwd()
155
+ Returns the current directory.
156
+
157
+
158
+ ### ls([options ,] path [,path ...])
159
+ ### ls([options ,] path_array)
160
+ Available options:
161
+
162
+ + `-R`: recursive
163
+ + `-A`: all files (include files beginning with `.`, except for `.` and `..`)
164
+
165
+ Examples:
166
+
167
+ ```javascript
168
+ ls('projs/*.js');
169
+ ls('-R', '/users/me', '/tmp');
170
+ ls('-R', ['/users/me', '/tmp']); // same as above
171
+ ```
172
+
173
+ Returns array of files in the given path, or in current directory if no path provided.
174
+
175
+
176
+ ### find(path [,path ...])
177
+ ### find(path_array)
178
+ Examples:
179
+
180
+ ```javascript
181
+ find('src', 'lib');
182
+ find(['src', 'lib']); // same as above
183
+ find('.').filter(function(file) { return file.match(/\.js$/); });
184
+ ```
185
+
186
+ Returns array of all files (however deep) in the given paths.
187
+
188
+ The main difference from `ls('-R', path)` is that the resulting file names
189
+ include the base directories, e.g. `lib/resources/file1` instead of just `file1`.
190
+
191
+
192
+ ### cp([options ,] source [,source ...], dest)
193
+ ### cp([options ,] source_array, dest)
194
+ Available options:
195
+
196
+ + `-f`: force
197
+ + `-r, -R`: recursive
198
+
199
+ Examples:
200
+
201
+ ```javascript
202
+ cp('file1', 'dir1');
203
+ cp('-Rf', '/tmp/*', '/usr/local/*', '/home/tmp');
204
+ cp('-Rf', ['/tmp/*', '/usr/local/*'], '/home/tmp'); // same as above
205
+ ```
206
+
207
+ Copies files. The wildcard `*` is accepted.
208
+
209
+
210
+ ### rm([options ,] file [, file ...])
211
+ ### rm([options ,] file_array)
212
+ Available options:
213
+
214
+ + `-f`: force
215
+ + `-r, -R`: recursive
216
+
217
+ Examples:
218
+
219
+ ```javascript
220
+ rm('-rf', '/tmp/*');
221
+ rm('some_file.txt', 'another_file.txt');
222
+ rm(['some_file.txt', 'another_file.txt']); // same as above
223
+ ```
224
+
225
+ Removes files. The wildcard `*` is accepted.
226
+
227
+
228
+ ### mv(source [, source ...], dest')
229
+ ### mv(source_array, dest')
230
+ Available options:
231
+
232
+ + `f`: force
233
+
234
+ Examples:
235
+
236
+ ```javascript
237
+ mv('-f', 'file', 'dir/');
238
+ mv('file1', 'file2', 'dir/');
239
+ mv(['file1', 'file2'], 'dir/'); // same as above
240
+ ```
241
+
242
+ Moves files. The wildcard `*` is accepted.
243
+
244
+
245
+ ### mkdir([options ,] dir [, dir ...])
246
+ ### mkdir([options ,] dir_array)
247
+ Available options:
248
+
249
+ + `p`: full path (will create intermediate dirs if necessary)
250
+
251
+ Examples:
252
+
253
+ ```javascript
254
+ mkdir('-p', '/tmp/a/b/c/d', '/tmp/e/f/g');
255
+ mkdir('-p', ['/tmp/a/b/c/d', '/tmp/e/f/g']); // same as above
256
+ ```
257
+
258
+ Creates directories.
259
+
260
+
261
+ ### test(expression)
262
+ Available expression primaries:
263
+
264
+ + `'-b', 'path'`: true if path is a block device
265
+ + `'-c', 'path'`: true if path is a character device
266
+ + `'-d', 'path'`: true if path is a directory
267
+ + `'-e', 'path'`: true if path exists
268
+ + `'-f', 'path'`: true if path is a regular file
269
+ + `'-L', 'path'`: true if path is a symboilc link
270
+ + `'-p', 'path'`: true if path is a pipe (FIFO)
271
+ + `'-S', 'path'`: true if path is a socket
272
+
273
+ Examples:
274
+
275
+ ```javascript
276
+ if (test('-d', path)) { /* do something with dir */ };
277
+ if (!test('-f', path)) continue; // skip if it's a regular file
278
+ ```
279
+
280
+ Evaluates expression using the available primaries and returns corresponding value.
281
+
282
+
283
+ ### cat(file [, file ...])
284
+ ### cat(file_array)
285
+
286
+ Examples:
287
+
288
+ ```javascript
289
+ var str = cat('file*.txt');
290
+ var str = cat('file1', 'file2');
291
+ var str = cat(['file1', 'file2']); // same as above
292
+ ```
293
+
294
+ Returns a string containing the given file, or a concatenated string
295
+ containing the files if more than one file is given (a new line character is
296
+ introduced between each file). Wildcard `*` accepted.
297
+
298
+
299
+ ### 'string'.to(file)
300
+
301
+ Examples:
302
+
303
+ ```javascript
304
+ cat('input.txt').to('output.txt');
305
+ ```
306
+
307
+ Analogous to the redirection operator `>` in Unix, but works with JavaScript strings (such as
308
+ those returned by `cat`, `grep`, etc). _Like Unix redirections, `to()` will overwrite any existing file!_
309
+
310
+
311
+ ### 'string'.toEnd(file)
312
+
313
+ Examples:
314
+
315
+ ```javascript
316
+ cat('input.txt').toEnd('output.txt');
317
+ ```
318
+
319
+ Analogous to the redirect-and-append operator `>>` in Unix, but works with JavaScript strings (such as
320
+ those returned by `cat`, `grep`, etc).
321
+
322
+
323
+ ### sed([options ,] search_regex, replacement, file)
324
+ Available options:
325
+
326
+ + `-i`: Replace contents of 'file' in-place. _Note that no backups will be created!_
327
+
328
+ Examples:
329
+
330
+ ```javascript
331
+ sed('-i', 'PROGRAM_VERSION', 'v0.1.3', 'source.js');
332
+ sed(/.*DELETE_THIS_LINE.*\n/, '', 'source.js');
333
+ ```
334
+
335
+ Reads an input string from `file` and performs a JavaScript `replace()` on the input
336
+ using the given search regex and replacement string or function. Returns the new string after replacement.
337
+
338
+
339
+ ### grep([options ,] regex_filter, file [, file ...])
340
+ ### grep([options ,] regex_filter, file_array)
341
+ Available options:
342
+
343
+ + `-v`: Inverse the sense of the regex and print the lines not matching the criteria.
344
+
345
+ Examples:
346
+
347
+ ```javascript
348
+ grep('-v', 'GLOBAL_VARIABLE', '*.js');
349
+ grep('GLOBAL_VARIABLE', '*.js');
350
+ ```
351
+
352
+ Reads input string from given files and returns a string containing all lines of the
353
+ file that match the given `regex_filter`. Wildcard `*` accepted.
354
+
355
+
356
+ ### which(command)
357
+
358
+ Examples:
359
+
360
+ ```javascript
361
+ var nodeExec = which('node');
362
+ ```
363
+
364
+ Searches for `command` in the system's PATH. On Windows looks for `.exe`, `.cmd`, and `.bat` extensions.
365
+ Returns string containing the absolute path to the command.
366
+
367
+
368
+ ### echo(string [,string ...])
369
+
370
+ Examples:
371
+
372
+ ```javascript
373
+ echo('hello world');
374
+ var str = echo('hello world');
375
+ ```
376
+
377
+ Prints string to stdout, and returns string with additional utility methods
378
+ like `.to()`.
379
+
380
+
381
+ ### pushd([options,] [dir | '-N' | '+N'])
382
+
383
+ Available options:
384
+
385
+ + `-n`: Suppresses the normal change of directory when adding directories to the stack, so that only the stack is manipulated.
386
+
387
+ Arguments:
388
+
389
+ + `dir`: Makes the current working directory be the top of the stack, and then executes the equivalent of `cd dir`.
390
+ + `+N`: Brings the Nth directory (counting from the left of the list printed by dirs, starting with zero) to the top of the list by rotating the stack.
391
+ + `-N`: Brings the Nth directory (counting from the right of the list printed by dirs, starting with zero) to the top of the list by rotating the stack.
392
+
393
+ Examples:
394
+
395
+ ```javascript
396
+ // process.cwd() === '/usr'
397
+ pushd('/etc'); // Returns /etc /usr
398
+ pushd('+1'); // Returns /usr /etc
399
+ ```
400
+
401
+ Save the current directory on the top of the directory stack and then cd to `dir`. With no arguments, pushd exchanges the top two directories. Returns an array of paths in the stack.
402
+
403
+ ### popd([options,] ['-N' | '+N'])
404
+
405
+ Available options:
406
+
407
+ + `-n`: Suppresses the normal change of directory when removing directories from the stack, so that only the stack is manipulated.
408
+
409
+ Arguments:
410
+
411
+ + `+N`: Removes the Nth directory (counting from the left of the list printed by dirs), starting with zero.
412
+ + `-N`: Removes the Nth directory (counting from the right of the list printed by dirs), starting with zero.
413
+
414
+ Examples:
415
+
416
+ ```javascript
417
+ echo(process.cwd()); // '/usr'
418
+ pushd('/etc'); // '/etc /usr'
419
+ echo(process.cwd()); // '/etc'
420
+ popd(); // '/usr'
421
+ echo(process.cwd()); // '/usr'
422
+ ```
423
+
424
+ When no arguments are given, popd removes the top directory from the stack and performs a cd to the new top directory. The elements are numbered from 0 starting at the first directory listed with dirs; i.e., popd is equivalent to popd +0. Returns an array of paths in the stack.
425
+
426
+ ### dirs([options | '+N' | '-N'])
427
+
428
+ Available options:
429
+
430
+ + `-c`: Clears the directory stack by deleting all of the elements.
431
+
432
+ Arguments:
433
+
434
+ + `+N`: Displays the Nth directory (counting from the left of the list printed by dirs when invoked without options), starting with zero.
435
+ + `-N`: Displays the Nth directory (counting from the right of the list printed by dirs when invoked without options), starting with zero.
436
+
437
+ Display the list of currently remembered directories. Returns an array of paths in the stack, or a single path if +N or -N was specified.
438
+
439
+ See also: pushd, popd
440
+
441
+
442
+ ### ln(options, source, dest)
443
+ ### ln(source, dest)
444
+ Available options:
445
+
446
+ + `s`: symlink
447
+ + `f`: force
448
+
449
+ Examples:
450
+
451
+ ```javascript
452
+ ln('file', 'newlink');
453
+ ln('-sf', 'file', 'existing');
454
+ ```
455
+
456
+ Links source to dest. Use -f to force the link, should dest already exist.
457
+
458
+
459
+ ### exit(code)
460
+ Exits the current process with the given exit code.
461
+
462
+ ### env['VAR_NAME']
463
+ Object containing environment variables (both getter and setter). Shortcut to process.env.
464
+
465
+ ### exec(command [, options] [, callback])
466
+ Available options (all `false` by default):
467
+
468
+ + `async`: Asynchronous execution. Defaults to true if a callback is provided.
469
+ + `silent`: Do not echo program output to console.
470
+
471
+ Examples:
472
+
473
+ ```javascript
474
+ var version = exec('node --version', {silent:true}).output;
475
+
476
+ var child = exec('some_long_running_process', {async:true});
477
+ child.stdout.on('data', function(data) {
478
+ /* ... do something with data ... */
479
+ });
480
+
481
+ exec('some_long_running_process', function(code, output) {
482
+ console.log('Exit code:', code);
483
+ console.log('Program output:', output);
484
+ });
485
+ ```
486
+
487
+ Executes the given `command` _synchronously_, unless otherwise specified.
488
+ When in synchronous mode returns the object `{ code:..., output:... }`, containing the program's
489
+ `output` (stdout + stderr) and its exit `code`. Otherwise returns the child process object, and
490
+ the `callback` gets the arguments `(code, output)`.
491
+
492
+ **Note:** For long-lived processes, it's best to run `exec()` asynchronously as
493
+ the current synchronous implementation uses a lot of CPU. This should be getting
494
+ fixed soon.
495
+
496
+
497
+ ### chmod(octal_mode || octal_string, file)
498
+ ### chmod(symbolic_mode, file)
499
+
500
+ Available options:
501
+
502
+ + `-v`: output a diagnostic for every file processed
503
+ + `-c`: like verbose but report only when a change is made
504
+ + `-R`: change files and directories recursively
505
+
506
+ Examples:
507
+
508
+ ```javascript
509
+ chmod(755, '/Users/brandon');
510
+ chmod('755', '/Users/brandon'); // same as above
511
+ chmod('u+x', '/Users/brandon');
512
+ ```
513
+
514
+ Alters the permissions of a file or directory by either specifying the
515
+ absolute permissions in octal form or expressing the changes in symbols.
516
+ This command tries to mimic the POSIX behavior as much as possible.
517
+ Notable exceptions:
518
+
519
+ + In symbolic modes, 'a-r' and '-r' are identical. No consideration is
520
+ given to the umask.
521
+ + There is no "quiet" option since default behavior is to run silent.
522
+
523
+
524
+ ## Non-Unix commands
525
+
526
+
527
+ ### tempdir()
528
+
529
+ Examples:
530
+
531
+ ```javascript
532
+ var tmp = tempdir(); // "/tmp" for most *nix platforms
533
+ ```
534
+
535
+ Searches and returns string containing a writeable, platform-dependent temporary directory.
536
+ Follows Python's [tempfile algorithm](http://docs.python.org/library/tempfile.html#tempfile.tempdir).
537
+
538
+
539
+ ### error()
540
+ Tests if error occurred in the last command. Returns `null` if no error occurred,
541
+ otherwise returns string explaining the error
542
+
543
+
544
+ ## Configuration
545
+
546
+
547
+ ### config.silent
548
+ Example:
549
+
550
+ ```javascript
551
+ var silentState = config.silent; // save old silent state
552
+ config.silent = true;
553
+ /* ... */
554
+ config.silent = silentState; // restore old silent state
555
+ ```
556
+
557
+ Suppresses all command output if `true`, except for `echo()` calls.
558
+ Default is `false`.
559
+
560
+ ### config.fatal
561
+ Example:
562
+
563
+ ```javascript
564
+ config.fatal = true;
565
+ cp('this_file_does_not_exist', '/dev/null'); // dies here
566
+ /* more commands... */
567
+ ```
568
+
569
+ If `true` the script will die on errors. Default is `false`.