bibtex_to_scrapbox 0.1.0

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 (627) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +19 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +5 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +6 -0
  7. data/LICENSE +22 -0
  8. data/README.md +43 -0
  9. data/Rakefile +6 -0
  10. data/bibtex_to_scrapbox.gemspec +29 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/exe/bibtex_to_scrapbox +7 -0
  14. data/gems/bin/htmldiff +29 -0
  15. data/gems/bin/ldiff +29 -0
  16. data/gems/bin/rake +27 -0
  17. data/gems/bin/rspec +27 -0
  18. data/gems/bin/thor +27 -0
  19. data/gems/extensions/x86_64-darwin-16/2.4.0-static/unicode-0.4.4.4/gem.build_complete +0 -0
  20. data/gems/extensions/x86_64-darwin-16/2.4.0-static/unicode-0.4.4.4/gem_make.out +288 -0
  21. data/gems/extensions/x86_64-darwin-16/2.4.0-static/unicode-0.4.4.4/unicode/unicode_native.bundle +0 -0
  22. data/gems/gems/bibtex-ruby-4.4.4/Gemfile +66 -0
  23. data/gems/gems/bibtex-ruby-4.4.4/Guardfile +22 -0
  24. data/gems/gems/bibtex-ruby-4.4.4/History.txt +306 -0
  25. data/gems/gems/bibtex-ruby-4.4.4/LICENSE +621 -0
  26. data/gems/gems/bibtex-ruby-4.4.4/Manifest +100 -0
  27. data/gems/gems/bibtex-ruby-4.4.4/README.md +615 -0
  28. data/gems/gems/bibtex-ruby-4.4.4/Rakefile +123 -0
  29. data/gems/gems/bibtex-ruby-4.4.4/bibtex-ruby.gemspec +38 -0
  30. data/gems/gems/bibtex-ruby-4.4.4/examples/bib2html.rb +42 -0
  31. data/gems/gems/bibtex-ruby-4.4.4/examples/bib2yaml.rb +12 -0
  32. data/gems/gems/bibtex-ruby-4.4.4/examples/markdown.bib +39 -0
  33. data/gems/gems/bibtex-ruby-4.4.4/features/bibtex.feature +96 -0
  34. data/gems/gems/bibtex-ruby-4.4.4/features/entries.feature +67 -0
  35. data/gems/gems/bibtex-ruby-4.4.4/features/issues/braced_strings.feature +48 -0
  36. data/gems/gems/bibtex-ruby-4.4.4/features/issues/crossref.feature +62 -0
  37. data/gems/gems/bibtex-ruby-4.4.4/features/issues/latex_filter.feature +171 -0
  38. data/gems/gems/bibtex-ruby-4.4.4/features/issues/multiline_strings.feature +14 -0
  39. data/gems/gems/bibtex-ruby-4.4.4/features/issues/name_parsing.feature +19 -0
  40. data/gems/gems/bibtex-ruby-4.4.4/features/issues/non_ascii_default_keys.feature +20 -0
  41. data/gems/gems/bibtex-ruby-4.4.4/features/issues/non_ascii_keys.feature +17 -0
  42. data/gems/gems/bibtex-ruby-4.4.4/features/issues/number_keys.feature +45 -0
  43. data/gems/gems/bibtex-ruby-4.4.4/features/issues/parse_months.feature +43 -0
  44. data/gems/gems/bibtex-ruby-4.4.4/features/issues/slash_keys.feature +21 -0
  45. data/gems/gems/bibtex-ruby-4.4.4/features/issues/trailing_comma.feature +21 -0
  46. data/gems/gems/bibtex-ruby-4.4.4/features/issues/whitespace_keys.feature +23 -0
  47. data/gems/gems/bibtex-ruby-4.4.4/features/names.feature +86 -0
  48. data/gems/gems/bibtex-ruby-4.4.4/features/preambles.feature +27 -0
  49. data/gems/gems/bibtex-ruby-4.4.4/features/query.feature +102 -0
  50. data/gems/gems/bibtex-ruby-4.4.4/features/replacement.feature +68 -0
  51. data/gems/gems/bibtex-ruby-4.4.4/features/step_definitions/bibtex_steps.rb +119 -0
  52. data/gems/gems/bibtex-ruby-4.4.4/features/step_definitions/name_steps.rb +18 -0
  53. data/gems/gems/bibtex-ruby-4.4.4/features/strings.feature +53 -0
  54. data/gems/gems/bibtex-ruby-4.4.4/features/support/env.rb +21 -0
  55. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex.rb +83 -0
  56. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex/bibliography.rb +594 -0
  57. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex/bibliography/rdf_converter.rb +27 -0
  58. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex/bibtex.y +141 -0
  59. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex/compatibility.rb +25 -0
  60. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex/elements.rb +376 -0
  61. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex/entry.rb +690 -0
  62. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex/entry/bibtexml_converter.rb +44 -0
  63. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex/entry/citeproc_converter.rb +164 -0
  64. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex/entry/rdf_converter.rb +588 -0
  65. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex/error.rb +49 -0
  66. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex/extensions.rb +25 -0
  67. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex/filters.rb +55 -0
  68. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex/filters/latex.rb +13 -0
  69. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex/filters/linebreaks.rb +11 -0
  70. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex/lexer.rb +358 -0
  71. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex/name_parser.rb +563 -0
  72. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex/names.rb +315 -0
  73. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex/names.y +267 -0
  74. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex/parser.rb +474 -0
  75. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex/replaceable.rb +52 -0
  76. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex/ruby.rb +1 -0
  77. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex/utilities.rb +59 -0
  78. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex/value.rb +305 -0
  79. data/gems/gems/bibtex-ruby-4.4.4/lib/bibtex/version.rb +28 -0
  80. data/gems/gems/bibtex-ruby-4.4.4/test/benchmark.rb +84 -0
  81. data/gems/gems/bibtex-ruby-4.4.4/test/bibtex/entry/test_rdf_converter.rb +341 -0
  82. data/gems/gems/bibtex-ruby-4.4.4/test/bibtex/test_bibliography.rb +446 -0
  83. data/gems/gems/bibtex-ruby-4.4.4/test/bibtex/test_elements.rb +64 -0
  84. data/gems/gems/bibtex-ruby-4.4.4/test/bibtex/test_entry.rb +698 -0
  85. data/gems/gems/bibtex-ruby-4.4.4/test/bibtex/test_filters.rb +36 -0
  86. data/gems/gems/bibtex-ruby-4.4.4/test/bibtex/test_lexer.rb +42 -0
  87. data/gems/gems/bibtex-ruby-4.4.4/test/bibtex/test_name_parser.rb +29 -0
  88. data/gems/gems/bibtex-ruby-4.4.4/test/bibtex/test_names.rb +168 -0
  89. data/gems/gems/bibtex-ruby-4.4.4/test/bibtex/test_parser.rb +210 -0
  90. data/gems/gems/bibtex-ruby-4.4.4/test/bibtex/test_string.rb +83 -0
  91. data/gems/gems/bibtex-ruby-4.4.4/test/bibtex/test_utilities.rb +34 -0
  92. data/gems/gems/bibtex-ruby-4.4.4/test/bibtex/test_value.rb +189 -0
  93. data/gems/gems/bibtex-ruby-4.4.4/test/fixtures/bibdesk.bib +50 -0
  94. data/gems/gems/bibtex-ruby-4.4.4/test/fixtures/comment.bib +15 -0
  95. data/gems/gems/bibtex-ruby-4.4.4/test/fixtures/decoret.bib +83 -0
  96. data/gems/gems/bibtex-ruby-4.4.4/test/fixtures/empty.bib +0 -0
  97. data/gems/gems/bibtex-ruby-4.4.4/test/fixtures/entry.bib +24 -0
  98. data/gems/gems/bibtex-ruby-4.4.4/test/fixtures/errors.bib +67 -0
  99. data/gems/gems/bibtex-ruby-4.4.4/test/fixtures/no_bibtex.bib +9 -0
  100. data/gems/gems/bibtex-ruby-4.4.4/test/fixtures/preamble.bib +12 -0
  101. data/gems/gems/bibtex-ruby-4.4.4/test/fixtures/roundtrip.bib +11 -0
  102. data/gems/gems/bibtex-ruby-4.4.4/test/helper.rb +43 -0
  103. data/gems/gems/bibtex-ruby-4.4.4/test/macruby.d +21 -0
  104. data/gems/gems/bibtex-ruby-4.4.4/test/macruby.rb +22 -0
  105. data/gems/gems/bibtex-ruby-4.4.4/test/profile.rb +28 -0
  106. data/gems/gems/bibtex-ruby-4.4.4/test/test_bibtex.rb +127 -0
  107. data/gems/gems/bibtex-ruby-4.4.4/test/test_export.rb +33 -0
  108. data/gems/gems/diff-lcs-1.3/.rspec +1 -0
  109. data/gems/gems/diff-lcs-1.3/Code-of-Conduct.md +74 -0
  110. data/gems/gems/diff-lcs-1.3/Contributing.md +83 -0
  111. data/gems/gems/diff-lcs-1.3/History.md +220 -0
  112. data/gems/gems/diff-lcs-1.3/License.md +39 -0
  113. data/gems/gems/diff-lcs-1.3/Manifest.txt +37 -0
  114. data/gems/gems/diff-lcs-1.3/README.rdoc +84 -0
  115. data/gems/gems/diff-lcs-1.3/Rakefile +57 -0
  116. data/gems/gems/diff-lcs-1.3/autotest/discover.rb +1 -0
  117. data/gems/gems/diff-lcs-1.3/bin/htmldiff +32 -0
  118. data/gems/gems/diff-lcs-1.3/bin/ldiff +6 -0
  119. data/gems/gems/diff-lcs-1.3/docs/COPYING.txt +339 -0
  120. data/gems/gems/diff-lcs-1.3/docs/artistic.txt +127 -0
  121. data/gems/gems/diff-lcs-1.3/lib/diff-lcs.rb +3 -0
  122. data/gems/gems/diff-lcs-1.3/lib/diff/lcs.rb +725 -0
  123. data/gems/gems/diff-lcs-1.3/lib/diff/lcs/array.rb +7 -0
  124. data/gems/gems/diff-lcs-1.3/lib/diff/lcs/block.rb +37 -0
  125. data/gems/gems/diff-lcs-1.3/lib/diff/lcs/callbacks.rb +322 -0
  126. data/gems/gems/diff-lcs-1.3/lib/diff/lcs/change.rb +181 -0
  127. data/gems/gems/diff-lcs-1.3/lib/diff/lcs/htmldiff.rb +149 -0
  128. data/gems/gems/diff-lcs-1.3/lib/diff/lcs/hunk.rb +276 -0
  129. data/gems/gems/diff-lcs-1.3/lib/diff/lcs/internals.rb +307 -0
  130. data/gems/gems/diff-lcs-1.3/lib/diff/lcs/ldiff.rb +167 -0
  131. data/gems/gems/diff-lcs-1.3/lib/diff/lcs/string.rb +5 -0
  132. data/gems/gems/diff-lcs-1.3/spec/change_spec.rb +65 -0
  133. data/gems/gems/diff-lcs-1.3/spec/diff_spec.rb +47 -0
  134. data/gems/gems/diff-lcs-1.3/spec/fixtures/ds1.csv +50 -0
  135. data/gems/gems/diff-lcs-1.3/spec/fixtures/ds2.csv +51 -0
  136. data/gems/gems/diff-lcs-1.3/spec/hunk_spec.rb +72 -0
  137. data/gems/gems/diff-lcs-1.3/spec/issues_spec.rb +49 -0
  138. data/gems/gems/diff-lcs-1.3/spec/lcs_spec.rb +56 -0
  139. data/gems/gems/diff-lcs-1.3/spec/ldiff_spec.rb +47 -0
  140. data/gems/gems/diff-lcs-1.3/spec/patch_spec.rb +422 -0
  141. data/gems/gems/diff-lcs-1.3/spec/sdiff_spec.rb +214 -0
  142. data/gems/gems/diff-lcs-1.3/spec/spec_helper.rb +321 -0
  143. data/gems/gems/diff-lcs-1.3/spec/traverse_balanced_spec.rb +310 -0
  144. data/gems/gems/diff-lcs-1.3/spec/traverse_sequences_spec.rb +139 -0
  145. data/gems/gems/latex-decode-0.2.2/.gitignore +6 -0
  146. data/gems/gems/latex-decode-0.2.2/.travis.yml +18 -0
  147. data/gems/gems/latex-decode-0.2.2/Gemfile +21 -0
  148. data/gems/gems/latex-decode-0.2.2/LICENSE +621 -0
  149. data/gems/gems/latex-decode-0.2.2/README.md +65 -0
  150. data/gems/gems/latex-decode-0.2.2/Rakefile +41 -0
  151. data/gems/gems/latex-decode-0.2.2/cucumber.yml +1 -0
  152. data/gems/gems/latex-decode-0.2.2/features/brackets.feature +11 -0
  153. data/gems/gems/latex-decode-0.2.2/features/diacritics.feature +40 -0
  154. data/gems/gems/latex-decode-0.2.2/features/greek.feature +13 -0
  155. data/gems/gems/latex-decode-0.2.2/features/maths.feature +9 -0
  156. data/gems/gems/latex-decode-0.2.2/features/non-latex.feature +15 -0
  157. data/gems/gems/latex-decode-0.2.2/features/punctuation.feature +50 -0
  158. data/gems/gems/latex-decode-0.2.2/features/special_characters.feature +21 -0
  159. data/gems/gems/latex-decode-0.2.2/features/step_definitions/latex.rb +7 -0
  160. data/gems/gems/latex-decode-0.2.2/features/support/env.rb +14 -0
  161. data/gems/gems/latex-decode-0.2.2/features/symbols.feature +21 -0
  162. data/gems/gems/latex-decode-0.2.2/features/umlauts.feature +11 -0
  163. data/gems/gems/latex-decode-0.2.2/latex-decode.gemspec +33 -0
  164. data/gems/gems/latex-decode-0.2.2/lib/latex/decode.rb +54 -0
  165. data/gems/gems/latex-decode-0.2.2/lib/latex/decode/accents.rb +36 -0
  166. data/gems/gems/latex-decode-0.2.2/lib/latex/decode/base.rb +62 -0
  167. data/gems/gems/latex-decode-0.2.2/lib/latex/decode/compatibility.rb +89 -0
  168. data/gems/gems/latex-decode-0.2.2/lib/latex/decode/diacritics.rb +46 -0
  169. data/gems/gems/latex-decode-0.2.2/lib/latex/decode/greek.rb +61 -0
  170. data/gems/gems/latex-decode-0.2.2/lib/latex/decode/maths.rb +21 -0
  171. data/gems/gems/latex-decode-0.2.2/lib/latex/decode/punctuation.rb +59 -0
  172. data/gems/gems/latex-decode-0.2.2/lib/latex/decode/symbols.rb +225 -0
  173. data/gems/gems/latex-decode-0.2.2/lib/latex/decode/version.rb +5 -0
  174. data/gems/gems/rake-10.5.0/.autotest +7 -0
  175. data/gems/gems/rake-10.5.0/.rubocop.yml +27 -0
  176. data/gems/gems/rake-10.5.0/.togglerc +7 -0
  177. data/gems/gems/rake-10.5.0/CONTRIBUTING.rdoc +38 -0
  178. data/gems/gems/rake-10.5.0/History.rdoc +659 -0
  179. data/gems/gems/rake-10.5.0/MIT-LICENSE +21 -0
  180. data/gems/gems/rake-10.5.0/Manifest.txt +166 -0
  181. data/gems/gems/rake-10.5.0/README.rdoc +139 -0
  182. data/gems/gems/rake-10.5.0/Rakefile +81 -0
  183. data/gems/gems/rake-10.5.0/bin/rake +33 -0
  184. data/gems/gems/rake-10.5.0/doc/command_line_usage.rdoc +158 -0
  185. data/gems/gems/rake-10.5.0/doc/example/Rakefile1 +38 -0
  186. data/gems/gems/rake-10.5.0/doc/example/Rakefile2 +35 -0
  187. data/gems/gems/rake-10.5.0/doc/example/a.c +6 -0
  188. data/gems/gems/rake-10.5.0/doc/example/b.c +6 -0
  189. data/gems/gems/rake-10.5.0/doc/example/main.c +11 -0
  190. data/gems/gems/rake-10.5.0/doc/glossary.rdoc +42 -0
  191. data/gems/gems/rake-10.5.0/doc/jamis.rb +591 -0
  192. data/gems/gems/rake-10.5.0/doc/proto_rake.rdoc +127 -0
  193. data/gems/gems/rake-10.5.0/doc/rake.1 +141 -0
  194. data/gems/gems/rake-10.5.0/doc/rakefile.rdoc +624 -0
  195. data/gems/gems/rake-10.5.0/doc/rational.rdoc +151 -0
  196. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.4.14.rdoc +23 -0
  197. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.4.15.rdoc +35 -0
  198. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.5.0.rdoc +53 -0
  199. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.5.3.rdoc +78 -0
  200. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.5.4.rdoc +46 -0
  201. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.6.0.rdoc +141 -0
  202. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.7.0.rdoc +119 -0
  203. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.7.1.rdoc +59 -0
  204. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.7.2.rdoc +121 -0
  205. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.7.3.rdoc +47 -0
  206. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.8.0.rdoc +114 -0
  207. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.8.2.rdoc +165 -0
  208. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.8.3.rdoc +112 -0
  209. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.8.4.rdoc +147 -0
  210. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.8.5.rdoc +53 -0
  211. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.8.6.rdoc +37 -0
  212. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.8.7.rdoc +55 -0
  213. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.9.0.rdoc +112 -0
  214. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.9.1.rdoc +52 -0
  215. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.9.2.2.rdoc +55 -0
  216. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.9.2.rdoc +49 -0
  217. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.9.3.rdoc +102 -0
  218. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.9.4.rdoc +60 -0
  219. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.9.5.rdoc +55 -0
  220. data/gems/gems/rake-10.5.0/doc/release_notes/rake-0.9.6.rdoc +64 -0
  221. data/gems/gems/rake-10.5.0/doc/release_notes/rake-10.0.0.rdoc +178 -0
  222. data/gems/gems/rake-10.5.0/doc/release_notes/rake-10.0.1.rdoc +58 -0
  223. data/gems/gems/rake-10.5.0/doc/release_notes/rake-10.0.2.rdoc +53 -0
  224. data/gems/gems/rake-10.5.0/doc/release_notes/rake-10.0.3.rdoc +191 -0
  225. data/gems/gems/rake-10.5.0/doc/release_notes/rake-10.1.0.rdoc +61 -0
  226. data/gems/gems/rake-10.5.0/lib/rake.rb +79 -0
  227. data/gems/gems/rake-10.5.0/lib/rake/alt_system.rb +110 -0
  228. data/gems/gems/rake-10.5.0/lib/rake/application.rb +790 -0
  229. data/gems/gems/rake-10.5.0/lib/rake/backtrace.rb +23 -0
  230. data/gems/gems/rake-10.5.0/lib/rake/clean.rb +76 -0
  231. data/gems/gems/rake-10.5.0/lib/rake/cloneable.rb +16 -0
  232. data/gems/gems/rake-10.5.0/lib/rake/contrib/.document +1 -0
  233. data/gems/gems/rake-10.5.0/lib/rake/contrib/compositepublisher.rb +21 -0
  234. data/gems/gems/rake-10.5.0/lib/rake/contrib/ftptools.rb +137 -0
  235. data/gems/gems/rake-10.5.0/lib/rake/contrib/publisher.rb +81 -0
  236. data/gems/gems/rake-10.5.0/lib/rake/contrib/rubyforgepublisher.rb +18 -0
  237. data/gems/gems/rake-10.5.0/lib/rake/contrib/sshpublisher.rb +61 -0
  238. data/gems/gems/rake-10.5.0/lib/rake/contrib/sys.rb +4 -0
  239. data/gems/gems/rake-10.5.0/lib/rake/cpu_counter.rb +125 -0
  240. data/gems/gems/rake-10.5.0/lib/rake/default_loader.rb +14 -0
  241. data/gems/gems/rake-10.5.0/lib/rake/dsl_definition.rb +201 -0
  242. data/gems/gems/rake-10.5.0/lib/rake/early_time.rb +21 -0
  243. data/gems/gems/rake-10.5.0/lib/rake/ext/core.rb +25 -0
  244. data/gems/gems/rake-10.5.0/lib/rake/ext/module.rb +2 -0
  245. data/gems/gems/rake-10.5.0/lib/rake/ext/pathname.rb +25 -0
  246. data/gems/gems/rake-10.5.0/lib/rake/ext/string.rb +175 -0
  247. data/gems/gems/rake-10.5.0/lib/rake/ext/time.rb +18 -0
  248. data/gems/gems/rake-10.5.0/lib/rake/file_creation_task.rb +24 -0
  249. data/gems/gems/rake-10.5.0/lib/rake/file_list.rb +428 -0
  250. data/gems/gems/rake-10.5.0/lib/rake/file_task.rb +46 -0
  251. data/gems/gems/rake-10.5.0/lib/rake/file_utils.rb +128 -0
  252. data/gems/gems/rake-10.5.0/lib/rake/file_utils_ext.rb +144 -0
  253. data/gems/gems/rake-10.5.0/lib/rake/gempackagetask.rb +4 -0
  254. data/gems/gems/rake-10.5.0/lib/rake/invocation_chain.rb +56 -0
  255. data/gems/gems/rake-10.5.0/lib/rake/invocation_exception_mixin.rb +16 -0
  256. data/gems/gems/rake-10.5.0/lib/rake/late_time.rb +17 -0
  257. data/gems/gems/rake-10.5.0/lib/rake/linked_list.rb +103 -0
  258. data/gems/gems/rake-10.5.0/lib/rake/loaders/makefile.rb +53 -0
  259. data/gems/gems/rake-10.5.0/lib/rake/multi_task.rb +13 -0
  260. data/gems/gems/rake-10.5.0/lib/rake/name_space.rb +38 -0
  261. data/gems/gems/rake-10.5.0/lib/rake/packagetask.rb +199 -0
  262. data/gems/gems/rake-10.5.0/lib/rake/pathmap.rb +3 -0
  263. data/gems/gems/rake-10.5.0/lib/rake/phony.rb +15 -0
  264. data/gems/gems/rake-10.5.0/lib/rake/private_reader.rb +20 -0
  265. data/gems/gems/rake-10.5.0/lib/rake/promise.rb +99 -0
  266. data/gems/gems/rake-10.5.0/lib/rake/pseudo_status.rb +29 -0
  267. data/gems/gems/rake-10.5.0/lib/rake/rake_module.rb +38 -0
  268. data/gems/gems/rake-10.5.0/lib/rake/rake_test_loader.rb +22 -0
  269. data/gems/gems/rake-10.5.0/lib/rake/rdoctask.rb +4 -0
  270. data/gems/gems/rake-10.5.0/lib/rake/ruby182_test_unit_fix.rb +29 -0
  271. data/gems/gems/rake-10.5.0/lib/rake/rule_recursion_overflow_error.rb +20 -0
  272. data/gems/gems/rake-10.5.0/lib/rake/runtest.rb +27 -0
  273. data/gems/gems/rake-10.5.0/lib/rake/scope.rb +42 -0
  274. data/gems/gems/rake-10.5.0/lib/rake/task.rb +383 -0
  275. data/gems/gems/rake-10.5.0/lib/rake/task_argument_error.rb +7 -0
  276. data/gems/gems/rake-10.5.0/lib/rake/task_arguments.rb +98 -0
  277. data/gems/gems/rake-10.5.0/lib/rake/task_manager.rb +307 -0
  278. data/gems/gems/rake-10.5.0/lib/rake/tasklib.rb +24 -0
  279. data/gems/gems/rake-10.5.0/lib/rake/testtask.rb +213 -0
  280. data/gems/gems/rake-10.5.0/lib/rake/thread_history_display.rb +48 -0
  281. data/gems/gems/rake-10.5.0/lib/rake/thread_pool.rb +164 -0
  282. data/gems/gems/rake-10.5.0/lib/rake/trace_output.rb +22 -0
  283. data/gems/gems/rake-10.5.0/lib/rake/version.rb +7 -0
  284. data/gems/gems/rake-10.5.0/lib/rake/win32.rb +56 -0
  285. data/gems/gems/rake-10.5.0/rakelib/publish.rake +20 -0
  286. data/gems/gems/rake-10.5.0/rakelib/test_times.rake +25 -0
  287. data/gems/gems/rake-10.5.0/test/file_creation.rb +34 -0
  288. data/gems/gems/rake-10.5.0/test/helper.rb +129 -0
  289. data/gems/gems/rake-10.5.0/test/support/rakefile_definitions.rb +478 -0
  290. data/gems/gems/rake-10.5.0/test/support/ruby_runner.rb +34 -0
  291. data/gems/gems/rake-10.5.0/test/test_private_reader.rb +42 -0
  292. data/gems/gems/rake-10.5.0/test/test_rake.rb +40 -0
  293. data/gems/gems/rake-10.5.0/test/test_rake_application.rb +643 -0
  294. data/gems/gems/rake-10.5.0/test/test_rake_application_options.rb +468 -0
  295. data/gems/gems/rake-10.5.0/test/test_rake_backtrace.rb +119 -0
  296. data/gems/gems/rake-10.5.0/test/test_rake_clean.rb +61 -0
  297. data/gems/gems/rake-10.5.0/test/test_rake_cpu_counter.rb +68 -0
  298. data/gems/gems/rake-10.5.0/test/test_rake_definitions.rb +84 -0
  299. data/gems/gems/rake-10.5.0/test/test_rake_directory_task.rb +76 -0
  300. data/gems/gems/rake-10.5.0/test/test_rake_dsl.rb +40 -0
  301. data/gems/gems/rake-10.5.0/test/test_rake_early_time.rb +31 -0
  302. data/gems/gems/rake-10.5.0/test/test_rake_extension.rb +59 -0
  303. data/gems/gems/rake-10.5.0/test/test_rake_file_creation_task.rb +56 -0
  304. data/gems/gems/rake-10.5.0/test/test_rake_file_list.rb +670 -0
  305. data/gems/gems/rake-10.5.0/test/test_rake_file_list_path_map.rb +8 -0
  306. data/gems/gems/rake-10.5.0/test/test_rake_file_task.rb +197 -0
  307. data/gems/gems/rake-10.5.0/test/test_rake_file_utils.rb +314 -0
  308. data/gems/gems/rake-10.5.0/test/test_rake_ftp_file.rb +74 -0
  309. data/gems/gems/rake-10.5.0/test/test_rake_functional.rb +482 -0
  310. data/gems/gems/rake-10.5.0/test/test_rake_invocation_chain.rb +64 -0
  311. data/gems/gems/rake-10.5.0/test/test_rake_late_time.rb +18 -0
  312. data/gems/gems/rake-10.5.0/test/test_rake_linked_list.rb +84 -0
  313. data/gems/gems/rake-10.5.0/test/test_rake_makefile_loader.rb +46 -0
  314. data/gems/gems/rake-10.5.0/test/test_rake_multi_task.rb +64 -0
  315. data/gems/gems/rake-10.5.0/test/test_rake_name_space.rb +57 -0
  316. data/gems/gems/rake-10.5.0/test/test_rake_package_task.rb +79 -0
  317. data/gems/gems/rake-10.5.0/test/test_rake_path_map.rb +168 -0
  318. data/gems/gems/rake-10.5.0/test/test_rake_path_map_explode.rb +34 -0
  319. data/gems/gems/rake-10.5.0/test/test_rake_path_map_partial.rb +18 -0
  320. data/gems/gems/rake-10.5.0/test/test_rake_pathname_extensions.rb +15 -0
  321. data/gems/gems/rake-10.5.0/test/test_rake_pseudo_status.rb +21 -0
  322. data/gems/gems/rake-10.5.0/test/test_rake_rake_test_loader.rb +20 -0
  323. data/gems/gems/rake-10.5.0/test/test_rake_reduce_compat.rb +26 -0
  324. data/gems/gems/rake-10.5.0/test/test_rake_require.rb +40 -0
  325. data/gems/gems/rake-10.5.0/test/test_rake_rules.rb +388 -0
  326. data/gems/gems/rake-10.5.0/test/test_rake_scope.rb +44 -0
  327. data/gems/gems/rake-10.5.0/test/test_rake_task.rb +393 -0
  328. data/gems/gems/rake-10.5.0/test/test_rake_task_argument_parsing.rb +119 -0
  329. data/gems/gems/rake-10.5.0/test/test_rake_task_arguments.rb +127 -0
  330. data/gems/gems/rake-10.5.0/test/test_rake_task_lib.rb +9 -0
  331. data/gems/gems/rake-10.5.0/test/test_rake_task_manager.rb +178 -0
  332. data/gems/gems/rake-10.5.0/test/test_rake_task_manager_argument_resolution.rb +19 -0
  333. data/gems/gems/rake-10.5.0/test/test_rake_task_with_arguments.rb +172 -0
  334. data/gems/gems/rake-10.5.0/test/test_rake_test_task.rb +146 -0
  335. data/gems/gems/rake-10.5.0/test/test_rake_thread_pool.rb +145 -0
  336. data/gems/gems/rake-10.5.0/test/test_rake_top_level_functions.rb +71 -0
  337. data/gems/gems/rake-10.5.0/test/test_rake_win32.rb +72 -0
  338. data/gems/gems/rake-10.5.0/test/test_thread_history_display.rb +101 -0
  339. data/gems/gems/rake-10.5.0/test/test_trace_output.rb +52 -0
  340. data/gems/gems/rspec-3.6.0/LICENSE.md +27 -0
  341. data/gems/gems/rspec-3.6.0/README.md +39 -0
  342. data/gems/gems/rspec-3.6.0/lib/rspec.rb +3 -0
  343. data/gems/gems/rspec-3.6.0/lib/rspec/version.rb +5 -0
  344. data/gems/gems/rspec-core-3.6.0/.document +5 -0
  345. data/gems/gems/rspec-core-3.6.0/.yardopts +8 -0
  346. data/gems/gems/rspec-core-3.6.0/Changelog.md +2167 -0
  347. data/gems/gems/rspec-core-3.6.0/LICENSE.md +26 -0
  348. data/gems/gems/rspec-core-3.6.0/README.md +384 -0
  349. data/gems/gems/rspec-core-3.6.0/exe/rspec +4 -0
  350. data/gems/gems/rspec-core-3.6.0/lib/rspec/autorun.rb +3 -0
  351. data/gems/gems/rspec-core-3.6.0/lib/rspec/core.rb +185 -0
  352. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/backtrace_formatter.rb +65 -0
  353. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/bisect/coordinator.rb +66 -0
  354. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/bisect/example_minimizer.rb +169 -0
  355. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/bisect/runner.rb +169 -0
  356. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/bisect/server.rb +70 -0
  357. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/configuration.rb +2177 -0
  358. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/configuration_options.rb +196 -0
  359. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/drb.rb +113 -0
  360. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/dsl.rb +98 -0
  361. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/example.rb +653 -0
  362. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/example_group.rb +883 -0
  363. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/example_status_persister.rb +235 -0
  364. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/filter_manager.rb +231 -0
  365. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/flat_map.rb +20 -0
  366. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/formatters.rb +265 -0
  367. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/formatters/base_formatter.rb +70 -0
  368. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/formatters/base_text_formatter.rb +75 -0
  369. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/formatters/bisect_formatter.rb +69 -0
  370. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/formatters/bisect_progress_formatter.rb +144 -0
  371. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/formatters/console_codes.rb +68 -0
  372. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/formatters/deprecation_formatter.rb +223 -0
  373. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/formatters/documentation_formatter.rb +70 -0
  374. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/formatters/exception_presenter.rb +496 -0
  375. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/formatters/fallback_message_formatter.rb +28 -0
  376. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/formatters/helpers.rb +110 -0
  377. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/formatters/html_formatter.rb +153 -0
  378. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/formatters/html_printer.rb +414 -0
  379. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/formatters/html_snippet_extractor.rb +118 -0
  380. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/formatters/json_formatter.rb +101 -0
  381. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/formatters/profile_formatter.rb +68 -0
  382. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/formatters/progress_formatter.rb +29 -0
  383. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/formatters/protocol.rb +182 -0
  384. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/formatters/snippet_extractor.rb +134 -0
  385. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/formatters/syntax_highlighter.rb +91 -0
  386. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/hooks.rb +624 -0
  387. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/invocations.rb +85 -0
  388. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/memoized_helpers.rb +535 -0
  389. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/metadata.rb +499 -0
  390. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/metadata_filter.rb +255 -0
  391. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/minitest_assertions_adapter.rb +31 -0
  392. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/mocking_adapters/flexmock.rb +31 -0
  393. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/mocking_adapters/mocha.rb +57 -0
  394. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/mocking_adapters/null.rb +14 -0
  395. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/mocking_adapters/rr.rb +31 -0
  396. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/mocking_adapters/rspec.rb +32 -0
  397. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/notifications.rb +514 -0
  398. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/option_parser.rb +309 -0
  399. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/ordering.rb +158 -0
  400. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/output_wrapper.rb +29 -0
  401. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/pending.rb +165 -0
  402. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/profiler.rb +32 -0
  403. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/project_initializer.rb +48 -0
  404. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/project_initializer/.rspec +1 -0
  405. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/project_initializer/spec/spec_helper.rb +100 -0
  406. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/rake_task.rb +168 -0
  407. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/reporter.rb +260 -0
  408. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/ruby_project.rb +53 -0
  409. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/runner.rb +193 -0
  410. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/sandbox.rb +37 -0
  411. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/set.rb +54 -0
  412. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/shared_context.rb +55 -0
  413. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/shared_example_group.rb +271 -0
  414. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/shell_escape.rb +49 -0
  415. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/test_unit_assertions_adapter.rb +30 -0
  416. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/version.rb +9 -0
  417. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/warnings.rb +40 -0
  418. data/gems/gems/rspec-core-3.6.0/lib/rspec/core/world.rb +264 -0
  419. data/gems/gems/rspec-expectations-3.6.0/.document +5 -0
  420. data/gems/gems/rspec-expectations-3.6.0/.yardopts +6 -0
  421. data/gems/gems/rspec-expectations-3.6.0/Changelog.md +1072 -0
  422. data/gems/gems/rspec-expectations-3.6.0/LICENSE.md +25 -0
  423. data/gems/gems/rspec-expectations-3.6.0/README.md +305 -0
  424. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/expectations.rb +82 -0
  425. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/expectations/block_snippet_extractor.rb +253 -0
  426. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/expectations/configuration.rb +201 -0
  427. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/expectations/expectation_target.rb +127 -0
  428. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/expectations/fail_with.rb +39 -0
  429. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/expectations/failure_aggregator.rb +194 -0
  430. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/expectations/handler.rb +170 -0
  431. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/expectations/minitest_integration.rb +58 -0
  432. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/expectations/syntax.rb +132 -0
  433. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/expectations/version.rb +8 -0
  434. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers.rb +1025 -0
  435. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/aliased_matcher.rb +116 -0
  436. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in.rb +52 -0
  437. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/all.rb +85 -0
  438. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/base_matcher.rb +193 -0
  439. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/be.rb +288 -0
  440. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/be_between.rb +77 -0
  441. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/be_instance_of.rb +22 -0
  442. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/be_kind_of.rb +16 -0
  443. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/be_within.rb +72 -0
  444. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/change.rb +387 -0
  445. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/compound.rb +272 -0
  446. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/contain_exactly.rb +301 -0
  447. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/cover.rb +24 -0
  448. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/eq.rb +40 -0
  449. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/eql.rb +34 -0
  450. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/equal.rb +81 -0
  451. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/exist.rb +90 -0
  452. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/has.rb +103 -0
  453. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/have_attributes.rb +114 -0
  454. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/include.rb +143 -0
  455. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/match.rb +106 -0
  456. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/operators.rb +128 -0
  457. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/output.rb +200 -0
  458. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/raise_error.rb +230 -0
  459. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/respond_to.rb +165 -0
  460. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/satisfy.rb +60 -0
  461. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/start_or_end_with.rb +94 -0
  462. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/throw_symbol.rb +132 -0
  463. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/built_in/yield.rb +432 -0
  464. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/composable.rb +169 -0
  465. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/dsl.rb +527 -0
  466. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/english_phrasing.rb +58 -0
  467. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +73 -0
  468. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/fail_matchers.rb +42 -0
  469. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/generated_descriptions.rb +42 -0
  470. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/matcher_delegator.rb +35 -0
  471. data/gems/gems/rspec-expectations-3.6.0/lib/rspec/matchers/matcher_protocol.rb +99 -0
  472. data/gems/gems/rspec-mocks-3.6.0/.document +5 -0
  473. data/gems/gems/rspec-mocks-3.6.0/.yardopts +6 -0
  474. data/gems/gems/rspec-mocks-3.6.0/Changelog.md +1073 -0
  475. data/gems/gems/rspec-mocks-3.6.0/LICENSE.md +25 -0
  476. data/gems/gems/rspec-mocks-3.6.0/README.md +460 -0
  477. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks.rb +130 -0
  478. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/any_instance.rb +11 -0
  479. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/any_instance/chain.rb +110 -0
  480. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/any_instance/error_generator.rb +31 -0
  481. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/any_instance/expect_chain_chain.rb +31 -0
  482. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/any_instance/expectation_chain.rb +50 -0
  483. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/any_instance/message_chains.rb +83 -0
  484. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/any_instance/proxy.rb +116 -0
  485. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/any_instance/recorder.rb +289 -0
  486. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/any_instance/stub_chain.rb +51 -0
  487. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/any_instance/stub_chain_chain.rb +23 -0
  488. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/argument_list_matcher.rb +100 -0
  489. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/argument_matchers.rb +320 -0
  490. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/configuration.rb +212 -0
  491. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/error_generator.rb +369 -0
  492. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/example_methods.rb +434 -0
  493. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/instance_method_stasher.rb +146 -0
  494. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/marshal_extension.rb +41 -0
  495. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/matchers/expectation_customization.rb +20 -0
  496. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/matchers/have_received.rb +130 -0
  497. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/matchers/receive.rb +132 -0
  498. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/matchers/receive_message_chain.rb +82 -0
  499. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/matchers/receive_messages.rb +77 -0
  500. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/message_chain.rb +87 -0
  501. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/message_expectation.rb +740 -0
  502. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/method_double.rb +287 -0
  503. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/method_reference.rb +202 -0
  504. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/minitest_integration.rb +68 -0
  505. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/mutate_const.rb +339 -0
  506. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/object_reference.rb +149 -0
  507. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/order_group.rb +81 -0
  508. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/proxy.rb +484 -0
  509. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/space.rb +238 -0
  510. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/standalone.rb +3 -0
  511. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/syntax.rb +325 -0
  512. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/targets.rb +124 -0
  513. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/test_double.rb +171 -0
  514. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/verifying_double.rb +129 -0
  515. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/verifying_message_expectation.rb +54 -0
  516. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/verifying_proxy.rb +220 -0
  517. data/gems/gems/rspec-mocks-3.6.0/lib/rspec/mocks/version.rb +9 -0
  518. data/gems/gems/rspec-support-3.6.0/Changelog.md +211 -0
  519. data/gems/gems/rspec-support-3.6.0/LICENSE.md +23 -0
  520. data/gems/gems/rspec-support-3.6.0/README.md +40 -0
  521. data/gems/gems/rspec-support-3.6.0/lib/rspec/support.rb +139 -0
  522. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/caller_filter.rb +83 -0
  523. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/comparable_version.rb +46 -0
  524. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/differ.rb +215 -0
  525. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/directory_maker.rb +63 -0
  526. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/encoded_string.rb +165 -0
  527. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/fuzzy_matcher.rb +48 -0
  528. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/hunk_generator.rb +47 -0
  529. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/matcher_definition.rb +42 -0
  530. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/method_signature_verifier.rb +392 -0
  531. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/mutex.rb +73 -0
  532. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/object_formatter.rb +268 -0
  533. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/recursive_const_methods.rb +76 -0
  534. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/reentrant_mutex.rb +53 -0
  535. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/ruby_features.rb +162 -0
  536. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/source.rb +75 -0
  537. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/source/location.rb +21 -0
  538. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/source/node.rb +107 -0
  539. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/source/token.rb +87 -0
  540. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/spec.rb +81 -0
  541. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/spec/deprecation_helpers.rb +64 -0
  542. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/spec/formatting_support.rb +9 -0
  543. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/spec/in_sub_process.rb +69 -0
  544. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/spec/library_wide_checks.rb +150 -0
  545. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/spec/shell_out.rb +84 -0
  546. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/spec/stderr_splitter.rb +63 -0
  547. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/spec/string_matcher.rb +46 -0
  548. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/spec/with_isolated_directory.rb +13 -0
  549. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/spec/with_isolated_stderr.rb +13 -0
  550. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/version.rb +7 -0
  551. data/gems/gems/rspec-support-3.6.0/lib/rspec/support/warnings.rb +39 -0
  552. data/gems/gems/thor-0.19.4/.document +5 -0
  553. data/gems/gems/thor-0.19.4/CHANGELOG.md +163 -0
  554. data/gems/gems/thor-0.19.4/CONTRIBUTING.md +15 -0
  555. data/gems/gems/thor-0.19.4/LICENSE.md +20 -0
  556. data/gems/gems/thor-0.19.4/README.md +47 -0
  557. data/gems/gems/thor-0.19.4/bin/thor +6 -0
  558. data/gems/gems/thor-0.19.4/lib/thor.rb +492 -0
  559. data/gems/gems/thor-0.19.4/lib/thor/actions.rb +318 -0
  560. data/gems/gems/thor-0.19.4/lib/thor/actions/create_file.rb +103 -0
  561. data/gems/gems/thor-0.19.4/lib/thor/actions/create_link.rb +59 -0
  562. data/gems/gems/thor-0.19.4/lib/thor/actions/directory.rb +118 -0
  563. data/gems/gems/thor-0.19.4/lib/thor/actions/empty_directory.rb +135 -0
  564. data/gems/gems/thor-0.19.4/lib/thor/actions/file_manipulation.rb +327 -0
  565. data/gems/gems/thor-0.19.4/lib/thor/actions/inject_into_file.rb +103 -0
  566. data/gems/gems/thor-0.19.4/lib/thor/base.rb +656 -0
  567. data/gems/gems/thor-0.19.4/lib/thor/command.rb +133 -0
  568. data/gems/gems/thor-0.19.4/lib/thor/core_ext/hash_with_indifferent_access.rb +85 -0
  569. data/gems/gems/thor-0.19.4/lib/thor/core_ext/io_binary_read.rb +12 -0
  570. data/gems/gems/thor-0.19.4/lib/thor/core_ext/ordered_hash.rb +129 -0
  571. data/gems/gems/thor-0.19.4/lib/thor/error.rb +32 -0
  572. data/gems/gems/thor-0.19.4/lib/thor/group.rb +281 -0
  573. data/gems/gems/thor-0.19.4/lib/thor/invocation.rb +177 -0
  574. data/gems/gems/thor-0.19.4/lib/thor/line_editor.rb +17 -0
  575. data/gems/gems/thor-0.19.4/lib/thor/line_editor/basic.rb +35 -0
  576. data/gems/gems/thor-0.19.4/lib/thor/line_editor/readline.rb +88 -0
  577. data/gems/gems/thor-0.19.4/lib/thor/parser.rb +4 -0
  578. data/gems/gems/thor-0.19.4/lib/thor/parser/argument.rb +70 -0
  579. data/gems/gems/thor-0.19.4/lib/thor/parser/arguments.rb +175 -0
  580. data/gems/gems/thor-0.19.4/lib/thor/parser/option.rb +146 -0
  581. data/gems/gems/thor-0.19.4/lib/thor/parser/options.rb +220 -0
  582. data/gems/gems/thor-0.19.4/lib/thor/rake_compat.rb +71 -0
  583. data/gems/gems/thor-0.19.4/lib/thor/runner.rb +322 -0
  584. data/gems/gems/thor-0.19.4/lib/thor/shell.rb +81 -0
  585. data/gems/gems/thor-0.19.4/lib/thor/shell/basic.rb +436 -0
  586. data/gems/gems/thor-0.19.4/lib/thor/shell/color.rb +149 -0
  587. data/gems/gems/thor-0.19.4/lib/thor/shell/html.rb +126 -0
  588. data/gems/gems/thor-0.19.4/lib/thor/util.rb +268 -0
  589. data/gems/gems/thor-0.19.4/lib/thor/version.rb +3 -0
  590. data/gems/gems/thor-0.19.4/thor.gemspec +21 -0
  591. data/gems/gems/unicode-0.4.4.4/README +156 -0
  592. data/gems/gems/unicode-0.4.4.4/Rakefile +103 -0
  593. data/gems/gems/unicode-0.4.4.4/ext/unicode/.sitearchdir.-.unicode.time +0 -0
  594. data/gems/gems/unicode-0.4.4.4/ext/unicode/Makefile +264 -0
  595. data/gems/gems/unicode-0.4.4.4/ext/unicode/extconf.rb +3 -0
  596. data/gems/gems/unicode-0.4.4.4/ext/unicode/unicode.c +1325 -0
  597. data/gems/gems/unicode-0.4.4.4/ext/unicode/unicode.o +0 -0
  598. data/gems/gems/unicode-0.4.4.4/ext/unicode/unicode_native.bundle +0 -0
  599. data/gems/gems/unicode-0.4.4.4/ext/unicode/unidata.map +24555 -0
  600. data/gems/gems/unicode-0.4.4.4/ext/unicode/ustring.c +208 -0
  601. data/gems/gems/unicode-0.4.4.4/ext/unicode/ustring.h +48 -0
  602. data/gems/gems/unicode-0.4.4.4/ext/unicode/ustring.o +0 -0
  603. data/gems/gems/unicode-0.4.4.4/ext/unicode/wstring.c +257 -0
  604. data/gems/gems/unicode-0.4.4.4/ext/unicode/wstring.h +43 -0
  605. data/gems/gems/unicode-0.4.4.4/ext/unicode/wstring.o +0 -0
  606. data/gems/gems/unicode-0.4.4.4/lib/unicode.rb +6 -0
  607. data/gems/gems/unicode-0.4.4.4/lib/unicode/unicode_native.bundle +0 -0
  608. data/gems/gems/unicode-0.4.4.4/test/test.rb +69 -0
  609. data/gems/gems/unicode-0.4.4.4/tools/README +7 -0
  610. data/gems/gems/unicode-0.4.4.4/tools/mkunidata.rb +293 -0
  611. data/gems/gems/unicode-0.4.4.4/tools/normtest.rb +111 -0
  612. data/gems/gems/unicode-0.4.4.4/unicode.gemspec +30 -0
  613. data/gems/specifications/bibtex-ruby-4.4.4.gemspec +32 -0
  614. data/gems/specifications/diff-lcs-1.3.gemspec +61 -0
  615. data/gems/specifications/latex-decode-0.2.2.gemspec +35 -0
  616. data/gems/specifications/rake-10.5.0.gemspec +43 -0
  617. data/gems/specifications/rspec-3.6.0.gemspec +42 -0
  618. data/gems/specifications/rspec-core-3.6.0.gemspec +62 -0
  619. data/gems/specifications/rspec-expectations-3.6.0.gemspec +50 -0
  620. data/gems/specifications/rspec-mocks-3.6.0.gemspec +50 -0
  621. data/gems/specifications/rspec-support-3.6.0.gemspec +41 -0
  622. data/gems/specifications/thor-0.19.4.gemspec +35 -0
  623. data/gems/specifications/unicode-0.4.4.4.gemspec +25 -0
  624. data/lib/bibtex_to_scrapbox.rb +67 -0
  625. data/lib/bibtex_to_scrapbox/version.rb +3 -0
  626. data/lib/cli.rb +23 -0
  627. metadata +740 -0
