dirwatch 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (534) hide show
  1. checksums.yaml +4 -4
  2. data/lib/dirwatch/templates/mac/latex.yml +1 -1
  3. data/lib/dirwatch/version.rb +1 -1
  4. data/vendor/bundle/ruby/2.5.0/cache/ast-2.4.0.gem +0 -0
  5. data/vendor/bundle/ruby/2.5.0/cache/parser-2.5.1.2.gem +0 -0
  6. data/vendor/bundle/ruby/2.5.0/cache/powerpack-0.1.2.gem +0 -0
  7. data/vendor/bundle/ruby/2.5.0/cache/rake-12.3.1.gem +0 -0
  8. data/vendor/bundle/ruby/2.5.0/cache/rspec-3.8.0.gem +0 -0
  9. data/vendor/bundle/ruby/2.5.0/cache/rspec-core-3.8.0.gem +0 -0
  10. data/vendor/bundle/ruby/2.5.0/cache/rspec-expectations-3.8.1.gem +0 -0
  11. data/vendor/bundle/ruby/2.5.0/cache/rspec-mocks-3.8.0.gem +0 -0
  12. data/vendor/bundle/ruby/2.5.0/cache/rspec-support-3.8.0.gem +0 -0
  13. data/vendor/bundle/ruby/2.5.0/cache/ruby-progressbar-1.10.0.gem +0 -0
  14. data/vendor/bundle/ruby/2.5.0/cache/unicode-display_width-1.4.0.gem +0 -0
  15. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/CHANGELOG.md +9 -0
  16. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/Gemfile +4 -0
  17. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/LICENSE.MIT +20 -0
  18. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/README.YARD.md +12 -0
  19. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/README.md +23 -0
  20. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/Rakefile +19 -0
  21. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/ast.gemspec +29 -0
  22. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/lib/ast.rb +17 -0
  23. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/lib/ast/node.rb +258 -0
  24. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/lib/ast/processor.rb +12 -0
  25. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/lib/ast/processor/mixin.rb +288 -0
  26. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/lib/ast/sexp.rb +30 -0
  27. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/test/helper.rb +17 -0
  28. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/test/test_ast.rb +271 -0
  29. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/CHANGELOG.md +927 -0
  30. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/CONTRIBUTING.md +17 -0
  31. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/Gemfile +10 -0
  32. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/LICENSE.txt +25 -0
  33. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/README.md +301 -0
  34. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/Rakefile +165 -0
  35. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/bin/ruby-parse +7 -0
  36. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/bin/ruby-rewrite +7 -0
  37. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/doc/AST_FORMAT.md +1735 -0
  38. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/doc/CUSTOMIZATION.md +37 -0
  39. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/doc/INTERNALS.md +21 -0
  40. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/doc/css/common.css +68 -0
  41. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/gauntlet_parser.rb +123 -0
  42. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser.rb +81 -0
  43. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/all.rb +11 -0
  44. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ast/node.rb +40 -0
  45. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ast/processor.rb +241 -0
  46. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/base.rb +267 -0
  47. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/builders/default.rb +1677 -0
  48. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/clobbering_error.rb +13 -0
  49. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/color.rb +32 -0
  50. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/context.rb +51 -0
  51. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/current.rb +83 -0
  52. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/deprecation.rb +13 -0
  53. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/diagnostic.rb +163 -0
  54. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/diagnostic/engine.rb +105 -0
  55. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/lexer.rb +23093 -0
  56. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/lexer.rl +2382 -0
  57. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/lexer/dedenter.rb +79 -0
  58. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/lexer/explanation.rb +55 -0
  59. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/lexer/literal.rb +265 -0
  60. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/lexer/stack_state.rb +49 -0
  61. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/macruby.rb +6122 -0
  62. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/macruby.y +2198 -0
  63. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/messages.rb +84 -0
  64. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/meta.rb +29 -0
  65. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/rewriter.rb +105 -0
  66. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby18.rb +5654 -0
  67. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby18.y +1934 -0
  68. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby19.rb +6077 -0
  69. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby19.y +2175 -0
  70. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby20.rb +6512 -0
  71. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby20.y +2353 -0
  72. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby21.rb +6572 -0
  73. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby21.y +2357 -0
  74. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby22.rb +6600 -0
  75. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby22.y +2364 -0
  76. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby23.rb +6628 -0
  77. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby23.y +2370 -0
  78. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby24.rb +6695 -0
  79. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby24.y +2408 -0
  80. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby25.rb +6661 -0
  81. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby25.y +2405 -0
  82. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby26.rb +6674 -0
  83. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby26.y +2413 -0
  84. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/rubymotion.rb +6083 -0
  85. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/rubymotion.y +2182 -0
  86. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/runner.rb +248 -0
  87. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/runner/ruby_parse.rb +157 -0
  88. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/runner/ruby_rewrite.rb +101 -0
  89. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/buffer.rb +330 -0
  90. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/comment.rb +121 -0
  91. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/comment/associator.rb +210 -0
  92. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map.rb +186 -0
  93. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/collection.rb +18 -0
  94. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/condition.rb +21 -0
  95. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/constant.rb +32 -0
  96. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/definition.rb +23 -0
  97. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/for.rb +19 -0
  98. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/heredoc.rb +19 -0
  99. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/index.rb +33 -0
  100. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/keyword.rb +20 -0
  101. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/objc_kwarg.rb +19 -0
  102. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/operator.rb +17 -0
  103. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/rescue_body.rb +21 -0
  104. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/send.rb +36 -0
  105. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/ternary.rb +18 -0
  106. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/variable.rb +31 -0
  107. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/range.rb +310 -0
  108. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/rewriter.rb +513 -0
  109. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/rewriter/action.rb +44 -0
  110. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/tree_rewriter.rb +301 -0
  111. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/tree_rewriter/action.rb +133 -0
  112. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/static_environment.rb +46 -0
  113. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/syntax_error.rb +21 -0
  114. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/tree_rewriter.rb +133 -0
  115. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/version.rb +5 -0
  116. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/parser.gemspec +51 -0
  117. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/bug_163/fixtures/input.rb +5 -0
  118. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/bug_163/fixtures/output.rb +5 -0
  119. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/bug_163/rewriter.rb +20 -0
  120. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/helper.rb +52 -0
  121. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/parse_helper.rb +315 -0
  122. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/racc_coverage_helper.rb +133 -0
  123. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_base.rb +31 -0
  124. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_current.rb +27 -0
  125. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_diagnostic.rb +96 -0
  126. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_diagnostic_engine.rb +62 -0
  127. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_encoding.rb +99 -0
  128. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_lexer.rb +3537 -0
  129. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_lexer_stack_state.rb +78 -0
  130. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_parse_helper.rb +80 -0
  131. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_parser.rb +7038 -0
  132. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_runner_rewrite.rb +47 -0
  133. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_source_buffer.rb +162 -0
  134. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_source_comment.rb +36 -0
  135. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_source_comment_associator.rb +367 -0
  136. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_source_map.rb +15 -0
  137. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_source_range.rb +172 -0
  138. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_source_rewriter.rb +541 -0
  139. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_source_rewriter_action.rb +46 -0
  140. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_source_tree_rewriter.rb +173 -0
  141. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_static_environment.rb +45 -0
  142. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/using_tree_rewriter/fixtures/input.rb +3 -0
  143. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/using_tree_rewriter/fixtures/output.rb +3 -0
  144. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/using_tree_rewriter/using_tree_rewriter.rb +9 -0
  145. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/CHANGELOG.md +46 -0
  146. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/CONTRIBUTING.md +62 -0
  147. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/Gemfile +4 -0
  148. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/LICENSE.txt +22 -0
  149. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/README.md +99 -0
  150. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/Rakefile +12 -0
  151. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack.rb +11 -0
  152. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/array.rb +2 -0
  153. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/array/butfirst.rb +15 -0
  154. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/array/butlast.rb +15 -0
  155. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/enumerable.rb +9 -0
  156. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/enumerable/average.rb +20 -0
  157. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/enumerable/drop_last.rb +20 -0
  158. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/enumerable/drop_last_while.rb +21 -0
  159. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/enumerable/exactly.rb +43 -0
  160. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/enumerable/frequencies.rb +17 -0
  161. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/enumerable/several.rb +37 -0
  162. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/enumerable/sum.rb +25 -0
  163. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/enumerable/take_last.rb +20 -0
  164. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/enumerable/take_last_while.rb +17 -0
  165. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/hash.rb +1 -0
  166. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/hash/symbolize_keys.rb +14 -0
  167. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/numeric.rb +3 -0
  168. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/numeric/neg.rb +19 -0
  169. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/numeric/pos.rb +19 -0
  170. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/numeric/scale.rb +44 -0
  171. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/string.rb +9 -0
  172. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/string/ascii_only.rb +42 -0
  173. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/string/blank.rb +20 -0
  174. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/string/format.rb +20 -0
  175. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/string/remove.rb +17 -0
  176. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/string/remove_prefix.rb +24 -0
  177. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/string/remove_suffix.rb +24 -0
  178. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/string/squish.rb +27 -0
  179. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/string/strip_indent.rb +22 -0
  180. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/string/strip_margin.rb +21 -0
  181. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/version.rb +3 -0
  182. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/powerpack.gemspec +24 -0
  183. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/array/butfirst_spec.rb +11 -0
  184. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/array/butlast_spec.rb +11 -0
  185. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/enumerable/average_spec.rb +19 -0
  186. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/enumerable/drop_last_spec.rb +15 -0
  187. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/enumerable/drop_last_while_spec.rb +7 -0
  188. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/enumerable/exactly_spec.rb +39 -0
  189. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/enumerable/frequencies_spec.rb +20 -0
  190. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/enumerable/several_spec.rb +27 -0
  191. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/enumerable/sum_spec.rb +29 -0
  192. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/enumerable/take_last_spec.rb +15 -0
  193. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/enumerable/take_last_while_spec.rb +7 -0
  194. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/hash/symbolize_keys_spec.rb +15 -0
  195. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/numeric/neg_spec.rb +24 -0
  196. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/numeric/pos_spec.rb +24 -0
  197. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/numeric/scale_spec.rb +139 -0
  198. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/string/ascii_only_spec.rb +45 -0
  199. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/string/blank_spec.rb +15 -0
  200. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/string/format_spec.rb +12 -0
  201. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/string/remove_prefix_spec.rb +21 -0
  202. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/string/remove_spec.rb +13 -0
  203. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/string/remove_suffix_spec.rb +21 -0
  204. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/string/squish_spec.rb +21 -0
  205. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/string/strip_indent_spec.rb +13 -0
  206. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/string/strip_margin_spec.rb +26 -0
  207. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/spec_helper.rb +15 -0
  208. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/CONTRIBUTING.rdoc +36 -0
  209. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/Gemfile +3 -0
  210. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/History.rdoc +2317 -0
  211. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/MIT-LICENSE +21 -0
  212. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/README.rdoc +156 -0
  213. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/Rakefile +41 -0
  214. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/bin/console +7 -0
  215. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/bin/setup +6 -0
  216. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/doc/command_line_usage.rdoc +158 -0
  217. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/doc/example/Rakefile1 +38 -0
  218. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/doc/example/Rakefile2 +35 -0
  219. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/doc/example/a.c +6 -0
  220. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/doc/example/b.c +6 -0
  221. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/doc/example/main.c +11 -0
  222. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/doc/glossary.rdoc +42 -0
  223. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/doc/jamis.rb +592 -0
  224. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/doc/proto_rake.rdoc +127 -0
  225. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/doc/rake.1 +156 -0
  226. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/doc/rakefile.rdoc +622 -0
  227. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/doc/rational.rdoc +151 -0
  228. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/exe/rake +27 -0
  229. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake.rb +71 -0
  230. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/application.rb +824 -0
  231. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/backtrace.rb +24 -0
  232. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/clean.rb +78 -0
  233. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/cloneable.rb +17 -0
  234. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/cpu_counter.rb +107 -0
  235. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/default_loader.rb +15 -0
  236. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/dsl_definition.rb +195 -0
  237. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/early_time.rb +22 -0
  238. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/ext/core.rb +26 -0
  239. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/ext/string.rb +176 -0
  240. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/file_creation_task.rb +25 -0
  241. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/file_list.rb +435 -0
  242. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/file_task.rb +54 -0
  243. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/file_utils.rb +137 -0
  244. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/file_utils_ext.rb +145 -0
  245. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/invocation_chain.rb +57 -0
  246. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/invocation_exception_mixin.rb +17 -0
  247. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/late_time.rb +18 -0
  248. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/linked_list.rb +112 -0
  249. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/loaders/makefile.rb +54 -0
  250. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/multi_task.rb +14 -0
  251. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/name_space.rb +38 -0
  252. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/packagetask.rb +211 -0
  253. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/phony.rb +16 -0
  254. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/private_reader.rb +21 -0
  255. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/promise.rb +100 -0
  256. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/pseudo_status.rb +30 -0
  257. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/rake_module.rb +67 -0
  258. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/rake_test_loader.rb +27 -0
  259. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/rule_recursion_overflow_error.rb +20 -0
  260. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/scope.rb +43 -0
  261. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/task.rb +411 -0
  262. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/task_argument_error.rb +8 -0
  263. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/task_arguments.rb +109 -0
  264. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/task_manager.rb +323 -0
  265. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/tasklib.rb +12 -0
  266. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/testtask.rb +224 -0
  267. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/thread_history_display.rb +49 -0
  268. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/thread_pool.rb +163 -0
  269. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/trace_output.rb +23 -0
  270. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/version.rb +10 -0
  271. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/win32.rb +51 -0
  272. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/rake.gemspec +42 -0
  273. data/vendor/bundle/ruby/2.5.0/gems/rspec-3.8.0/LICENSE.md +27 -0
  274. data/vendor/bundle/ruby/2.5.0/gems/rspec-3.8.0/README.md +43 -0
  275. data/vendor/bundle/ruby/2.5.0/gems/rspec-3.8.0/lib/rspec.rb +3 -0
  276. data/vendor/bundle/ruby/2.5.0/gems/rspec-3.8.0/lib/rspec/version.rb +5 -0
  277. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/Changelog.md +2221 -0
  278. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/LICENSE.md +26 -0
  279. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/README.md +384 -0
  280. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/exe/rspec +4 -0
  281. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/autorun.rb +3 -0
  282. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core.rb +185 -0
  283. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/backtrace_formatter.rb +65 -0
  284. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/bisect/coordinator.rb +62 -0
  285. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/bisect/example_minimizer.rb +173 -0
  286. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/bisect/fork_runner.rb +134 -0
  287. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/bisect/server.rb +61 -0
  288. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/bisect/shell_command.rb +126 -0
  289. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/bisect/shell_runner.rb +73 -0
  290. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/bisect/utilities.rb +58 -0
  291. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/configuration.rb +2289 -0
  292. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/configuration_options.rb +233 -0
  293. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/drb.rb +113 -0
  294. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/dsl.rb +98 -0
  295. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/example.rb +653 -0
  296. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/example_group.rb +885 -0
  297. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/example_status_persister.rb +235 -0
  298. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/filter_manager.rb +231 -0
  299. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/flat_map.rb +20 -0
  300. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters.rb +269 -0
  301. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/base_bisect_formatter.rb +45 -0
  302. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/base_formatter.rb +70 -0
  303. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/base_text_formatter.rb +75 -0
  304. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/bisect_drb_formatter.rb +29 -0
  305. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/bisect_progress_formatter.rb +157 -0
  306. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/console_codes.rb +68 -0
  307. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/deprecation_formatter.rb +223 -0
  308. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/documentation_formatter.rb +70 -0
  309. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/exception_presenter.rb +497 -0
  310. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/fallback_message_formatter.rb +28 -0
  311. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/helpers.rb +110 -0
  312. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/html_formatter.rb +153 -0
  313. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/html_printer.rb +414 -0
  314. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/html_snippet_extractor.rb +120 -0
  315. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/json_formatter.rb +102 -0
  316. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/profile_formatter.rb +68 -0
  317. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/progress_formatter.rb +29 -0
  318. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/protocol.rb +182 -0
  319. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/snippet_extractor.rb +134 -0
  320. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/syntax_highlighter.rb +91 -0
  321. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/hooks.rb +624 -0
  322. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/invocations.rb +87 -0
  323. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/memoized_helpers.rb +535 -0
  324. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/metadata.rb +499 -0
  325. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/metadata_filter.rb +255 -0
  326. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/minitest_assertions_adapter.rb +31 -0
  327. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/mocking_adapters/flexmock.rb +31 -0
  328. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/mocking_adapters/mocha.rb +57 -0
  329. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/mocking_adapters/null.rb +14 -0
  330. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/mocking_adapters/rr.rb +31 -0
  331. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/mocking_adapters/rspec.rb +32 -0
  332. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/notifications.rb +521 -0
  333. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/option_parser.rb +309 -0
  334. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/ordering.rb +158 -0
  335. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/output_wrapper.rb +29 -0
  336. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/pending.rb +165 -0
  337. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/profiler.rb +34 -0
  338. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/project_initializer.rb +48 -0
  339. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/project_initializer/spec/spec_helper.rb +100 -0
  340. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/rake_task.rb +168 -0
  341. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/reporter.rb +257 -0
  342. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/ruby_project.rb +53 -0
  343. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/runner.rb +199 -0
  344. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/sandbox.rb +37 -0
  345. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/set.rb +54 -0
  346. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/shared_context.rb +55 -0
  347. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/shared_example_group.rb +269 -0
  348. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/shell_escape.rb +49 -0
  349. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/test_unit_assertions_adapter.rb +30 -0
  350. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/version.rb +9 -0
  351. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/warnings.rb +40 -0
  352. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/world.rb +275 -0
  353. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/Changelog.md +1110 -0
  354. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/LICENSE.md +25 -0
  355. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/README.md +305 -0
  356. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/expectations.rb +82 -0
  357. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/expectations/block_snippet_extractor.rb +253 -0
  358. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/expectations/configuration.rb +215 -0
  359. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/expectations/expectation_target.rb +127 -0
  360. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/expectations/fail_with.rb +39 -0
  361. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/expectations/failure_aggregator.rb +194 -0
  362. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/expectations/handler.rb +170 -0
  363. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/expectations/minitest_integration.rb +58 -0
  364. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/expectations/syntax.rb +132 -0
  365. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/expectations/version.rb +8 -0
  366. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers.rb +1034 -0
  367. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/aliased_matcher.rb +116 -0
  368. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in.rb +52 -0
  369. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/all.rb +85 -0
  370. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/base_matcher.rb +193 -0
  371. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/be.rb +288 -0
  372. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/be_between.rb +77 -0
  373. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/be_instance_of.rb +22 -0
  374. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/be_kind_of.rb +16 -0
  375. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/be_within.rb +72 -0
  376. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/change.rb +426 -0
  377. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/compound.rb +271 -0
  378. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/contain_exactly.rb +302 -0
  379. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/cover.rb +24 -0
  380. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/eq.rb +40 -0
  381. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/eql.rb +34 -0
  382. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/equal.rb +81 -0
  383. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/exist.rb +90 -0
  384. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/has.rb +103 -0
  385. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/have_attributes.rb +114 -0
  386. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/include.rb +149 -0
  387. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/match.rb +106 -0
  388. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/operators.rb +128 -0
  389. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/output.rb +200 -0
  390. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/raise_error.rb +230 -0
  391. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/respond_to.rb +165 -0
  392. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/satisfy.rb +60 -0
  393. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/start_or_end_with.rb +94 -0
  394. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/throw_symbol.rb +132 -0
  395. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/yield.rb +432 -0
  396. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/composable.rb +171 -0
  397. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/dsl.rb +527 -0
  398. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/english_phrasing.rb +58 -0
  399. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +73 -0
  400. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/fail_matchers.rb +42 -0
  401. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/generated_descriptions.rb +41 -0
  402. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/matcher_delegator.rb +35 -0
  403. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/matcher_protocol.rb +99 -0
  404. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/Changelog.md +1100 -0
  405. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/LICENSE.md +25 -0
  406. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/README.md +460 -0
  407. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks.rb +130 -0
  408. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance.rb +11 -0
  409. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/chain.rb +110 -0
  410. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/error_generator.rb +31 -0
  411. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/expect_chain_chain.rb +31 -0
  412. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/expectation_chain.rb +50 -0
  413. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/message_chains.rb +83 -0
  414. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/proxy.rb +116 -0
  415. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/recorder.rb +289 -0
  416. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/stub_chain.rb +51 -0
  417. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/stub_chain_chain.rb +23 -0
  418. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/argument_list_matcher.rb +100 -0
  419. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/argument_matchers.rb +320 -0
  420. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/configuration.rb +212 -0
  421. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/error_generator.rb +369 -0
  422. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/example_methods.rb +434 -0
  423. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/instance_method_stasher.rb +146 -0
  424. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/marshal_extension.rb +41 -0
  425. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/matchers/expectation_customization.rb +20 -0
  426. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/matchers/have_received.rb +134 -0
  427. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/matchers/receive.rb +132 -0
  428. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/matchers/receive_message_chain.rb +82 -0
  429. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/matchers/receive_messages.rb +77 -0
  430. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/message_chain.rb +87 -0
  431. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/message_expectation.rb +741 -0
  432. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/method_double.rb +287 -0
  433. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/method_reference.rb +202 -0
  434. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/minitest_integration.rb +68 -0
  435. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/mutate_const.rb +339 -0
  436. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/object_reference.rb +149 -0
  437. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/order_group.rb +81 -0
  438. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/proxy.rb +485 -0
  439. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/space.rb +238 -0
  440. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/standalone.rb +3 -0
  441. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/syntax.rb +325 -0
  442. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/targets.rb +124 -0
  443. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/test_double.rb +171 -0
  444. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/verifying_double.rb +129 -0
  445. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/verifying_message_expectation.rb +54 -0
  446. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/verifying_proxy.rb +220 -0
  447. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/version.rb +9 -0
  448. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/Changelog.md +242 -0
  449. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/LICENSE.md +23 -0
  450. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/README.md +40 -0
  451. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support.rb +149 -0
  452. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/caller_filter.rb +83 -0
  453. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/comparable_version.rb +46 -0
  454. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/differ.rb +215 -0
  455. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/directory_maker.rb +63 -0
  456. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/encoded_string.rb +165 -0
  457. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/fuzzy_matcher.rb +48 -0
  458. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/hunk_generator.rb +47 -0
  459. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/matcher_definition.rb +42 -0
  460. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/method_signature_verifier.rb +426 -0
  461. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/mutex.rb +73 -0
  462. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/object_formatter.rb +275 -0
  463. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/recursive_const_methods.rb +76 -0
  464. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/reentrant_mutex.rb +53 -0
  465. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/ruby_features.rb +176 -0
  466. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/source.rb +75 -0
  467. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/source/location.rb +21 -0
  468. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/source/node.rb +110 -0
  469. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/source/token.rb +87 -0
  470. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/spec.rb +81 -0
  471. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/deprecation_helpers.rb +64 -0
  472. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/formatting_support.rb +9 -0
  473. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/in_sub_process.rb +69 -0
  474. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/library_wide_checks.rb +150 -0
  475. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/shell_out.rb +84 -0
  476. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/stderr_splitter.rb +63 -0
  477. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/string_matcher.rb +46 -0
  478. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/with_isolated_directory.rb +13 -0
  479. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/with_isolated_stderr.rb +13 -0
  480. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/version.rb +7 -0
  481. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/warnings.rb +39 -0
  482. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/LICENSE.txt +19 -0
  483. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/README.md +38 -0
  484. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/Rakefile +2 -0
  485. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar.rb +18 -0
  486. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/base.rb +183 -0
  487. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/calculators/length.rb +100 -0
  488. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/calculators/running_average.rb +9 -0
  489. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/components.rb +5 -0
  490. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/components/bar.rb +102 -0
  491. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/components/percentage.rb +29 -0
  492. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/components/rate.rb +43 -0
  493. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/components/time.rb +107 -0
  494. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/components/title.rb +13 -0
  495. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/errors/invalid_progress_error.rb +4 -0
  496. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/format.rb +3 -0
  497. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/format/formatter.rb +27 -0
  498. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/format/molecule.rb +60 -0
  499. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/format/string.rb +36 -0
  500. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/output.rb +68 -0
  501. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/outputs/non_tty.rb +47 -0
  502. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/outputs/null.rb +33 -0
  503. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/outputs/tty.rb +32 -0
  504. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/progress.rb +118 -0
  505. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/refinements.rb +1 -0
  506. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/refinements/enumerator.rb +23 -0
  507. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/throttle.rb +25 -0
  508. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/time.rb +32 -0
  509. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/timer.rb +72 -0
  510. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/version.rb +3 -0
  511. data/vendor/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.0/CHANGELOG.md +113 -0
  512. data/vendor/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.0/MIT-LICENSE.txt +22 -0
  513. data/vendor/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.0/README.md +124 -0
  514. data/vendor/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.0/Rakefile +64 -0
  515. data/vendor/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.0/data/display_width.marshal.gz +0 -0
  516. data/vendor/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.0/lib/unicode/display_width.rb +51 -0
  517. data/vendor/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.0/lib/unicode/display_width/constants.rb +8 -0
  518. data/vendor/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.0/lib/unicode/display_width/index.rb +12 -0
  519. data/vendor/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.0/lib/unicode/display_width/no_string_ext.rb +7 -0
  520. data/vendor/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.0/lib/unicode/display_width/string_ext.rb +17 -0
  521. data/vendor/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.0/spec/display_width_spec.rb +156 -0
  522. data/vendor/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.0/unicode-display_width.gemspec +18 -0
  523. data/vendor/bundle/ruby/2.5.0/specifications/ast-2.4.0.gemspec +59 -0
  524. data/vendor/bundle/ruby/2.5.0/specifications/parser-2.5.1.2.gemspec +62 -0
  525. data/vendor/bundle/ruby/2.5.0/specifications/powerpack-0.1.2.gemspec +41 -0
  526. data/vendor/bundle/ruby/2.5.0/specifications/rake-12.3.1.gemspec +49 -0
  527. data/vendor/bundle/ruby/2.5.0/specifications/rspec-3.8.0.gemspec +42 -0
  528. data/vendor/bundle/ruby/2.5.0/specifications/rspec-core-3.8.0.gemspec +62 -0
  529. data/vendor/bundle/ruby/2.5.0/specifications/rspec-expectations-3.8.1.gemspec +50 -0
  530. data/vendor/bundle/ruby/2.5.0/specifications/rspec-mocks-3.8.0.gemspec +50 -0
  531. data/vendor/bundle/ruby/2.5.0/specifications/rspec-support-3.8.0.gemspec +41 -0
  532. data/vendor/bundle/ruby/2.5.0/specifications/ruby-progressbar-1.10.0.gemspec +46 -0
  533. data/vendor/bundle/ruby/2.5.0/specifications/unicode-display_width-1.4.0.gemspec +38 -0
  534. metadata +532 -2
