dirwatch 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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