@@ -0,0 +1,63 @@
1
+ RSpec::Support.require_rspec_support 'ruby_features'
2
+
3
+ module RSpec
4
+ module Support
5
+ # @api private
6
+ #
7
+ # Replacement for fileutils#mkdir_p because we don't want to require parts
8
+ # of stdlib in RSpec.
9
+ class DirectoryMaker
10
+ # @api private
11
+ #
12
+ # Implements nested directory construction
13
+ def self.mkdir_p(path)
14
+ stack = generate_stack(path)
15
+ path.split(File::SEPARATOR).each do |part|
16
+ stack = generate_path(stack, part)
17
+ begin
18
+ Dir.mkdir(stack) unless directory_exists?(stack)
19
+ rescue Errno::EEXIST => e
20
+ raise e unless directory_exists?(stack)
21
+ rescue Errno::ENOTDIR => e
22
+ raise Errno::EEXIST, e.message
23
+ end
24
+ end
25
+ end
26
+
27
+ if OS.windows_file_path?
28
+ def self.generate_stack(path)
29
+ if path.start_with?(File::SEPARATOR)
30
+ File::SEPARATOR
31
+ elsif path[1] == ':'
32
+ ''
33
+ else
34
+ '.'
35
+ end
36
+ end
37
+ def self.generate_path(stack, part)
38
+ if stack == ''
39
+ part
40
+ elsif stack == File::SEPARATOR
41
+ File.join('', part)
42
+ else
43
+ File.join(stack, part)
44
+ end
45
+ end
46
+ else
47
+ def self.generate_stack(path)
48
+ path.start_with?(File::SEPARATOR) ? File::SEPARATOR : "."
49
+ end
50
+ def self.generate_path(stack, part)
51
+ File.join(stack, part)
52
+ end
53
+ end
54
+
55
+ def self.directory_exists?(dirname)
56
+ File.exist?(dirname) && File.directory?(dirname)
57
+ end
58
+ private_class_method :directory_exists?
59
+ private_class_method :generate_stack
60
+ private_class_method :generate_path
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,165 @@
1
+ module RSpec
2
+ module Support
3
+ # @private
4
+ class EncodedString
5
+ # Reduce allocations by storing constants.
6
+ UTF_8 = "UTF-8"
7
+ US_ASCII = "US-ASCII"
8
+ #
9
+ # In MRI 2.1 'invalid: :replace' changed to also replace an invalid byte sequence
10
+ # see https://github.com/ruby/ruby/blob/v2_1_0/NEWS#L176
11
+ # https://www.ruby-forum.com/topic/6861247
12
+ # https://twitter.com/nalsh/status/553413844685438976
13
+ #
14
+ # For example, given:
15
+ # "\x80".force_encoding("Emacs-Mule").encode(:invalid => :replace).bytes.to_a
16
+ #
17
+ # On MRI 2.1 or above: 63 # '?'
18
+ # else : 128 # "\x80"
19
+ #
20
+ # Ruby's default replacement string is:
21
+ # U+FFFD ("\xEF\xBF\xBD"), for Unicode encoding forms, else
22
+ # ? ("\x3F")
23
+ REPLACE = "?"
24
+ ENCODE_UNCONVERTABLE_BYTES = {
25
+ :invalid => :replace,
26
+ :undef => :replace,
27
+ :replace => REPLACE
28
+ }
29
+ ENCODE_NO_CONVERTER = {
30
+ :invalid => :replace,
31
+ :replace => REPLACE
32
+ }
33
+
34
+ def initialize(string, encoding=nil)
35
+ @encoding = encoding
36
+ @source_encoding = detect_source_encoding(string)
37
+ @string = matching_encoding(string)
38
+ end
39
+ attr_reader :source_encoding
40
+
41
+ delegated_methods = String.instance_methods.map(&:to_s) & %w[eql? lines == encoding empty?]
42
+ delegated_methods.each do |name|
43
+ define_method(name) { |*args, &block| @string.__send__(name, *args, &block) }
44
+ end
45
+
46
+ def <<(string)
47
+ @string << matching_encoding(string)
48
+ end
49
+
50
+ if Ruby.jruby?
51
+ def split(regex_or_string)
52
+ @string.split(matching_encoding(regex_or_string))
53
+ rescue ArgumentError
54
+ # JRuby raises an ArgumentError when splitting a source string that
55
+ # contains invalid bytes.
56
+ remove_invalid_bytes(@string).split regex_or_string
57
+ end
58
+ else
59
+ def split(regex_or_string)
60
+ @string.split(matching_encoding(regex_or_string))
61
+ end
62
+ end
63
+
64
+ def to_s
65
+ @string
66
+ end
67
+ alias :to_str :to_s
68
+
69
+ if String.method_defined?(:encoding)
70
+
71
+ private
72
+
73
+ # Encoding Exceptions:
74
+ #
75
+ # Raised by Encoding and String methods:
76
+ # Encoding::UndefinedConversionError:
77
+ # when a transcoding operation fails
78
+ # if the String contains characters invalid for the target encoding
79
+ # e.g. "\x80".encode('UTF-8','ASCII-8BIT')
80
+ # vs "\x80".encode('UTF-8','ASCII-8BIT', undef: :replace, replace: '<undef>')
81
+ # # => '<undef>'
82
+ # Encoding::CompatibilityError
83
+ # when Encoding.compatibile?(str1, str2) is nil
84
+ # e.g. utf_16le_emoji_string.split("\n")
85
+ # e.g. valid_unicode_string.encode(utf8_encoding) << ascii_string
86
+ # Encoding::InvalidByteSequenceError:
87
+ # when the string being transcoded contains a byte invalid for
88
+ # either the source or target encoding
89
+ # e.g. "\x80".encode('UTF-8','US-ASCII')
90
+ # vs "\x80".encode('UTF-8','US-ASCII', invalid: :replace, replace: '<byte>')
91
+ # # => '<byte>'
92
+ # ArgumentError
93
+ # when operating on a string with invalid bytes
94
+ # e.g."\x80".split("\n")
95
+ # TypeError
96
+ # when a symbol is passed as an encoding
97
+ # Encoding.find(:"UTF-8")
98
+ # when calling force_encoding on an object
99
+ # that doesn't respond to #to_str
100
+ #
101
+ # Raised by transcoding methods:
102
+ # Encoding::ConverterNotFoundError:
103
+ # when a named encoding does not correspond with a known converter
104
+ # e.g. 'abc'.force_encoding('UTF-8').encode('foo')
105
+ # or a converter path cannot be found
106
+ # e.g. "\x80".force_encoding('ASCII-8BIT').encode('Emacs-Mule')
107
+ #
108
+ # Raised by byte <-> char conversions
109
+ # RangeError: out of char range
110
+ # e.g. the UTF-16LE emoji: 128169.chr
111
+ def matching_encoding(string)
112
+ string = remove_invalid_bytes(string)
113
+ string.encode(@encoding)
114
+ rescue Encoding::UndefinedConversionError, Encoding::InvalidByteSequenceError
115
+ string.encode(@encoding, ENCODE_UNCONVERTABLE_BYTES)
116
+ rescue Encoding::ConverterNotFoundError
117
+ string.dup.force_encoding(@encoding).encode(ENCODE_NO_CONVERTER)
118
+ end
119
+
120
+ # Prevents raising ArgumentError
121
+ if String.method_defined?(:scrub)
122
+ # https://github.com/ruby/ruby/blob/eeb05e8c11/doc/NEWS-2.1.0#L120-L123
123
+ # https://github.com/ruby/ruby/blob/v2_1_0/string.c#L8242
124
+ # https://github.com/hsbt/string-scrub
125
+ # https://github.com/rubinius/rubinius/blob/v2.5.2/kernel/common/string.rb#L1913-L1972
126
+ def remove_invalid_bytes(string)
127
+ string.scrub(REPLACE)
128
+ end
129
+ else
130
+ # http://stackoverflow.com/a/8711118/879854
131
+ # Loop over chars in a string replacing chars
132
+ # with invalid encoding, which is a pretty good proxy
133
+ # for the invalid byte sequence that causes an ArgumentError
134
+ def remove_invalid_bytes(string)
135
+ string.chars.map do |char|
136
+ char.valid_encoding? ? char : REPLACE
137
+ end.join
138
+ end
139
+ end
140
+
141
+ def detect_source_encoding(string)
142
+ string.encoding
143
+ end
144
+
145
+ def self.pick_encoding(source_a, source_b)
146
+ Encoding.compatible?(source_a, source_b) || Encoding.default_external
147
+ end
148
+ else
149
+
150
+ def self.pick_encoding(_source_a, _source_b)
151
+ end
152
+
153
+ private
154
+
155
+ def matching_encoding(string)
156
+ string
157
+ end
158
+
159
+ def detect_source_encoding(_string)
160
+ US_ASCII
161
+ end
162
+ end
163
+ end
164
+ end
165
+ end
@@ -0,0 +1,48 @@
1
+ module RSpec
2
+ module Support
3
+ # Provides a means to fuzzy-match between two arbitrary objects.
4
+ # Understands array/hash nesting. Uses `===` or `==` to
5
+ # perform the matching.
6
+ module FuzzyMatcher
7
+ # @api private
8
+ def self.values_match?(expected, actual)
9
+ if Hash === actual
10
+ return hashes_match?(expected, actual) if Hash === expected
11
+ elsif Array === expected && Enumerable === actual && !(Struct === actual)
12
+ return arrays_match?(expected, actual.to_a)
13
+ end
14
+
15
+ return true if expected == actual
16
+
17
+ begin
18
+ expected === actual
19
+ rescue ArgumentError
20
+ # Some objects, like 0-arg lambdas on 1.9+, raise
21
+ # ArgumentError for `expected === actual`.
22
+ false
23
+ end
24
+ end
25
+
26
+ # @private
27
+ def self.arrays_match?(expected_list, actual_list)
28
+ return false if expected_list.size != actual_list.size
29
+
30
+ expected_list.zip(actual_list).all? do |expected, actual|
31
+ values_match?(expected, actual)
32
+ end
33
+ end
34
+
35
+ # @private
36
+ def self.hashes_match?(expected_hash, actual_hash)
37
+ return false if expected_hash.size != actual_hash.size
38
+
39
+ expected_hash.all? do |expected_key, expected_value|
40
+ actual_value = actual_hash.fetch(expected_key) { return false }
41
+ values_match?(expected_value, actual_value)
42
+ end
43
+ end
44
+
45
+ private_class_method :arrays_match?, :hashes_match?
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,47 @@
1
+ require 'diff/lcs'
2
+ require 'diff/lcs/hunk'
3
+
4
+ module RSpec
5
+ module Support
6
+ # @private
7
+ class HunkGenerator
8
+ def initialize(actual, expected)
9
+ @actual = actual
10
+ @expected = expected
11
+ end
12
+
13
+ def hunks
14
+ @file_length_difference = 0
15
+ @hunks ||= diffs.map do |piece|
16
+ build_hunk(piece)
17
+ end
18
+ end
19
+
20
+ private
21
+
22
+ def diffs
23
+ Diff::LCS.diff(expected_lines, actual_lines)
24
+ end
25
+
26
+ def expected_lines
27
+ @expected.split("\n").map! { |e| e.chomp }
28
+ end
29
+
30
+ def actual_lines
31
+ @actual.split("\n").map! { |e| e.chomp }
32
+ end
33
+
34
+ def build_hunk(piece)
35
+ Diff::LCS::Hunk.new(
36
+ expected_lines, actual_lines, piece, context_lines, @file_length_difference
37
+ ).tap do |h|
38
+ @file_length_difference = h.file_length_difference
39
+ end
40
+ end
41
+
42
+ def context_lines
43
+ 3
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,42 @@
1
+ module RSpec
2
+ module Support
3
+ # @private
4
+ def self.matcher_definitions
5
+ @matcher_definitions ||= []
6
+ end
7
+
8
+ # Used internally to break cyclic dependency between mocks, expectations,
9
+ # and support. We don't currently have a consistent implementation of our
10
+ # matchers, though we are considering changing that:
11
+ # https://github.com/rspec/rspec-mocks/issues/513
12
+ #
13
+ # @private
14
+ def self.register_matcher_definition(&block)
15
+ matcher_definitions << block
16
+ end
17
+
18
+ # Remove a previously registered matcher. Useful for cleaning up after
19
+ # yourself in specs.
20
+ #
21
+ # @private
22
+ def self.deregister_matcher_definition(&block)
23
+ matcher_definitions.delete(block)
24
+ end
25
+
26
+ # @private
27
+ def self.is_a_matcher?(object)
28
+ matcher_definitions.any? { |md| md.call(object) }
29
+ end
30
+
31
+ # @api private
32
+ #
33
+ # gives a string representation of an object for use in RSpec descriptions
34
+ def self.rspec_description_for_object(object)
35
+ if RSpec::Support.is_a_matcher?(object) && object.respond_to?(:description)
36
+ object.description
37
+ else
38
+ object
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,392 @@
1
+ require 'rspec/support'
2
+ RSpec::Support.require_rspec_support "ruby_features"
3
+ RSpec::Support.require_rspec_support "matcher_definition"
4
+
5
+ module RSpec
6
+ module Support
7
+ # Extracts info about the number of arguments and allowed/required
8
+ # keyword args of a given method.
9
+ #
10
+ # @private
11
+ class MethodSignature # rubocop:disable ClassLength
12
+ attr_reader :min_non_kw_args, :max_non_kw_args, :optional_kw_args, :required_kw_args
13
+
14
+ def initialize(method)
15
+ @method = method
16
+ @optional_kw_args = []
17
+ @required_kw_args = []
18
+ classify_parameters
19
+ end
20
+
21
+ def non_kw_args_arity_description
22
+ case max_non_kw_args
23
+ when min_non_kw_args then min_non_kw_args.to_s
24
+ when INFINITY then "#{min_non_kw_args} or more"
25
+ else "#{min_non_kw_args} to #{max_non_kw_args}"
26
+ end
27
+ end
28
+
29
+ def valid_non_kw_args?(positional_arg_count, optional_max_arg_count=positional_arg_count)
30
+ return true if positional_arg_count.nil?
31
+
32
+ min_non_kw_args <= positional_arg_count &&
33
+ optional_max_arg_count <= max_non_kw_args
34
+ end
35
+
36
+ if RubyFeatures.optional_and_splat_args_supported?
37
+ def description
38
+ @description ||= begin
39
+ parts = []
40
+
41
+ unless non_kw_args_arity_description == "0"
42
+ parts << "arity of #{non_kw_args_arity_description}"
43
+ end
44
+
45
+ if @optional_kw_args.any?
46
+ parts << "optional keyword args (#{@optional_kw_args.map(&:inspect).join(", ")})"
47
+ end
48
+
49
+ if @required_kw_args.any?
50
+ parts << "required keyword args (#{@required_kw_args.map(&:inspect).join(", ")})"
51
+ end
52
+
53
+ parts << "any additional keyword args" if @allows_any_kw_args
54
+
55
+ parts.join(" and ")
56
+ end
57
+ end
58
+
59
+ def missing_kw_args_from(given_kw_args)
60
+ @required_kw_args - given_kw_args
61
+ end
62
+
63
+ def invalid_kw_args_from(given_kw_args)
64
+ return [] if @allows_any_kw_args
65
+ given_kw_args - @allowed_kw_args
66
+ end
67
+
68
+ def has_kw_args_in?(args)
69
+ Hash === args.last && could_contain_kw_args?(args)
70
+ end
71
+
72
+ # Without considering what the last arg is, could it
73
+ # contain keyword arguments?
74
+ def could_contain_kw_args?(args)
75
+ return false if args.count <= min_non_kw_args
76
+ @allows_any_kw_args || @allowed_kw_args.any?
77
+ end
78
+
79
+ def arbitrary_kw_args?
80
+ @allows_any_kw_args
81
+ end
82
+
83
+ def unlimited_args?
84
+ @max_non_kw_args == INFINITY
85
+ end
86
+
87
+ def classify_parameters
88
+ optional_non_kw_args = @min_non_kw_args = 0
89
+ @allows_any_kw_args = false
90
+
91
+ @method.parameters.each do |(type, name)|
92
+ case type
93
+ # def foo(a:)
94
+ when :keyreq then @required_kw_args << name
95
+ # def foo(a: 1)
96
+ when :key then @optional_kw_args << name
97
+ # def foo(**kw_args)
98
+ when :keyrest then @allows_any_kw_args = true
99
+ # def foo(a)
100
+ when :req then @min_non_kw_args += 1
101
+ # def foo(a = 1)
102
+ when :opt then optional_non_kw_args += 1
103
+ # def foo(*a)
104
+ when :rest then optional_non_kw_args = INFINITY
105
+ end
106
+ end
107
+
108
+ @max_non_kw_args = @min_non_kw_args + optional_non_kw_args
109
+ @allowed_kw_args = @required_kw_args + @optional_kw_args
110
+ end
111
+ else
112
+ def description
113
+ "arity of #{non_kw_args_arity_description}"
114
+ end
115
+
116
+ def missing_kw_args_from(_given_kw_args)
117
+ []
118
+ end
119
+
120
+ def invalid_kw_args_from(_given_kw_args)
121
+ []
122
+ end
123
+
124
+ def has_kw_args_in?(_args)
125
+ false
126
+ end
127
+
128
+ def could_contain_kw_args?(*)
129
+ false
130
+ end
131
+
132
+ def arbitrary_kw_args?
133
+ false
134
+ end
135
+
136
+ def unlimited_args?
137
+ false
138
+ end
139
+
140
+ def classify_parameters
141
+ arity = @method.arity
142
+ if arity < 0
143
+ # `~` inverts the one's complement and gives us the
144
+ # number of required args
145
+ @min_non_kw_args = ~arity
146
+ @max_non_kw_args = INFINITY
147
+ else
148
+ @min_non_kw_args = arity
149
+ @max_non_kw_args = arity
150
+ end
151
+ end
152
+ end
153
+
154
+ INFINITY = 1 / 0.0
155
+ end
156
+
157
+ # Some versions of JRuby have a nasty bug we have to work around :(.
158
+ # https://github.com/jruby/jruby/issues/2816
159
+ if RSpec::Support::Ruby.jruby? &&
160
+ RubyFeatures.optional_and_splat_args_supported? &&
161
+ Class.new { attr_writer :foo }.instance_method(:foo=).parameters == []
162
+
163
+ class MethodSignature < remove_const(:MethodSignature)
164
+ private
165
+
166
+ def classify_parameters
167
+ super
168
+ return unless @method.parameters == [] && @method.arity == 1
169
+ @max_non_kw_args = @min_non_kw_args = 1
170
+ end
171
+ end
172
+ end
173
+
174
+ # Encapsulates expectations about the number of arguments and
175
+ # allowed/required keyword args of a given method.
176
+ #
177
+ # @api private
178
+ class MethodSignatureExpectation
179
+ def initialize
180
+ @min_count = nil
181
+ @max_count = nil
182
+ @keywords = []
183
+
184
+ @expect_unlimited_arguments = false
185
+ @expect_arbitrary_keywords = false
186
+ end
187
+
188
+ attr_reader :min_count, :max_count, :keywords
189
+
190
+ attr_accessor :expect_unlimited_arguments, :expect_arbitrary_keywords
191
+
192
+ def max_count=(number)
193
+ raise ArgumentError, 'must be a non-negative integer or nil' \
194
+ unless number.nil? || (number.is_a?(Integer) && number >= 0)
195
+
196
+ @max_count = number
197
+ end
198
+
199
+ def min_count=(number)
200
+ raise ArgumentError, 'must be a non-negative integer or nil' \
201
+ unless number.nil? || (number.is_a?(Integer) && number >= 0)
202
+
203
+ @min_count = number
204
+ end
205
+
206
+ def empty?
207
+ @min_count.nil? &&
208
+ @keywords.to_a.empty? &&
209
+ !@expect_arbitrary_keywords &&
210
+ !@expect_unlimited_arguments
211
+ end
212
+
213
+ def keywords=(values)
214
+ @keywords = values.to_a || []
215
+ end
216
+ end
217
+
218
+ # Deals with the slightly different semantics of block arguments.
219
+ # For methods, arguments are required unless a default value is provided.
220
+ # For blocks, arguments are optional, even if no default value is provided.
221
+ #
222
+ # However, we want to treat block args as required since you virtually
223
+ # always want to pass a value for each received argument and our
224
+ # `and_yield` has treated block args as required for many years.
225
+ #
226
+ # @api private
227
+ class BlockSignature < MethodSignature
228
+ if RubyFeatures.optional_and_splat_args_supported?
229
+ def classify_parameters
230
+ super
231
+ @min_non_kw_args = @max_non_kw_args unless @max_non_kw_args == INFINITY
232
+ end
233
+ end
234
+ end
235
+
236
+ # Abstract base class for signature verifiers.
237
+ #
238
+ # @api private
239
+ class MethodSignatureVerifier
240
+ attr_reader :non_kw_args, :kw_args, :min_non_kw_args, :max_non_kw_args
241
+
242
+ def initialize(signature, args=[])
243
+ @signature = signature
244
+ @non_kw_args, @kw_args = split_args(*args)
245
+ @min_non_kw_args = @max_non_kw_args = @non_kw_args
246
+ @arbitrary_kw_args = @unlimited_args = false
247
+ end
248
+
249
+ def with_expectation(expectation) # rubocop:disable MethodLength
250
+ return self unless MethodSignatureExpectation === expectation
251
+
252
+ if expectation.empty?
253
+ @min_non_kw_args = @max_non_kw_args = @non_kw_args = nil
254
+ @kw_args = []
255
+ else
256
+ @min_non_kw_args = @non_kw_args = expectation.min_count || 0
257
+ @max_non_kw_args = expectation.max_count || @min_non_kw_args
258
+
259
+ if RubyFeatures.optional_and_splat_args_supported?
260
+ @unlimited_args = expectation.expect_unlimited_arguments
261
+ else
262
+ @unlimited_args = false
263
+ end
264
+
265
+ if RubyFeatures.kw_args_supported?
266
+ @kw_args = expectation.keywords
267
+ @arbitrary_kw_args = expectation.expect_arbitrary_keywords
268
+ else
269
+ @kw_args = []
270
+ @arbitrary_kw_args = false
271
+ end
272
+ end
273
+
274
+ self
275
+ end
276
+
277
+ def valid?
278
+ missing_kw_args.empty? &&
279
+ invalid_kw_args.empty? &&
280
+ valid_non_kw_args? &&
281
+ arbitrary_kw_args? &&
282
+ unlimited_args?
283
+ end
284
+
285
+ def error_message
286
+ if missing_kw_args.any?
287
+ "Missing required keyword arguments: %s" % [
288
+ missing_kw_args.join(", ")
289
+ ]
290
+ elsif invalid_kw_args.any?
291
+ "Invalid keyword arguments provided: %s" % [
292
+ invalid_kw_args.join(", ")
293
+ ]
294
+ elsif !valid_non_kw_args?
295
+ "Wrong number of arguments. Expected %s, got %s." % [
296
+ @signature.non_kw_args_arity_description,
297
+ non_kw_args
298
+ ]
299
+ end
300
+ end
301
+
302
+ private
303
+
304
+ def valid_non_kw_args?
305
+ @signature.valid_non_kw_args?(min_non_kw_args, max_non_kw_args)
306
+ end
307
+
308
+ def missing_kw_args
309
+ @signature.missing_kw_args_from(kw_args)
310
+ end
311
+
312
+ def invalid_kw_args
313
+ @signature.invalid_kw_args_from(kw_args)
314
+ end
315
+
316
+ def arbitrary_kw_args?
317
+ !@arbitrary_kw_args || @signature.arbitrary_kw_args?
318
+ end
319
+
320
+ def unlimited_args?
321
+ !@unlimited_args || @signature.unlimited_args?
322
+ end
323
+
324
+ def split_args(*args)
325
+ kw_args = if @signature.has_kw_args_in?(args)
326
+ args.pop.keys
327
+ else
328
+ []
329
+ end
330
+
331
+ [args.length, kw_args]
332
+ end
333
+ end
334
+
335
+ # Figures out wether a given method can accept various arguments.
336
+ # Surprisingly non-trivial.
337
+ #
338
+ # @private
339
+ StrictSignatureVerifier = MethodSignatureVerifier
340
+
341
+ # Allows matchers to be used instead of providing keyword arguments. In
342
+ # practice, when this happens only the arity of the method is verified.
343
+ #
344
+ # @private
345
+ class LooseSignatureVerifier < MethodSignatureVerifier
346
+ private
347
+
348
+ def split_args(*args)
349
+ if RSpec::Support.is_a_matcher?(args.last) && @signature.could_contain_kw_args?(args)
350
+ args.pop
351
+ @signature = SignatureWithKeywordArgumentsMatcher.new(@signature)
352
+ end
353
+
354
+ super(*args)
355
+ end
356
+
357
+ # If a matcher is used in a signature in place of keyword arguments, all
358
+ # keyword argument validation needs to be skipped since the matcher is
359
+ # opaque.
360
+ #
361
+ # Instead, keyword arguments will be validated when the method is called
362
+ # and they are actually known.
363
+ #
364
+ # @private
365
+ class SignatureWithKeywordArgumentsMatcher
366
+ def initialize(signature)
367
+ @signature = signature
368
+ end
369
+
370
+ def missing_kw_args_from(_kw_args)
371
+ []
372
+ end
373
+
374
+ def invalid_kw_args_from(_kw_args)
375
+ []
376
+ end
377
+
378
+ def non_kw_args_arity_description
379
+ @signature.non_kw_args_arity_description
380
+ end
381
+
382
+ def valid_non_kw_args?(*args)
383
+ @signature.valid_non_kw_args?(*args)
384
+ end
385
+
386
+ def has_kw_args_in?(args)
387
+ @signature.has_kw_args_in?(args)
388
+ end
389
+ end
390
+ end
391
+ end
392
+ end