@@ -0,0 +1,267 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Parser
4
+
5
+ ##
6
+ # Base class for version-specific parsers.
7
+ #
8
+ # @api public
9
+ #
10
+ # @!attribute [r] diagnostics
11
+ # @return [Parser::Diagnostic::Engine]
12
+ #
13
+ # @!attribute [r] static_env
14
+ # @return [Parser::StaticEnvironment]
15
+ #
16
+ class Base < Racc::Parser
17
+ ##
18
+ # Parses a string of Ruby code and returns the AST. If the source
19
+ # cannot be parsed, {SyntaxError} is raised and a diagnostic is
20
+ # printed to `stderr`.
21
+ #
22
+ # @example
23
+ # Parser::Base.parse('puts "hello"')
24
+ #
25
+ # @param [String] string The block of code to parse.
26
+ # @param [String] file The name of the file the code originated from.
27
+ # @param [Numeric] line The initial line number.
28
+ # @return [Parser::AST::Node]
29
+ #
30
+ def self.parse(string, file='(string)', line=1)
31
+ parser = default_parser
32
+ source_buffer = setup_source_buffer(file, line, string, parser.default_encoding)
33
+ parser.parse(source_buffer)
34
+ end
35
+
36
+ ##
37
+ # Parses a string of Ruby code and returns the AST and comments. If the
38
+ # source cannot be parsed, {SyntaxError} is raised and a diagnostic is
39
+ # printed to `stderr`.
40
+ #
41
+ # @example
42
+ # Parser::Base.parse_with_comments('puts "hello"')
43
+ #
44
+ # @param [String] string The block of code to parse.
45
+ # @param [String] file The name of the file the code originated from.
46
+ # @param [Numeric] line The initial line number.
47
+ # @return [Array]
48
+ #
49
+ def self.parse_with_comments(string, file='(string)', line=1)
50
+ parser = default_parser
51
+ source_buffer = setup_source_buffer(file, line, string, parser.default_encoding)
52
+ parser.parse_with_comments(source_buffer)
53
+ end
54
+
55
+ ##
56
+ # Parses Ruby source code by reading it from a file. If the source
57
+ # cannot be parsed, {SyntaxError} is raised and a diagnostic is
58
+ # printed to `stderr`.
59
+ #
60
+ # @param [String] filename Path to the file to parse.
61
+ # @return [Parser::AST::Node]
62
+ # @see #parse
63
+ #
64
+ def self.parse_file(filename)
65
+ parse(File.read(filename), filename)
66
+ end
67
+
68
+ ##
69
+ # Parses Ruby source code by reading it from a file and returns the AST and
70
+ # comments. If the source cannot be parsed, {SyntaxError} is raised and a
71
+ # diagnostic is printed to `stderr`.
72
+ #
73
+ # @param [String] filename Path to the file to parse.
74
+ # @return [Array]
75
+ # @see #parse
76
+ #
77
+ def self.parse_file_with_comments(filename)
78
+ parse_with_comments(File.read(filename), filename)
79
+ end
80
+
81
+ ##
82
+ # @return [Parser::Base] parser with the default options set.
83
+ #
84
+ def self.default_parser
85
+ parser = new
86
+
87
+ parser.diagnostics.all_errors_are_fatal = true
88
+ parser.diagnostics.ignore_warnings = true
89
+
90
+ parser.diagnostics.consumer = lambda do |diagnostic|
91
+ $stderr.puts(diagnostic.render)
92
+ end
93
+
94
+ parser
95
+ end
96
+
97
+ def self.setup_source_buffer(file, line, string, encoding)
98
+ string = string.dup.force_encoding(encoding)
99
+
100
+ source_buffer = Source::Buffer.new(file, line)
101
+
102
+ if name == 'Parser::Ruby18'
103
+ source_buffer.raw_source = string
104
+ else
105
+ source_buffer.source = string
106
+ end
107
+
108
+ source_buffer
109
+ end
110
+ private_class_method :setup_source_buffer
111
+
112
+ attr_reader :diagnostics
113
+ attr_reader :builder
114
+ attr_reader :static_env
115
+ attr_reader :source_buffer
116
+ attr_reader :context
117
+
118
+ ##
119
+ # @param [Parser::Builders::Default] builder The AST builder to use.
120
+ #
121
+ def initialize(builder=Parser::Builders::Default.new)
122
+ @diagnostics = Diagnostic::Engine.new
123
+
124
+ @static_env = StaticEnvironment.new
125
+
126
+ @lexer = Lexer.new(version)
127
+ @lexer.diagnostics = @diagnostics
128
+ @lexer.static_env = @static_env
129
+
130
+ @builder = builder
131
+ @builder.parser = self
132
+ @context = Context.new
133
+
134
+ # Last emitted token
135
+ @last_token = nil
136
+
137
+ if self.class::Racc_debug_parser && ENV['RACC_DEBUG']
138
+ @yydebug = true
139
+ end
140
+
141
+ reset
142
+ end
143
+
144
+ ##
145
+ # Resets the state of the parser.
146
+ #
147
+ def reset
148
+ @source_buffer = nil
149
+
150
+ @lexer.reset
151
+ @static_env.reset
152
+ @context.reset
153
+
154
+ self
155
+ end
156
+
157
+ ##
158
+ # Parses a source buffer and returns the AST.
159
+ #
160
+ # @param [Parser::Source::Buffer] source_buffer The source buffer to parse.
161
+ # @return [Parser::AST::Node]
162
+ #
163
+ def parse(source_buffer)
164
+ @lexer.source_buffer = source_buffer
165
+ @source_buffer = source_buffer
166
+
167
+ do_parse
168
+ ensure
169
+ # Don't keep references to the source file.
170
+ @source_buffer = nil
171
+ @lexer.source_buffer = nil
172
+ end
173
+
174
+ ##
175
+ # Parses a source buffer and returns the AST and the source code comments.
176
+ #
177
+ # @see #parse
178
+ # @see Parser::Source::Comment#associate
179
+ # @return [Array]
180
+ #
181
+ def parse_with_comments(source_buffer)
182
+ @lexer.comments = []
183
+
184
+ [ parse(source_buffer), @lexer.comments ]
185
+ ensure
186
+ @lexer.comments = nil
187
+ end
188
+
189
+ ##
190
+ # Parses a source buffer and returns the AST, the source code comments,
191
+ # and the tokens emitted by the lexer. If `recover` is true and a fatal
192
+ # {SyntaxError} is encountered, `nil` is returned instead of the AST, and
193
+ # comments as well as tokens are only returned up to the location of
194
+ # the error.
195
+ #
196
+ # Currently, token stream format returned by #tokenize is not documented,
197
+ # but is considered part of a public API and only changed according
198
+ # to Semantic Versioning.
199
+ #
200
+ # However, note that the exact token composition of various constructs
201
+ # might vary. For example, a string `"foo"` is represented equally well
202
+ # by `:tSTRING_BEG " :tSTRING_CONTENT foo :tSTRING_END "` and
203
+ # `:tSTRING "foo"`; such details must not be relied upon.
204
+ #
205
+ # @param [Parser::Source::Buffer] source_buffer
206
+ # @param [Boolean] recover If true, recover from syntax errors. False by default.
207
+ # @return [Array]
208
+ #
209
+ def tokenize(source_buffer, recover=false)
210
+ @lexer.tokens = []
211
+ @lexer.comments = []
212
+
213
+ begin
214
+ ast = parse(source_buffer)
215
+ rescue Parser::SyntaxError
216
+ raise if !recover
217
+ end
218
+
219
+ [ ast, @lexer.comments, @lexer.tokens ]
220
+ ensure
221
+ @lexer.tokens = nil
222
+ @lexer.comments = nil
223
+ end
224
+
225
+ private
226
+
227
+ def next_token
228
+ token = @lexer.advance
229
+ @last_token = token
230
+ token
231
+ end
232
+
233
+ def check_kwarg_name(name_t)
234
+ case name_t[0]
235
+ when /^[a-z_]/
236
+ # OK
237
+ when /^[A-Z]/
238
+ diagnostic :error, :argument_const, nil, name_t
239
+ end
240
+ end
241
+
242
+ def diagnostic(level, reason, arguments, location_t, highlights_ts=[])
243
+ _, location = location_t
244
+
245
+ highlights = highlights_ts.map do |token|
246
+ _, range = token
247
+ range
248
+ end
249
+
250
+ @diagnostics.process(
251
+ Diagnostic.new(level, reason, arguments, location, highlights))
252
+
253
+ if level == :error
254
+ yyerror
255
+ end
256
+ end
257
+
258
+ def on_error(error_token_id, error_value, value_stack)
259
+ token_name = token_to_str(error_token_id)
260
+ _, location = error_value
261
+
262
+ @diagnostics.process(Diagnostic.new(
263
+ :error, :unexpected_token, { :token => token_name }, location))
264
+ end
265
+ end
266
+
267
+ end
@@ -0,0 +1,1677 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Parser
4
+
5
+ ##
6
+ # Default AST builder. Uses {AST::Node}s.
7
+ #
8
+ class Builders::Default
9
+ class << self
10
+ ##
11
+ # AST compatibility attribute; since `-> {}` is not semantically
12
+ # equivalent to `lambda {}`, all new code should set this attribute
13
+ # to true.
14
+ #
15
+ # If set to false (the default), `-> {}` is emitted as
16
+ # `s(:block, s(:send, nil, :lambda), s(:args), nil)`.
17
+ #
18
+ # If set to true, `-> {}` is emitted as
19
+ # `s(:block, s(:lambda), s(:args), nil)`.
20
+ #
21
+ # @return [Boolean]
22
+ attr_accessor :emit_lambda
23
+ end
24
+
25
+ @emit_lambda = false
26
+
27
+ class << self
28
+ ##
29
+ # AST compatibility attribute; block arguments of `m { |a| }` are
30
+ # not semantically equivalent to block arguments of `m { |a,| }` or `m { |a, b| }`,
31
+ # all new code should set this attribute to true.
32
+ #
33
+ # If set to false (the default), arguments of `m { |a| }` are emitted as
34
+ # `s(:args, s(:arg, :a))`.
35
+ #
36
+ # If set to true, arguments of `m { |a| }` are emitted as
37
+ # `s(:args, s(:procarg0, :a)).
38
+ #
39
+ # @return [Boolean]
40
+ attr_accessor :emit_procarg0
41
+ end
42
+
43
+ @emit_procarg0 = false
44
+
45
+ class << self
46
+ ##
47
+ # AST compatibility attribute; locations of `__ENCODING__` are not the same
48
+ # as locations of `Encoding::UTF_8` causing problems during rewriting,
49
+ # all new code should set this attribute to true.
50
+ #
51
+ # If set to false (the default), `__ENCODING__` is emitted as
52
+ # ` s(:const, s(:const, nil, :Encoding), :UTF_8)`.
53
+ #
54
+ # If set to true, `__ENCODING__` is emitted as
55
+ # `s(:__ENCODING__)`.
56
+ #
57
+ # @return [Boolean]
58
+ attr_accessor :emit_encoding
59
+ end
60
+
61
+ @emit_encoding = false
62
+
63
+ class << self
64
+ ##
65
+ # AST compatibility attribute; indexed assignment, `x[] = 1`, is not
66
+ # semantically equivalent to calling the method directly, `x.[]=(1)`.
67
+ # Specifically, in the former case, the expression's value is always 1,
68
+ # and in the latter case, the expression's value is the return value
69
+ # of the `[]=` method.
70
+ #
71
+ # If set to false (the default), `self[1]` is emitted as
72
+ # `s(:send, s(:self), :[], s(:int, 1))`, and `self[1] = 2` is
73
+ # emitted as `s(:send, s(:self), :[]=, s(:int, 1), s(:int, 2))`.
74
+ #
75
+ # If set to true, `self[1]` is emitted as
76
+ # `s(:index, s(:self), s(:int, 1))`, and `self[1] = 2` is
77
+ # emitted as `s(:indexasgn, s(:self), s(:int, 1), s(:int, 2))`.
78
+ #
79
+ # @return [Boolean]
80
+ attr_accessor :emit_index
81
+ end
82
+
83
+ @emit_index = false
84
+
85
+ class << self
86
+ ##
87
+ # @api private
88
+ def modernize
89
+ @emit_lambda = true
90
+ @emit_procarg0 = true
91
+ @emit_encoding = true
92
+ @emit_index = true
93
+ end
94
+ end
95
+
96
+ ##
97
+ # @api private
98
+ attr_accessor :parser
99
+
100
+ ##
101
+ # If set to true (the default), `__FILE__` and `__LINE__` are transformed to
102
+ # literal nodes. For example, `s(:str, "lib/foo.rb")` and `s(:int, 10)`.
103
+ #
104
+ # If set to false, `__FILE__` and `__LINE__` are emitted as-is,
105
+ # i.e. as `s(:__FILE__)` and `s(:__LINE__)` nodes.
106
+ #
107
+ # Source maps are identical in both cases.
108
+ #
109
+ # @return [Boolean]
110
+ attr_accessor :emit_file_line_as_literals
111
+
112
+ ##
113
+ # Initializes attributes:
114
+ #
115
+ # * `emit_file_line_as_literals`: `true`
116
+ def initialize
117
+ @emit_file_line_as_literals = true
118
+ end
119
+
120
+ # @!parse private
121
+
122
+ #
123
+ # Literals
124
+ #
125
+
126
+ # Singletons
127
+
128
+ def nil(nil_t)
129
+ n0(:nil,
130
+ token_map(nil_t))
131
+ end
132
+
133
+ def true(true_t)
134
+ n0(:true,
135
+ token_map(true_t))
136
+ end
137
+
138
+ def false(false_t)
139
+ n0(:false,
140
+ token_map(false_t))
141
+ end
142
+
143
+ # Numerics
144
+
145
+ def integer(integer_t)
146
+ numeric(:int, integer_t)
147
+ end
148
+
149
+ def float(float_t)
150
+ numeric(:float, float_t)
151
+ end
152
+
153
+ def rational(rational_t)
154
+ numeric(:rational, rational_t)
155
+ end
156
+
157
+ def complex(complex_t)
158
+ numeric(:complex, complex_t)
159
+ end
160
+
161
+ def numeric(kind, token)
162
+ n(kind, [ value(token) ],
163
+ Source::Map::Operator.new(nil, loc(token)))
164
+ end
165
+ private :numeric
166
+
167
+ def unary_num(unary_t, numeric)
168
+ value, = *numeric
169
+ operator_loc = loc(unary_t)
170
+
171
+ case value(unary_t)
172
+ when '+'
173
+ value = +value
174
+ when '-'
175
+ value = -value
176
+ end
177
+
178
+ numeric.updated(nil, [ value ],
179
+ :location =>
180
+ Source::Map::Operator.new(
181
+ operator_loc,
182
+ operator_loc.join(numeric.loc.expression)))
183
+ end
184
+
185
+ def __LINE__(__LINE__t)
186
+ n0(:__LINE__,
187
+ token_map(__LINE__t))
188
+ end
189
+
190
+ # Strings
191
+
192
+ def string(string_t)
193
+ n(:str, [ string_value(string_t) ],
194
+ delimited_string_map(string_t))
195
+ end
196
+
197
+ def string_internal(string_t)
198
+ n(:str, [ string_value(string_t) ],
199
+ unquoted_map(string_t))
200
+ end
201
+
202
+ def string_compose(begin_t, parts, end_t)
203
+ if collapse_string_parts?(parts)
204
+ if begin_t.nil? && end_t.nil?
205
+ parts.first
206
+ else
207
+ n(:str, parts.first.children,
208
+ string_map(begin_t, parts, end_t))
209
+ end
210
+ else
211
+ n(:dstr, [ *parts ],
212
+ string_map(begin_t, parts, end_t))
213
+ end
214
+ end
215
+
216
+ def character(char_t)
217
+ n(:str, [ string_value(char_t) ],
218
+ prefix_string_map(char_t))
219
+ end
220
+
221
+ def __FILE__(__FILE__t)
222
+ n0(:__FILE__,
223
+ token_map(__FILE__t))
224
+ end
225
+
226
+ # Symbols
227
+
228
+ def symbol(symbol_t)
229
+ n(:sym, [ string_value(symbol_t).to_sym ],
230
+ prefix_string_map(symbol_t))
231
+ end
232
+
233
+ def symbol_internal(symbol_t)
234
+ n(:sym, [ string_value(symbol_t).to_sym ],
235
+ unquoted_map(symbol_t))
236
+ end
237
+
238
+ def symbol_compose(begin_t, parts, end_t)
239
+ if collapse_string_parts?(parts)
240
+ str = parts.first
241
+
242
+ n(:sym, [ str.children.first.to_sym ],
243
+ collection_map(begin_t, str.loc.expression, end_t))
244
+ elsif @parser.version == 18 && parts.empty?
245
+ diagnostic :error, :empty_symbol, nil, loc(begin_t).join(loc(end_t))
246
+ else
247
+ n(:dsym, [ *parts ],
248
+ collection_map(begin_t, parts, end_t))
249
+ end
250
+ end
251
+
252
+ # Executable strings
253
+
254
+ def xstring_compose(begin_t, parts, end_t)
255
+ n(:xstr, [ *parts ],
256
+ string_map(begin_t, parts, end_t))
257
+ end
258
+
259
+ # Indented (interpolated, noninterpolated, executable) strings
260
+
261
+ def dedent_string(node, dedent_level)
262
+ if !dedent_level.nil?
263
+ dedenter = Lexer::Dedenter.new(dedent_level)
264
+
265
+ if node.type == :str
266
+ str = node.children.first
267
+ dedenter.dedent(str)
268
+ elsif node.type == :dstr || node.type == :xstr
269
+ node.children.each do |str_node|
270
+ if str_node.type == :str
271
+ str = str_node.children.first
272
+ dedenter.dedent(str)
273
+ else
274
+ dedenter.interrupt
275
+ end
276
+ end
277
+ end
278
+ end
279
+
280
+ node
281
+ end
282
+
283
+ # Regular expressions
284
+
285
+ def regexp_options(regopt_t)
286
+ options = value(regopt_t).
287
+ each_char.sort.uniq.
288
+ map(&:to_sym)
289
+
290
+ n(:regopt, options,
291
+ token_map(regopt_t))
292
+ end
293
+
294
+ def regexp_compose(begin_t, parts, end_t, options)
295
+ begin
296
+ static_regexp(parts, options)
297
+ rescue RegexpError => e
298
+ diagnostic :error, :invalid_regexp, { :message => e.message },
299
+ loc(begin_t).join(loc(end_t))
300
+ end
301
+
302
+ n(:regexp, (parts << options),
303
+ regexp_map(begin_t, end_t, options))
304
+ end
305
+
306
+ # Arrays
307
+
308
+ def array(begin_t, elements, end_t)
309
+ n(:array, elements,
310
+ collection_map(begin_t, elements, end_t))
311
+ end
312
+
313
+ def splat(star_t, arg=nil)
314
+ if arg.nil?
315
+ n0(:splat,
316
+ unary_op_map(star_t))
317
+ else
318
+ n(:splat, [ arg ],
319
+ unary_op_map(star_t, arg))
320
+ end
321
+ end
322
+
323
+ def word(parts)
324
+ if collapse_string_parts?(parts)
325
+ parts.first
326
+ else
327
+ n(:dstr, [ *parts ],
328
+ collection_map(nil, parts, nil))
329
+ end
330
+ end
331
+
332
+ def words_compose(begin_t, parts, end_t)
333
+ n(:array, [ *parts ],
334
+ collection_map(begin_t, parts, end_t))
335
+ end
336
+
337
+ def symbols_compose(begin_t, parts, end_t)
338
+ parts = parts.map do |part|
339
+ case part.type
340
+ when :str
341
+ value, = *part
342
+ part.updated(:sym, [ value.to_sym ])
343
+ when :dstr
344
+ part.updated(:dsym)
345
+ else
346
+ part
347
+ end
348
+ end
349
+
350
+ n(:array, [ *parts ],
351
+ collection_map(begin_t, parts, end_t))
352
+ end
353
+
354
+ # Hashes
355
+
356
+ def pair(key, assoc_t, value)
357
+ n(:pair, [ key, value ],
358
+ binary_op_map(key, assoc_t, value))
359
+ end
360
+
361
+ def pair_list_18(list)
362
+ if list.size % 2 != 0
363
+ diagnostic :error, :odd_hash, nil, list.last.loc.expression
364
+ else
365
+ list.
366
+ each_slice(2).map do |key, value|
367
+ n(:pair, [ key, value ],
368
+ binary_op_map(key, nil, value))
369
+ end
370
+ end
371
+ end
372
+
373
+ def pair_keyword(key_t, value)
374
+ key_map, pair_map = pair_keyword_map(key_t, value)
375
+
376
+ key = n(:sym, [ value(key_t).to_sym ], key_map)
377
+
378
+ n(:pair, [ key, value ], pair_map)
379
+ end
380
+
381
+ def pair_quoted(begin_t, parts, end_t, value)
382
+ end_t, pair_map = pair_quoted_map(begin_t, end_t, value)
383
+
384
+ key = symbol_compose(begin_t, parts, end_t)
385
+
386
+ n(:pair, [ key, value ], pair_map)
387
+ end
388
+
389
+ def kwsplat(dstar_t, arg)
390
+ n(:kwsplat, [ arg ],
391
+ unary_op_map(dstar_t, arg))
392
+ end
393
+
394
+ def associate(begin_t, pairs, end_t)
395
+ n(:hash, [ *pairs ],
396
+ collection_map(begin_t, pairs, end_t))
397
+ end
398
+
399
+ # Ranges
400
+
401
+ def range_inclusive(lhs, dot2_t, rhs)
402
+ n(:irange, [ lhs, rhs ],
403
+ range_map(lhs, dot2_t, rhs))
404
+ end
405
+
406
+ def range_exclusive(lhs, dot3_t, rhs)
407
+ n(:erange, [ lhs, rhs ],
408
+ range_map(lhs, dot3_t, rhs))
409
+ end
410
+
411
+ #
412
+ # Access
413
+ #
414
+
415
+ def self(token)
416
+ n0(:self,
417
+ token_map(token))
418
+ end
419
+
420
+ def ident(token)
421
+ n(:ident, [ value(token).to_sym ],
422
+ variable_map(token))
423
+ end
424
+
425
+ def ivar(token)
426
+ n(:ivar, [ value(token).to_sym ],
427
+ variable_map(token))
428
+ end
429
+
430
+ def gvar(token)
431
+ n(:gvar, [ value(token).to_sym ],
432
+ variable_map(token))
433
+ end
434
+
435
+ def cvar(token)
436
+ n(:cvar, [ value(token).to_sym ],
437
+ variable_map(token))
438
+ end
439
+
440
+ def back_ref(token)
441
+ n(:back_ref, [ value(token).to_sym ],
442
+ token_map(token))
443
+ end
444
+
445
+ def nth_ref(token)
446
+ n(:nth_ref, [ value(token) ],
447
+ token_map(token))
448
+ end
449
+
450
+ def accessible(node)
451
+ case node.type
452
+ when :__FILE__
453
+ if @emit_file_line_as_literals
454
+ n(:str, [ node.loc.expression.source_buffer.name ],
455
+ node.loc.dup)
456
+ else
457
+ node
458
+ end
459
+
460
+ when :__LINE__
461
+ if @emit_file_line_as_literals
462
+ n(:int, [ node.loc.expression.line ],
463
+ node.loc.dup)
464
+ else
465
+ node
466
+ end
467
+
468
+ when :__ENCODING__
469
+ if !self.class.emit_encoding
470
+ n(:const, [ n(:const, [ nil, :Encoding], nil), :UTF_8 ],
471
+ node.loc.dup)
472
+ else
473
+ node
474
+ end
475
+
476
+ when :ident
477
+ name, = *node
478
+
479
+ if @parser.static_env.declared?(name)
480
+ node.updated(:lvar)
481
+ else
482
+ name, = *node
483
+ n(:send, [ nil, name ],
484
+ var_send_map(node))
485
+ end
486
+
487
+ else
488
+ node
489
+ end
490
+ end
491
+
492
+ def const(name_t)
493
+ n(:const, [ nil, value(name_t).to_sym ],
494
+ constant_map(nil, nil, name_t))
495
+ end
496
+
497
+ def const_global(t_colon3, name_t)
498
+ cbase = n0(:cbase, token_map(t_colon3))
499
+
500
+ n(:const, [ cbase, value(name_t).to_sym ],
501
+ constant_map(cbase, t_colon3, name_t))
502
+ end
503
+
504
+ def const_fetch(scope, t_colon2, name_t)
505
+ n(:const, [ scope, value(name_t).to_sym ],
506
+ constant_map(scope, t_colon2, name_t))
507
+ end
508
+
509
+ def __ENCODING__(__ENCODING__t)
510
+ n0(:__ENCODING__,
511
+ token_map(__ENCODING__t))
512
+ end
513
+
514
+ #
515
+ # Assignment
516
+ #
517
+
518
+ def assignable(node)
519
+ case node.type
520
+ when :cvar
521
+ node.updated(:cvasgn)
522
+
523
+ when :ivar
524
+ node.updated(:ivasgn)
525
+
526
+ when :gvar
527
+ node.updated(:gvasgn)
528
+
529
+ when :const
530
+ unless @parser.context.dynamic_const_definition_allowed?
531
+ diagnostic :error, :dynamic_const, nil, node.loc.expression
532
+ end
533
+
534
+ node.updated(:casgn)
535
+
536
+ when :ident
537
+ name, = *node
538
+ @parser.static_env.declare(name)
539
+
540
+ node.updated(:lvasgn)
541
+
542
+ when :nil, :self, :true, :false,
543
+ :__FILE__, :__LINE__, :__ENCODING__
544
+ diagnostic :error, :invalid_assignment, nil, node.loc.expression
545
+
546
+ when :back_ref, :nth_ref
547
+ diagnostic :error, :backref_assignment, nil, node.loc.expression
548
+ end
549
+ end
550
+
551
+ def const_op_assignable(node)
552
+ node.updated(:casgn)
553
+ end
554
+
555
+ def assign(lhs, eql_t, rhs)
556
+ (lhs << rhs).updated(nil, nil,
557
+ :location => lhs.loc.
558
+ with_operator(loc(eql_t)).
559
+ with_expression(join_exprs(lhs, rhs)))
560
+ end
561
+
562
+ def op_assign(lhs, op_t, rhs)
563
+ case lhs.type
564
+ when :gvasgn, :ivasgn, :lvasgn, :cvasgn, :casgn, :send, :csend, :index
565
+ operator = value(op_t)[0..-1].to_sym
566
+ source_map = lhs.loc.
567
+ with_operator(loc(op_t)).
568
+ with_expression(join_exprs(lhs, rhs))
569
+
570
+ if lhs.type == :index
571
+ lhs = lhs.updated(:indexasgn)
572
+ end
573
+
574
+ case operator
575
+ when :'&&'
576
+ n(:and_asgn, [ lhs, rhs ], source_map)
577
+ when :'||'
578
+ n(:or_asgn, [ lhs, rhs ], source_map)
579
+ else
580
+ n(:op_asgn, [ lhs, operator, rhs ], source_map)
581
+ end
582
+
583
+ when :back_ref, :nth_ref
584
+ diagnostic :error, :backref_assignment, nil, lhs.loc.expression
585
+ end
586
+ end
587
+
588
+ def multi_lhs(begin_t, items, end_t)
589
+ n(:mlhs, [ *items ],
590
+ collection_map(begin_t, items, end_t))
591
+ end
592
+
593
+ def multi_assign(lhs, eql_t, rhs)
594
+ n(:masgn, [ lhs, rhs ],
595
+ binary_op_map(lhs, eql_t, rhs))
596
+ end
597
+
598
+ #
599
+ # Class and module definition
600
+ #
601
+
602
+ def def_class(class_t, name,
603
+ lt_t, superclass,
604
+ body, end_t)
605
+ n(:class, [ name, superclass, body ],
606
+ module_definition_map(class_t, name, lt_t, end_t))
607
+ end
608
+
609
+ def def_sclass(class_t, lshft_t, expr,
610
+ body, end_t)
611
+ n(:sclass, [ expr, body ],
612
+ module_definition_map(class_t, nil, lshft_t, end_t))
613
+ end
614
+
615
+ def def_module(module_t, name,
616
+ body, end_t)
617
+ n(:module, [ name, body ],
618
+ module_definition_map(module_t, name, nil, end_t))
619
+ end
620
+
621
+ #
622
+ # Method (un)definition
623
+ #
624
+
625
+ def def_method(def_t, name_t, args,
626
+ body, end_t)
627
+ n(:def, [ value(name_t).to_sym, args, body ],
628
+ definition_map(def_t, nil, name_t, end_t))
629
+ end
630
+
631
+ def def_singleton(def_t, definee, dot_t,
632
+ name_t, args,
633
+ body, end_t)
634
+ case definee.type
635
+ when :int, :str, :dstr, :sym, :dsym,
636
+ :regexp, :array, :hash
637
+
638
+ diagnostic :error, :singleton_literal, nil, definee.loc.expression
639
+
640
+ else
641
+ n(:defs, [ definee, value(name_t).to_sym, args, body ],
642
+ definition_map(def_t, dot_t, name_t, end_t))
643
+ end
644
+ end
645
+
646
+ def undef_method(undef_t, names)
647
+ n(:undef, [ *names ],
648
+ keyword_map(undef_t, nil, names, nil))
649
+ end
650
+
651
+ def alias(alias_t, to, from)
652
+ n(:alias, [ to, from ],
653
+ keyword_map(alias_t, nil, [to, from], nil))
654
+ end
655
+
656
+ #
657
+ # Formal arguments
658
+ #
659
+
660
+ def args(begin_t, args, end_t, check_args=true)
661
+ args = check_duplicate_args(args) if check_args
662
+ n(:args, args,
663
+ collection_map(begin_t, args, end_t))
664
+ end
665
+
666
+ def arg(name_t)
667
+ n(:arg, [ value(name_t).to_sym ],
668
+ variable_map(name_t))
669
+ end
670
+
671
+ def optarg(name_t, eql_t, value)
672
+ n(:optarg, [ value(name_t).to_sym, value ],
673
+ variable_map(name_t).
674
+ with_operator(loc(eql_t)).
675
+ with_expression(loc(name_t).join(value.loc.expression)))
676
+ end
677
+
678
+ def restarg(star_t, name_t=nil)
679
+ if name_t
680
+ n(:restarg, [ value(name_t).to_sym ],
681
+ arg_prefix_map(star_t, name_t))
682
+ else
683
+ n0(:restarg,
684
+ arg_prefix_map(star_t))
685
+ end
686
+ end
687
+
688
+ def kwarg(name_t)
689
+ n(:kwarg, [ value(name_t).to_sym ],
690
+ kwarg_map(name_t))
691
+ end
692
+
693
+ def kwoptarg(name_t, value)
694
+ n(:kwoptarg, [ value(name_t).to_sym, value ],
695
+ kwarg_map(name_t, value))
696
+ end
697
+
698
+ def kwrestarg(dstar_t, name_t=nil)
699
+ if name_t
700
+ n(:kwrestarg, [ value(name_t).to_sym ],
701
+ arg_prefix_map(dstar_t, name_t))
702
+ else
703
+ n0(:kwrestarg,
704
+ arg_prefix_map(dstar_t))
705
+ end
706
+ end
707
+
708
+ def shadowarg(name_t)
709
+ n(:shadowarg, [ value(name_t).to_sym ],
710
+ variable_map(name_t))
711
+ end
712
+
713
+ def blockarg(amper_t, name_t)
714
+ n(:blockarg, [ value(name_t).to_sym ],
715
+ arg_prefix_map(amper_t, name_t))
716
+ end
717
+
718
+ def procarg0(arg)
719
+ if self.class.emit_procarg0
720
+ arg.updated(:procarg0)
721
+ else
722
+ arg
723
+ end
724
+ end
725
+
726
+ # Ruby 1.8 block arguments
727
+
728
+ def arg_expr(expr)
729
+ if expr.type == :lvasgn
730
+ expr.updated(:arg)
731
+ else
732
+ n(:arg_expr, [ expr ],
733
+ expr.loc.dup)
734
+ end
735
+ end
736
+
737
+ def restarg_expr(star_t, expr=nil)
738
+ if expr.nil?
739
+ n0(:restarg, token_map(star_t))
740
+ elsif expr.type == :lvasgn
741
+ expr.updated(:restarg)
742
+ else
743
+ n(:restarg_expr, [ expr ],
744
+ expr.loc.dup)
745
+ end
746
+ end
747
+
748
+ def blockarg_expr(amper_t, expr)
749
+ if expr.type == :lvasgn
750
+ expr.updated(:blockarg)
751
+ else
752
+ n(:blockarg_expr, [ expr ],
753
+ expr.loc.dup)
754
+ end
755
+ end
756
+
757
+ # MacRuby Objective-C arguments
758
+
759
+ def objc_kwarg(kwname_t, assoc_t, name_t)
760
+ kwname_l = loc(kwname_t)
761
+ if assoc_t.nil? # a: b, not a => b
762
+ kwname_l = kwname_l.resize(kwname_l.size - 1)
763
+ operator_l = kwname_l.end.resize(1)
764
+ else
765
+ operator_l = loc(assoc_t)
766
+ end
767
+
768
+ n(:objc_kwarg, [ value(kwname_t).to_sym, value(name_t).to_sym ],
769
+ Source::Map::ObjcKwarg.new(kwname_l, operator_l, loc(name_t),
770
+ kwname_l.join(loc(name_t))))
771
+ end
772
+
773
+ def objc_restarg(star_t, name=nil)
774
+ if name.nil?
775
+ n0(:restarg, arg_prefix_map(star_t))
776
+ elsif name.type == :arg # regular restarg
777
+ name.updated(:restarg, nil,
778
+ { :location => name.loc.with_operator(loc(star_t)) })
779
+ else # restarg with objc_kwarg inside
780
+ n(:objc_restarg, [ name ],
781
+ unary_op_map(star_t, name))
782
+ end
783
+ end
784
+
785
+ #
786
+ # Method calls
787
+ #
788
+
789
+ def call_type_for_dot(dot_t)
790
+ if !dot_t.nil? && value(dot_t) == :anddot
791
+ :csend
792
+ else
793
+ # This case is a bit tricky. ruby23.y returns the token tDOT with
794
+ # the value :dot, and the token :tANDDOT with the value :anddot.
795
+ #
796
+ # But, ruby{18..22}.y (which unconditionally expect tDOT) just
797
+ # return "." there, since they are to be kept close to the corresponding
798
+ # Ruby MRI grammars.
799
+ #
800
+ # Thankfully, we don't have to care.
801
+ :send
802
+ end
803
+ end
804
+
805
+ def call_method(receiver, dot_t, selector_t,
806
+ lparen_t=nil, args=[], rparen_t=nil)
807
+ type = call_type_for_dot(dot_t)
808
+ if selector_t.nil?
809
+ n(type, [ receiver, :call, *args ],
810
+ send_map(receiver, dot_t, nil, lparen_t, args, rparen_t))
811
+ else
812
+ n(type, [ receiver, value(selector_t).to_sym, *args ],
813
+ send_map(receiver, dot_t, selector_t, lparen_t, args, rparen_t))
814
+ end
815
+ end
816
+
817
+ def call_lambda(lambda_t)
818
+ if self.class.emit_lambda
819
+ n0(:lambda, expr_map(loc(lambda_t)))
820
+ else
821
+ n(:send, [ nil, :lambda ],
822
+ send_map(nil, nil, lambda_t))
823
+ end
824
+ end
825
+
826
+ def block(method_call, begin_t, args, body, end_t)
827
+ _receiver, _selector, *call_args = *method_call
828
+
829
+ if method_call.type == :yield
830
+ diagnostic :error, :block_given_to_yield, nil, method_call.loc.keyword, [loc(begin_t)]
831
+ end
832
+
833
+ last_arg = call_args.last
834
+ if last_arg && last_arg.type == :block_pass
835
+ diagnostic :error, :block_and_blockarg, nil, last_arg.loc.expression, [loc(begin_t)]
836
+ end
837
+
838
+ if [:send, :csend, :index, :super, :zsuper, :lambda].include?(method_call.type)
839
+ n(:block, [ method_call, args, body ],
840
+ block_map(method_call.loc.expression, begin_t, end_t))
841
+ else
842
+ # Code like "return foo 1 do end" is reduced in a weird sequence.
843
+ # Here, method_call is actually (return).
844
+ actual_send, = *method_call
845
+ block =
846
+ n(:block, [ actual_send, args, body ],
847
+ block_map(actual_send.loc.expression, begin_t, end_t))
848
+
849
+ n(method_call.type, [ block ],
850
+ method_call.loc.with_expression(join_exprs(method_call, block)))
851
+ end
852
+ end
853
+
854
+ def block_pass(amper_t, arg)
855
+ n(:block_pass, [ arg ],
856
+ unary_op_map(amper_t, arg))
857
+ end
858
+
859
+ def objc_varargs(pair, rest_of_varargs)
860
+ value, first_vararg = *pair
861
+ vararg_array = array(nil, [ first_vararg, *rest_of_varargs ], nil).
862
+ updated(:objc_varargs)
863
+ pair.updated(nil, [ value, vararg_array ],
864
+ { :location => pair.loc.with_expression(
865
+ pair.loc.expression.join(vararg_array.loc.expression)) })
866
+ end
867
+
868
+ def attr_asgn(receiver, dot_t, selector_t)
869
+ method_name = (value(selector_t) + '=').to_sym
870
+ type = call_type_for_dot(dot_t)
871
+
872
+ # Incomplete method call.
873
+ n(type, [ receiver, method_name ],
874
+ send_map(receiver, dot_t, selector_t))
875
+ end
876
+
877
+ def index(receiver, lbrack_t, indexes, rbrack_t)
878
+ if self.class.emit_index
879
+ n(:index, [ receiver, *indexes ],
880
+ index_map(receiver, lbrack_t, rbrack_t))
881
+ else
882
+ n(:send, [ receiver, :[], *indexes ],
883
+ send_index_map(receiver, lbrack_t, rbrack_t))
884
+ end
885
+ end
886
+
887
+ def index_asgn(receiver, lbrack_t, indexes, rbrack_t)
888
+ if self.class.emit_index
889
+ n(:indexasgn, [ receiver, *indexes ],
890
+ index_map(receiver, lbrack_t, rbrack_t))
891
+ else
892
+ # Incomplete method call.
893
+ n(:send, [ receiver, :[]=, *indexes ],
894
+ send_index_map(receiver, lbrack_t, rbrack_t))
895
+ end
896
+ end
897
+
898
+ def binary_op(receiver, operator_t, arg)
899
+ source_map = send_binary_op_map(receiver, operator_t, arg)
900
+
901
+ if @parser.version == 18
902
+ operator = value(operator_t)
903
+
904
+ if operator == '!='
905
+ method_call = n(:send, [ receiver, :==, arg ], source_map)
906
+ elsif operator == '!~'
907
+ method_call = n(:send, [ receiver, :=~, arg ], source_map)
908
+ end
909
+
910
+ if %w(!= !~).include?(operator)
911
+ return n(:not, [ method_call ],
912
+ expr_map(source_map.expression))
913
+ end
914
+ end
915
+
916
+ n(:send, [ receiver, value(operator_t).to_sym, arg ],
917
+ source_map)
918
+ end
919
+
920
+ def match_op(receiver, match_t, arg)
921
+ source_map = send_binary_op_map(receiver, match_t, arg)
922
+
923
+ if (regexp = static_regexp_node(receiver))
924
+ regexp.names.each do |name|
925
+ @parser.static_env.declare(name)
926
+ end
927
+
928
+ n(:match_with_lvasgn, [ receiver, arg ],
929
+ source_map)
930
+ else
931
+ n(:send, [ receiver, :=~, arg ],
932
+ source_map)
933
+ end
934
+ end
935
+
936
+ def unary_op(op_t, receiver)
937
+ case value(op_t)
938
+ when '+', '-'
939
+ method = value(op_t) + '@'
940
+ else
941
+ method = value(op_t)
942
+ end
943
+
944
+ n(:send, [ receiver, method.to_sym ],
945
+ send_unary_op_map(op_t, receiver))
946
+ end
947
+
948
+ def not_op(not_t, begin_t=nil, receiver=nil, end_t=nil)
949
+ if @parser.version == 18
950
+ n(:not, [ check_condition(receiver) ],
951
+ unary_op_map(not_t, receiver))
952
+ else
953
+ if receiver.nil?
954
+ nil_node = n0(:begin, collection_map(begin_t, nil, end_t))
955
+
956
+ n(:send, [
957
+ nil_node, :'!'
958
+ ], send_unary_op_map(not_t, nil_node))
959
+ else
960
+ n(:send, [ check_condition(receiver), :'!' ],
961
+ send_map(nil, nil, not_t, begin_t, [receiver], end_t))
962
+ end
963
+ end
964
+ end
965
+
966
+ #
967
+ # Control flow
968
+ #
969
+
970
+ # Logical operations: and, or
971
+
972
+ def logical_op(type, lhs, op_t, rhs)
973
+ n(type, [ lhs, rhs ],
974
+ binary_op_map(lhs, op_t, rhs))
975
+ end
976
+
977
+ # Conditionals
978
+
979
+ def condition(cond_t, cond, then_t,
980
+ if_true, else_t, if_false, end_t)
981
+ n(:if, [ check_condition(cond), if_true, if_false ],
982
+ condition_map(cond_t, cond, then_t, if_true, else_t, if_false, end_t))
983
+ end
984
+
985
+ def condition_mod(if_true, if_false, cond_t, cond)
986
+ n(:if, [ check_condition(cond), if_true, if_false ],
987
+ keyword_mod_map(if_true || if_false, cond_t, cond))
988
+ end
989
+
990
+ def ternary(cond, question_t, if_true, colon_t, if_false)
991
+ n(:if, [ check_condition(cond), if_true, if_false ],
992
+ ternary_map(cond, question_t, if_true, colon_t, if_false))
993
+ end
994
+
995
+ # Case matching
996
+
997
+ def when(when_t, patterns, then_t, body)
998
+ children = patterns << body
999
+ n(:when, children,
1000
+ keyword_map(when_t, then_t, children, nil))
1001
+ end
1002
+
1003
+ def case(case_t, expr, when_bodies, else_t, else_body, end_t)
1004
+ n(:case, [ expr, *(when_bodies << else_body)],
1005
+ condition_map(case_t, expr, nil, nil, else_t, else_body, end_t))
1006
+ end
1007
+
1008
+ # Loops
1009
+
1010
+ def loop(type, keyword_t, cond, do_t, body, end_t)
1011
+ n(type, [ check_condition(cond), body ],
1012
+ keyword_map(keyword_t, do_t, nil, end_t))
1013
+ end
1014
+
1015
+ def loop_mod(type, body, keyword_t, cond)
1016
+ if body.type == :kwbegin
1017
+ type = :"#{type}_post"
1018
+ end
1019
+
1020
+ n(type, [ check_condition(cond), body ],
1021
+ keyword_mod_map(body, keyword_t, cond))
1022
+ end
1023
+
1024
+ def for(for_t, iterator, in_t, iteratee,
1025
+ do_t, body, end_t)
1026
+ n(:for, [ iterator, iteratee, body ],
1027
+ for_map(for_t, in_t, do_t, end_t))
1028
+ end
1029
+
1030
+ # Keywords
1031
+
1032
+ def keyword_cmd(type, keyword_t, lparen_t=nil, args=[], rparen_t=nil)
1033
+ if type == :yield && args.count > 0
1034
+ last_arg = args.last
1035
+ if last_arg.type == :block_pass
1036
+ diagnostic :error, :block_given_to_yield, nil, loc(keyword_t), [last_arg.loc.expression]
1037
+ end
1038
+ end
1039
+
1040
+ n(type, args,
1041
+ keyword_map(keyword_t, lparen_t, args, rparen_t))
1042
+ end
1043
+
1044
+ # BEGIN, END
1045
+
1046
+ def preexe(preexe_t, lbrace_t, compstmt, rbrace_t)
1047
+ n(:preexe, [ compstmt ],
1048
+ keyword_map(preexe_t, lbrace_t, [], rbrace_t))
1049
+ end
1050
+
1051
+ def postexe(postexe_t, lbrace_t, compstmt, rbrace_t)
1052
+ n(:postexe, [ compstmt ],
1053
+ keyword_map(postexe_t, lbrace_t, [], rbrace_t))
1054
+ end
1055
+
1056
+ # Exception handling
1057
+
1058
+ def rescue_body(rescue_t,
1059
+ exc_list, assoc_t, exc_var,
1060
+ then_t, compound_stmt)
1061
+ n(:resbody, [ exc_list, exc_var, compound_stmt ],
1062
+ rescue_body_map(rescue_t, exc_list, assoc_t,
1063
+ exc_var, then_t, compound_stmt))
1064
+ end
1065
+
1066
+ def begin_body(compound_stmt, rescue_bodies=[],
1067
+ else_t=nil, else_=nil,
1068
+ ensure_t=nil, ensure_=nil)
1069
+ if rescue_bodies.any?
1070
+ if else_t
1071
+ compound_stmt =
1072
+ n(:rescue,
1073
+ [ compound_stmt, *(rescue_bodies + [ else_ ]) ],
1074
+ eh_keyword_map(compound_stmt, nil, rescue_bodies, else_t, else_))
1075
+ else
1076
+ compound_stmt =
1077
+ n(:rescue,
1078
+ [ compound_stmt, *(rescue_bodies + [ nil ]) ],
1079
+ eh_keyword_map(compound_stmt, nil, rescue_bodies, nil, nil))
1080
+ end
1081
+ elsif else_t
1082
+ statements = []
1083
+ if !compound_stmt.nil?
1084
+ if compound_stmt.type == :begin
1085
+ statements += compound_stmt.children
1086
+ else
1087
+ statements.push(compound_stmt)
1088
+ end
1089
+ end
1090
+ statements.push(
1091
+ n(:begin, [ else_ ],
1092
+ collection_map(else_t, [ else_ ], nil)))
1093
+ compound_stmt =
1094
+ n(:begin, statements,
1095
+ collection_map(nil, statements, nil))
1096
+ end
1097
+
1098
+ if ensure_t
1099
+ compound_stmt =
1100
+ n(:ensure,
1101
+ [ compound_stmt, ensure_ ],
1102
+ eh_keyword_map(compound_stmt, ensure_t, [ ensure_ ], nil, nil))
1103
+ end
1104
+
1105
+ compound_stmt
1106
+ end
1107
+
1108
+ #
1109
+ # Expression grouping
1110
+ #
1111
+
1112
+ def compstmt(statements)
1113
+ case
1114
+ when statements.none?
1115
+ nil
1116
+ when statements.one?
1117
+ statements.first
1118
+ else
1119
+ n(:begin, statements,
1120
+ collection_map(nil, statements, nil))
1121
+ end
1122
+ end
1123
+
1124
+ def begin(begin_t, body, end_t)
1125
+ if body.nil?
1126
+ # A nil expression: `()'.
1127
+ n0(:begin,
1128
+ collection_map(begin_t, nil, end_t))
1129
+ elsif body.type == :mlhs ||
1130
+ (body.type == :begin &&
1131
+ body.loc.begin.nil? && body.loc.end.nil?)
1132
+ # Synthesized (begin) from compstmt "a; b" or (mlhs)
1133
+ # from multi_lhs "(a, b) = *foo".
1134
+ n(body.type, body.children,
1135
+ collection_map(begin_t, body.children, end_t))
1136
+ else
1137
+ n(:begin, [ body ],
1138
+ collection_map(begin_t, [ body ], end_t))
1139
+ end
1140
+ end
1141
+
1142
+ def begin_keyword(begin_t, body, end_t)
1143
+ if body.nil?
1144
+ # A nil expression: `begin end'.
1145
+ n0(:kwbegin,
1146
+ collection_map(begin_t, nil, end_t))
1147
+ elsif (body.type == :begin &&
1148
+ body.loc.begin.nil? && body.loc.end.nil?)
1149
+ # Synthesized (begin) from compstmt "a; b".
1150
+ n(:kwbegin, body.children,
1151
+ collection_map(begin_t, body.children, end_t))
1152
+ else
1153
+ n(:kwbegin, [ body ],
1154
+ collection_map(begin_t, [ body ], end_t))
1155
+ end
1156
+ end
1157
+
1158
+ private
1159
+
1160
+ #
1161
+ # VERIFICATION
1162
+ #
1163
+
1164
+ def check_condition(cond)
1165
+ case cond.type
1166
+ when :masgn
1167
+ if @parser.version <= 23
1168
+ diagnostic :error, :masgn_as_condition, nil, cond.loc.expression
1169
+ else
1170
+ cond
1171
+ end
1172
+
1173
+ when :begin
1174
+ if cond.children.count == 1
1175
+ cond.updated(nil, [
1176
+ check_condition(cond.children.last)
1177
+ ])
1178
+ else
1179
+ cond
1180
+ end
1181
+
1182
+ when :and, :or, :irange, :erange
1183
+ lhs, rhs = *cond
1184
+
1185
+ type = case cond.type
1186
+ when :irange then :iflipflop
1187
+ when :erange then :eflipflop
1188
+ end
1189
+
1190
+ if [:and, :or].include?(cond.type) &&
1191
+ @parser.version == 18
1192
+ cond
1193
+ else
1194
+ cond.updated(type, [
1195
+ check_condition(lhs),
1196
+ check_condition(rhs)
1197
+ ])
1198
+ end
1199
+
1200
+ when :regexp
1201
+ n(:match_current_line, [ cond ], expr_map(cond.loc.expression))
1202
+
1203
+ else
1204
+ cond
1205
+ end
1206
+ end
1207
+
1208
+ def check_duplicate_args(args, map={})
1209
+ args.each do |this_arg|
1210
+ case this_arg.type
1211
+ when :arg, :optarg, :restarg, :blockarg,
1212
+ :kwarg, :kwoptarg, :kwrestarg,
1213
+ :shadowarg, :procarg0
1214
+
1215
+ this_name, = *this_arg
1216
+
1217
+ that_arg = map[this_name]
1218
+ that_name, = *that_arg
1219
+
1220
+ if that_arg.nil?
1221
+ map[this_name] = this_arg
1222
+ elsif arg_name_collides?(this_name, that_name)
1223
+ diagnostic :error, :duplicate_argument, nil,
1224
+ this_arg.loc.name, [ that_arg.loc.name ]
1225
+ end
1226
+
1227
+ when :mlhs
1228
+ check_duplicate_args(this_arg.children, map)
1229
+ end
1230
+ end
1231
+ end
1232
+
1233
+ def arg_name_collides?(this_name, that_name)
1234
+ case @parser.version
1235
+ when 18
1236
+ this_name == that_name
1237
+ when 19
1238
+ # Ignore underscore.
1239
+ this_name != :_ &&
1240
+ this_name == that_name
1241
+ else
1242
+ # Ignore everything beginning with underscore.
1243
+ this_name && this_name[0] != '_' &&
1244
+ this_name == that_name
1245
+ end
1246
+ end
1247
+
1248
+ #
1249
+ # SOURCE MAPS
1250
+ #
1251
+
1252
+ def n(type, children, source_map)
1253
+ AST::Node.new(type, children, :location => source_map)
1254
+ end
1255
+
1256
+ def n0(type, source_map)
1257
+ n(type, [], source_map)
1258
+ end
1259
+
1260
+ def join_exprs(left_expr, right_expr)
1261
+ left_expr.loc.expression.
1262
+ join(right_expr.loc.expression)
1263
+ end
1264
+
1265
+ def token_map(token)
1266
+ Source::Map.new(loc(token))
1267
+ end
1268
+
1269
+ def delimited_string_map(string_t)
1270
+ str_range = loc(string_t)
1271
+
1272
+ begin_l = str_range.with(end_pos: str_range.begin_pos + 1)
1273
+
1274
+ end_l = str_range.with(begin_pos: str_range.end_pos - 1)
1275
+
1276
+ Source::Map::Collection.new(begin_l, end_l,
1277
+ loc(string_t))
1278
+ end
1279
+
1280
+ def prefix_string_map(symbol)
1281
+ str_range = loc(symbol)
1282
+
1283
+ begin_l = str_range.with(end_pos: str_range.begin_pos + 1)
1284
+
1285
+ Source::Map::Collection.new(begin_l, nil,
1286
+ loc(symbol))
1287
+ end
1288
+
1289
+ def unquoted_map(token)
1290
+ Source::Map::Collection.new(nil, nil,
1291
+ loc(token))
1292
+ end
1293
+
1294
+ def pair_keyword_map(key_t, value_e)
1295
+ key_range = loc(key_t)
1296
+
1297
+ key_l = key_range.adjust(end_pos: -1)
1298
+
1299
+ colon_l = key_range.with(begin_pos: key_range.end_pos - 1)
1300
+
1301
+ [ # key map
1302
+ Source::Map::Collection.new(nil, nil,
1303
+ key_l),
1304
+ # pair map
1305
+ Source::Map::Operator.new(colon_l,
1306
+ key_range.join(value_e.loc.expression)) ]
1307
+ end
1308
+
1309
+ def pair_quoted_map(begin_t, end_t, value_e)
1310
+ end_l = loc(end_t)
1311
+
1312
+ quote_l = end_l.with(begin_pos: end_l.end_pos - 2,
1313
+ end_pos: end_l.end_pos - 1)
1314
+
1315
+ colon_l = end_l.with(begin_pos: end_l.end_pos - 1)
1316
+
1317
+ [ # modified end token
1318
+ [ value(end_t), quote_l ],
1319
+ # pair map
1320
+ Source::Map::Operator.new(colon_l,
1321
+ loc(begin_t).join(value_e.loc.expression)) ]
1322
+ end
1323
+
1324
+ def expr_map(loc)
1325
+ Source::Map.new(loc)
1326
+ end
1327
+
1328
+ def collection_map(begin_t, parts, end_t)
1329
+ if begin_t.nil? || end_t.nil?
1330
+ if parts.any?
1331
+ expr_l = join_exprs(parts.first, parts.last)
1332
+ elsif !begin_t.nil?
1333
+ expr_l = loc(begin_t)
1334
+ elsif !end_t.nil?
1335
+ expr_l = loc(end_t)
1336
+ end
1337
+ else
1338
+ expr_l = loc(begin_t).join(loc(end_t))
1339
+ end
1340
+
1341
+ Source::Map::Collection.new(loc(begin_t), loc(end_t), expr_l)
1342
+ end
1343
+
1344
+ def string_map(begin_t, parts, end_t)
1345
+ if begin_t && value(begin_t).start_with?('<<')
1346
+ if parts.any?
1347
+ expr_l = join_exprs(parts.first, parts.last)
1348
+ else
1349
+ expr_l = loc(end_t).begin
1350
+ end
1351
+
1352
+ Source::Map::Heredoc.new(loc(begin_t), expr_l, loc(end_t))
1353
+ else
1354
+ collection_map(begin_t, parts, end_t)
1355
+ end
1356
+ end
1357
+
1358
+ def regexp_map(begin_t, end_t, options_e)
1359
+ Source::Map::Collection.new(loc(begin_t), loc(end_t),
1360
+ loc(begin_t).join(options_e.loc.expression))
1361
+ end
1362
+
1363
+ def constant_map(scope, colon2_t, name_t)
1364
+ if scope.nil?
1365
+ expr_l = loc(name_t)
1366
+ else
1367
+ expr_l = scope.loc.expression.join(loc(name_t))
1368
+ end
1369
+
1370
+ Source::Map::Constant.new(loc(colon2_t), loc(name_t), expr_l)
1371
+ end
1372
+
1373
+ def variable_map(name_t)
1374
+ Source::Map::Variable.new(loc(name_t))
1375
+ end
1376
+
1377
+ def binary_op_map(left_e, op_t, right_e)
1378
+ Source::Map::Operator.new(loc(op_t), join_exprs(left_e, right_e))
1379
+ end
1380
+
1381
+ def unary_op_map(op_t, arg_e=nil)
1382
+ if arg_e.nil?
1383
+ expr_l = loc(op_t)
1384
+ else
1385
+ expr_l = loc(op_t).join(arg_e.loc.expression)
1386
+ end
1387
+
1388
+ Source::Map::Operator.new(loc(op_t), expr_l)
1389
+ end
1390
+
1391
+ def range_map(start_e, op_t, end_e)
1392
+ if end_e
1393
+ expr_l = join_exprs(start_e, end_e)
1394
+ else
1395
+ expr_l = start_e.loc.expression.join(loc(op_t))
1396
+ end
1397
+
1398
+ Source::Map::Operator.new(loc(op_t), expr_l)
1399
+ end
1400
+
1401
+ def arg_prefix_map(op_t, name_t=nil)
1402
+ if name_t.nil?
1403
+ expr_l = loc(op_t)
1404
+ else
1405
+ expr_l = loc(op_t).join(loc(name_t))
1406
+ end
1407
+
1408
+ Source::Map::Variable.new(loc(name_t), expr_l)
1409
+ end
1410
+
1411
+ def kwarg_map(name_t, value_e=nil)
1412
+ label_range = loc(name_t)
1413
+ name_range = label_range.adjust(end_pos: -1)
1414
+
1415
+ if value_e
1416
+ expr_l = loc(name_t).join(value_e.loc.expression)
1417
+ else
1418
+ expr_l = loc(name_t)
1419
+ end
1420
+
1421
+ Source::Map::Variable.new(name_range, expr_l)
1422
+ end
1423
+
1424
+ def module_definition_map(keyword_t, name_e, operator_t, end_t)
1425
+ if name_e
1426
+ name_l = name_e.loc.expression
1427
+ end
1428
+
1429
+ Source::Map::Definition.new(loc(keyword_t),
1430
+ loc(operator_t), name_l,
1431
+ loc(end_t))
1432
+ end
1433
+
1434
+ def definition_map(keyword_t, operator_t, name_t, end_t)
1435
+ Source::Map::Definition.new(loc(keyword_t),
1436
+ loc(operator_t), loc(name_t),
1437
+ loc(end_t))
1438
+ end
1439
+
1440
+ def send_map(receiver_e, dot_t, selector_t, begin_t=nil, args=[], end_t=nil)
1441
+ if receiver_e
1442
+ begin_l = receiver_e.loc.expression
1443
+ elsif selector_t
1444
+ begin_l = loc(selector_t)
1445
+ end
1446
+
1447
+ if end_t
1448
+ end_l = loc(end_t)
1449
+ elsif args.any?
1450
+ end_l = args.last.loc.expression
1451
+ elsif selector_t
1452
+ end_l = loc(selector_t)
1453
+ end
1454
+
1455
+ Source::Map::Send.new(loc(dot_t), loc(selector_t),
1456
+ loc(begin_t), loc(end_t),
1457
+ begin_l.join(end_l))
1458
+ end
1459
+
1460
+ def var_send_map(variable_e)
1461
+ Source::Map::Send.new(nil, variable_e.loc.expression,
1462
+ nil, nil,
1463
+ variable_e.loc.expression)
1464
+ end
1465
+
1466
+ def send_binary_op_map(lhs_e, selector_t, rhs_e)
1467
+ Source::Map::Send.new(nil, loc(selector_t),
1468
+ nil, nil,
1469
+ join_exprs(lhs_e, rhs_e))
1470
+ end
1471
+
1472
+ def send_unary_op_map(selector_t, arg_e)
1473
+ if arg_e.nil?
1474
+ expr_l = loc(selector_t)
1475
+ else
1476
+ expr_l = loc(selector_t).join(arg_e.loc.expression)
1477
+ end
1478
+
1479
+ Source::Map::Send.new(nil, loc(selector_t),
1480
+ nil, nil,
1481
+ expr_l)
1482
+ end
1483
+
1484
+ def index_map(receiver_e, lbrack_t, rbrack_t)
1485
+ Source::Map::Index.new(loc(lbrack_t), loc(rbrack_t),
1486
+ receiver_e.loc.expression.join(loc(rbrack_t)))
1487
+ end
1488
+
1489
+ def send_index_map(receiver_e, lbrack_t, rbrack_t)
1490
+ Source::Map::Send.new(nil, loc(lbrack_t).join(loc(rbrack_t)),
1491
+ nil, nil,
1492
+ receiver_e.loc.expression.join(loc(rbrack_t)))
1493
+ end
1494
+
1495
+ def block_map(receiver_l, begin_t, end_t)
1496
+ Source::Map::Collection.new(loc(begin_t), loc(end_t),
1497
+ receiver_l.join(loc(end_t)))
1498
+ end
1499
+
1500
+ def keyword_map(keyword_t, begin_t, args, end_t)
1501
+ args ||= []
1502
+
1503
+ if end_t
1504
+ end_l = loc(end_t)
1505
+ elsif args.any? && !args.last.nil?
1506
+ end_l = args.last.loc.expression
1507
+ elsif args.any? && args.count > 1
1508
+ end_l = args[-2].loc.expression
1509
+ else
1510
+ end_l = loc(keyword_t)
1511
+ end
1512
+
1513
+ Source::Map::Keyword.new(loc(keyword_t), loc(begin_t), loc(end_t),
1514
+ loc(keyword_t).join(end_l))
1515
+ end
1516
+
1517
+ def keyword_mod_map(pre_e, keyword_t, post_e)
1518
+ Source::Map::Keyword.new(loc(keyword_t), nil, nil,
1519
+ join_exprs(pre_e, post_e))
1520
+ end
1521
+
1522
+ def condition_map(keyword_t, cond_e, begin_t, body_e, else_t, else_e, end_t)
1523
+ if end_t
1524
+ end_l = loc(end_t)
1525
+ elsif else_e && else_e.loc.expression
1526
+ end_l = else_e.loc.expression
1527
+ elsif loc(else_t)
1528
+ end_l = loc(else_t)
1529
+ elsif body_e && body_e.loc.expression
1530
+ end_l = body_e.loc.expression
1531
+ elsif loc(begin_t)
1532
+ end_l = loc(begin_t)
1533
+ else
1534
+ end_l = cond_e.loc.expression
1535
+ end
1536
+
1537
+ Source::Map::Condition.new(loc(keyword_t),
1538
+ loc(begin_t), loc(else_t), loc(end_t),
1539
+ loc(keyword_t).join(end_l))
1540
+ end
1541
+
1542
+ def ternary_map(begin_e, question_t, mid_e, colon_t, end_e)
1543
+ Source::Map::Ternary.new(loc(question_t), loc(colon_t),
1544
+ join_exprs(begin_e, end_e))
1545
+ end
1546
+
1547
+ def for_map(keyword_t, in_t, begin_t, end_t)
1548
+ Source::Map::For.new(loc(keyword_t), loc(in_t),
1549
+ loc(begin_t), loc(end_t),
1550
+ loc(keyword_t).join(loc(end_t)))
1551
+ end
1552
+
1553
+ def rescue_body_map(keyword_t, exc_list_e, assoc_t,
1554
+ exc_var_e, then_t,
1555
+ compstmt_e)
1556
+ end_l = compstmt_e.loc.expression if compstmt_e
1557
+ end_l = loc(then_t) if end_l.nil? && then_t
1558
+ end_l = exc_var_e.loc.expression if end_l.nil? && exc_var_e
1559
+ end_l = exc_list_e.loc.expression if end_l.nil? && exc_list_e
1560
+ end_l = loc(keyword_t) if end_l.nil?
1561
+
1562
+ Source::Map::RescueBody.new(loc(keyword_t), loc(assoc_t), loc(then_t),
1563
+ loc(keyword_t).join(end_l))
1564
+ end
1565
+
1566
+ def eh_keyword_map(compstmt_e, keyword_t, body_es,
1567
+ else_t, else_e)
1568
+ if compstmt_e.nil?
1569
+ if keyword_t.nil?
1570
+ begin_l = body_es.first.loc.expression
1571
+ else
1572
+ begin_l = loc(keyword_t)
1573
+ end
1574
+ else
1575
+ begin_l = compstmt_e.loc.expression
1576
+ end
1577
+
1578
+ if else_t
1579
+ if else_e.nil?
1580
+ end_l = loc(else_t)
1581
+ else
1582
+ end_l = else_e.loc.expression
1583
+ end
1584
+ elsif !body_es.last.nil?
1585
+ end_l = body_es.last.loc.expression
1586
+ else
1587
+ end_l = loc(keyword_t)
1588
+ end
1589
+
1590
+ Source::Map::Condition.new(loc(keyword_t), nil, loc(else_t), nil,
1591
+ begin_l.join(end_l))
1592
+ end
1593
+
1594
+ #
1595
+ # HELPERS
1596
+ #
1597
+
1598
+ # Extract a static string from e.g. a regular expression,
1599
+ # honoring the fact that MRI expands interpolations like #{""}
1600
+ # at parse time.
1601
+ def static_string(nodes)
1602
+ nodes.map do |node|
1603
+ case node.type
1604
+ when :str
1605
+ node.children[0]
1606
+ when :begin
1607
+ if (string = static_string(node.children))
1608
+ string
1609
+ else
1610
+ return nil
1611
+ end
1612
+ else
1613
+ return nil
1614
+ end
1615
+ end.join
1616
+ end
1617
+
1618
+ def static_regexp(parts, options)
1619
+ source = static_string(parts)
1620
+ return nil if source.nil?
1621
+
1622
+ source = case
1623
+ when options.children.include?(:u)
1624
+ source.encode(Encoding::UTF_8)
1625
+ when options.children.include?(:e)
1626
+ source.encode(Encoding::EUC_JP)
1627
+ when options.children.include?(:s)
1628
+ source.encode(Encoding::WINDOWS_31J)
1629
+ when options.children.include?(:n)
1630
+ source.encode(Encoding::BINARY)
1631
+ else
1632
+ source
1633
+ end
1634
+
1635
+ Regexp.new(source, (Regexp::EXTENDED if options.children.include?(:x)))
1636
+ end
1637
+
1638
+ def static_regexp_node(node)
1639
+ if node.type == :regexp
1640
+ parts, options = node.children[0..-2], node.children[-1]
1641
+ static_regexp(parts, options)
1642
+ end
1643
+ end
1644
+
1645
+ def collapse_string_parts?(parts)
1646
+ parts.one? &&
1647
+ [:str, :dstr].include?(parts.first.type)
1648
+ end
1649
+
1650
+ def value(token)
1651
+ token[0]
1652
+ end
1653
+
1654
+ def string_value(token)
1655
+ unless token[0].valid_encoding?
1656
+ diagnostic(:error, :invalid_encoding, nil, token[1])
1657
+ end
1658
+
1659
+ token[0]
1660
+ end
1661
+
1662
+ def loc(token)
1663
+ # Pass through `nil`s and return nil for tNL.
1664
+ token[1] if token && token[0]
1665
+ end
1666
+
1667
+ def diagnostic(type, reason, arguments, location, highlights=[])
1668
+ @parser.diagnostics.process(
1669
+ Diagnostic.new(type, reason, arguments, location, highlights))
1670
+
1671
+ if type == :error
1672
+ @parser.send :yyerror
1673
+ end
1674
+ end
1675
+ end
1676
+
1677
+ end