dirwatch 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (534) hide show
  1. checksums.yaml +4 -4
  2. data/lib/dirwatch/templates/mac/latex.yml +1 -1
  3. data/lib/dirwatch/version.rb +1 -1
  4. data/vendor/bundle/ruby/2.5.0/cache/ast-2.4.0.gem +0 -0
  5. data/vendor/bundle/ruby/2.5.0/cache/parser-2.5.1.2.gem +0 -0
  6. data/vendor/bundle/ruby/2.5.0/cache/powerpack-0.1.2.gem +0 -0
  7. data/vendor/bundle/ruby/2.5.0/cache/rake-12.3.1.gem +0 -0
  8. data/vendor/bundle/ruby/2.5.0/cache/rspec-3.8.0.gem +0 -0
  9. data/vendor/bundle/ruby/2.5.0/cache/rspec-core-3.8.0.gem +0 -0
  10. data/vendor/bundle/ruby/2.5.0/cache/rspec-expectations-3.8.1.gem +0 -0
  11. data/vendor/bundle/ruby/2.5.0/cache/rspec-mocks-3.8.0.gem +0 -0
  12. data/vendor/bundle/ruby/2.5.0/cache/rspec-support-3.8.0.gem +0 -0
  13. data/vendor/bundle/ruby/2.5.0/cache/ruby-progressbar-1.10.0.gem +0 -0
  14. data/vendor/bundle/ruby/2.5.0/cache/unicode-display_width-1.4.0.gem +0 -0
  15. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/CHANGELOG.md +9 -0
  16. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/Gemfile +4 -0
  17. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/LICENSE.MIT +20 -0
  18. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/README.YARD.md +12 -0
  19. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/README.md +23 -0
  20. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/Rakefile +19 -0
  21. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/ast.gemspec +29 -0
  22. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/lib/ast.rb +17 -0
  23. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/lib/ast/node.rb +258 -0
  24. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/lib/ast/processor.rb +12 -0
  25. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/lib/ast/processor/mixin.rb +288 -0
  26. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/lib/ast/sexp.rb +30 -0
  27. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/test/helper.rb +17 -0
  28. data/vendor/bundle/ruby/2.5.0/gems/ast-2.4.0/test/test_ast.rb +271 -0
  29. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/CHANGELOG.md +927 -0
  30. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/CONTRIBUTING.md +17 -0
  31. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/Gemfile +10 -0
  32. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/LICENSE.txt +25 -0
  33. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/README.md +301 -0
  34. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/Rakefile +165 -0
  35. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/bin/ruby-parse +7 -0
  36. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/bin/ruby-rewrite +7 -0
  37. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/doc/AST_FORMAT.md +1735 -0
  38. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/doc/CUSTOMIZATION.md +37 -0
  39. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/doc/INTERNALS.md +21 -0
  40. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/doc/css/common.css +68 -0
  41. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/gauntlet_parser.rb +123 -0
  42. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser.rb +81 -0
  43. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/all.rb +11 -0
  44. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ast/node.rb +40 -0
  45. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ast/processor.rb +241 -0
  46. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/base.rb +267 -0
  47. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/builders/default.rb +1677 -0
  48. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/clobbering_error.rb +13 -0
  49. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/color.rb +32 -0
  50. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/context.rb +51 -0
  51. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/current.rb +83 -0
  52. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/deprecation.rb +13 -0
  53. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/diagnostic.rb +163 -0
  54. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/diagnostic/engine.rb +105 -0
  55. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/lexer.rb +23093 -0
  56. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/lexer.rl +2382 -0
  57. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/lexer/dedenter.rb +79 -0
  58. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/lexer/explanation.rb +55 -0
  59. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/lexer/literal.rb +265 -0
  60. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/lexer/stack_state.rb +49 -0
  61. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/macruby.rb +6122 -0
  62. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/macruby.y +2198 -0
  63. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/messages.rb +84 -0
  64. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/meta.rb +29 -0
  65. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/rewriter.rb +105 -0
  66. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby18.rb +5654 -0
  67. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby18.y +1934 -0
  68. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby19.rb +6077 -0
  69. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby19.y +2175 -0
  70. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby20.rb +6512 -0
  71. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby20.y +2353 -0
  72. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby21.rb +6572 -0
  73. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby21.y +2357 -0
  74. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby22.rb +6600 -0
  75. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby22.y +2364 -0
  76. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby23.rb +6628 -0
  77. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby23.y +2370 -0
  78. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby24.rb +6695 -0
  79. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby24.y +2408 -0
  80. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby25.rb +6661 -0
  81. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby25.y +2405 -0
  82. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby26.rb +6674 -0
  83. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/ruby26.y +2413 -0
  84. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/rubymotion.rb +6083 -0
  85. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/rubymotion.y +2182 -0
  86. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/runner.rb +248 -0
  87. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/runner/ruby_parse.rb +157 -0
  88. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/runner/ruby_rewrite.rb +101 -0
  89. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/buffer.rb +330 -0
  90. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/comment.rb +121 -0
  91. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/comment/associator.rb +210 -0
  92. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map.rb +186 -0
  93. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/collection.rb +18 -0
  94. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/condition.rb +21 -0
  95. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/constant.rb +32 -0
  96. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/definition.rb +23 -0
  97. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/for.rb +19 -0
  98. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/heredoc.rb +19 -0
  99. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/index.rb +33 -0
  100. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/keyword.rb +20 -0
  101. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/objc_kwarg.rb +19 -0
  102. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/operator.rb +17 -0
  103. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/rescue_body.rb +21 -0
  104. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/send.rb +36 -0
  105. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/ternary.rb +18 -0
  106. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/map/variable.rb +31 -0
  107. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/range.rb +310 -0
  108. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/rewriter.rb +513 -0
  109. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/rewriter/action.rb +44 -0
  110. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/tree_rewriter.rb +301 -0
  111. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/source/tree_rewriter/action.rb +133 -0
  112. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/static_environment.rb +46 -0
  113. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/syntax_error.rb +21 -0
  114. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/tree_rewriter.rb +133 -0
  115. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/lib/parser/version.rb +5 -0
  116. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/parser.gemspec +51 -0
  117. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/bug_163/fixtures/input.rb +5 -0
  118. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/bug_163/fixtures/output.rb +5 -0
  119. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/bug_163/rewriter.rb +20 -0
  120. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/helper.rb +52 -0
  121. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/parse_helper.rb +315 -0
  122. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/racc_coverage_helper.rb +133 -0
  123. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_base.rb +31 -0
  124. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_current.rb +27 -0
  125. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_diagnostic.rb +96 -0
  126. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_diagnostic_engine.rb +62 -0
  127. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_encoding.rb +99 -0
  128. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_lexer.rb +3537 -0
  129. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_lexer_stack_state.rb +78 -0
  130. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_parse_helper.rb +80 -0
  131. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_parser.rb +7038 -0
  132. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_runner_rewrite.rb +47 -0
  133. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_source_buffer.rb +162 -0
  134. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_source_comment.rb +36 -0
  135. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_source_comment_associator.rb +367 -0
  136. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_source_map.rb +15 -0
  137. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_source_range.rb +172 -0
  138. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_source_rewriter.rb +541 -0
  139. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_source_rewriter_action.rb +46 -0
  140. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_source_tree_rewriter.rb +173 -0
  141. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/test_static_environment.rb +45 -0
  142. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/using_tree_rewriter/fixtures/input.rb +3 -0
  143. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/using_tree_rewriter/fixtures/output.rb +3 -0
  144. data/vendor/bundle/ruby/2.5.0/gems/parser-2.5.1.2/test/using_tree_rewriter/using_tree_rewriter.rb +9 -0
  145. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/CHANGELOG.md +46 -0
  146. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/CONTRIBUTING.md +62 -0
  147. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/Gemfile +4 -0
  148. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/LICENSE.txt +22 -0
  149. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/README.md +99 -0
  150. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/Rakefile +12 -0
  151. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack.rb +11 -0
  152. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/array.rb +2 -0
  153. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/array/butfirst.rb +15 -0
  154. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/array/butlast.rb +15 -0
  155. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/enumerable.rb +9 -0
  156. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/enumerable/average.rb +20 -0
  157. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/enumerable/drop_last.rb +20 -0
  158. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/enumerable/drop_last_while.rb +21 -0
  159. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/enumerable/exactly.rb +43 -0
  160. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/enumerable/frequencies.rb +17 -0
  161. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/enumerable/several.rb +37 -0
  162. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/enumerable/sum.rb +25 -0
  163. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/enumerable/take_last.rb +20 -0
  164. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/enumerable/take_last_while.rb +17 -0
  165. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/hash.rb +1 -0
  166. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/hash/symbolize_keys.rb +14 -0
  167. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/numeric.rb +3 -0
  168. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/numeric/neg.rb +19 -0
  169. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/numeric/pos.rb +19 -0
  170. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/numeric/scale.rb +44 -0
  171. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/string.rb +9 -0
  172. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/string/ascii_only.rb +42 -0
  173. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/string/blank.rb +20 -0
  174. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/string/format.rb +20 -0
  175. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/string/remove.rb +17 -0
  176. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/string/remove_prefix.rb +24 -0
  177. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/string/remove_suffix.rb +24 -0
  178. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/string/squish.rb +27 -0
  179. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/string/strip_indent.rb +22 -0
  180. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/string/strip_margin.rb +21 -0
  181. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/lib/powerpack/version.rb +3 -0
  182. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/powerpack.gemspec +24 -0
  183. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/array/butfirst_spec.rb +11 -0
  184. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/array/butlast_spec.rb +11 -0
  185. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/enumerable/average_spec.rb +19 -0
  186. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/enumerable/drop_last_spec.rb +15 -0
  187. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/enumerable/drop_last_while_spec.rb +7 -0
  188. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/enumerable/exactly_spec.rb +39 -0
  189. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/enumerable/frequencies_spec.rb +20 -0
  190. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/enumerable/several_spec.rb +27 -0
  191. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/enumerable/sum_spec.rb +29 -0
  192. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/enumerable/take_last_spec.rb +15 -0
  193. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/enumerable/take_last_while_spec.rb +7 -0
  194. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/hash/symbolize_keys_spec.rb +15 -0
  195. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/numeric/neg_spec.rb +24 -0
  196. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/numeric/pos_spec.rb +24 -0
  197. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/numeric/scale_spec.rb +139 -0
  198. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/string/ascii_only_spec.rb +45 -0
  199. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/string/blank_spec.rb +15 -0
  200. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/string/format_spec.rb +12 -0
  201. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/string/remove_prefix_spec.rb +21 -0
  202. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/string/remove_spec.rb +13 -0
  203. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/string/remove_suffix_spec.rb +21 -0
  204. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/string/squish_spec.rb +21 -0
  205. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/string/strip_indent_spec.rb +13 -0
  206. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/powerpack/string/strip_margin_spec.rb +26 -0
  207. data/vendor/bundle/ruby/2.5.0/gems/powerpack-0.1.2/spec/spec_helper.rb +15 -0
  208. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/CONTRIBUTING.rdoc +36 -0
  209. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/Gemfile +3 -0
  210. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/History.rdoc +2317 -0
  211. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/MIT-LICENSE +21 -0
  212. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/README.rdoc +156 -0
  213. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/Rakefile +41 -0
  214. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/bin/console +7 -0
  215. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/bin/setup +6 -0
  216. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/doc/command_line_usage.rdoc +158 -0
  217. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/doc/example/Rakefile1 +38 -0
  218. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/doc/example/Rakefile2 +35 -0
  219. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/doc/example/a.c +6 -0
  220. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/doc/example/b.c +6 -0
  221. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/doc/example/main.c +11 -0
  222. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/doc/glossary.rdoc +42 -0
  223. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/doc/jamis.rb +592 -0
  224. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/doc/proto_rake.rdoc +127 -0
  225. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/doc/rake.1 +156 -0
  226. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/doc/rakefile.rdoc +622 -0
  227. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/doc/rational.rdoc +151 -0
  228. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/exe/rake +27 -0
  229. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake.rb +71 -0
  230. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/application.rb +824 -0
  231. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/backtrace.rb +24 -0
  232. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/clean.rb +78 -0
  233. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/cloneable.rb +17 -0
  234. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/cpu_counter.rb +107 -0
  235. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/default_loader.rb +15 -0
  236. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/dsl_definition.rb +195 -0
  237. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/early_time.rb +22 -0
  238. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/ext/core.rb +26 -0
  239. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/ext/string.rb +176 -0
  240. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/file_creation_task.rb +25 -0
  241. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/file_list.rb +435 -0
  242. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/file_task.rb +54 -0
  243. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/file_utils.rb +137 -0
  244. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/file_utils_ext.rb +145 -0
  245. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/invocation_chain.rb +57 -0
  246. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/invocation_exception_mixin.rb +17 -0
  247. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/late_time.rb +18 -0
  248. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/linked_list.rb +112 -0
  249. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/loaders/makefile.rb +54 -0
  250. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/multi_task.rb +14 -0
  251. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/name_space.rb +38 -0
  252. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/packagetask.rb +211 -0
  253. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/phony.rb +16 -0
  254. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/private_reader.rb +21 -0
  255. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/promise.rb +100 -0
  256. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/pseudo_status.rb +30 -0
  257. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/rake_module.rb +67 -0
  258. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/rake_test_loader.rb +27 -0
  259. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/rule_recursion_overflow_error.rb +20 -0
  260. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/scope.rb +43 -0
  261. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/task.rb +411 -0
  262. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/task_argument_error.rb +8 -0
  263. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/task_arguments.rb +109 -0
  264. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/task_manager.rb +323 -0
  265. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/tasklib.rb +12 -0
  266. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/testtask.rb +224 -0
  267. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/thread_history_display.rb +49 -0
  268. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/thread_pool.rb +163 -0
  269. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/trace_output.rb +23 -0
  270. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/version.rb +10 -0
  271. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/lib/rake/win32.rb +51 -0
  272. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/rake.gemspec +42 -0
  273. data/vendor/bundle/ruby/2.5.0/gems/rspec-3.8.0/LICENSE.md +27 -0
  274. data/vendor/bundle/ruby/2.5.0/gems/rspec-3.8.0/README.md +43 -0
  275. data/vendor/bundle/ruby/2.5.0/gems/rspec-3.8.0/lib/rspec.rb +3 -0
  276. data/vendor/bundle/ruby/2.5.0/gems/rspec-3.8.0/lib/rspec/version.rb +5 -0
  277. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/Changelog.md +2221 -0
  278. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/LICENSE.md +26 -0
  279. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/README.md +384 -0
  280. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/exe/rspec +4 -0
  281. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/autorun.rb +3 -0
  282. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core.rb +185 -0
  283. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/backtrace_formatter.rb +65 -0
  284. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/bisect/coordinator.rb +62 -0
  285. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/bisect/example_minimizer.rb +173 -0
  286. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/bisect/fork_runner.rb +134 -0
  287. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/bisect/server.rb +61 -0
  288. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/bisect/shell_command.rb +126 -0
  289. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/bisect/shell_runner.rb +73 -0
  290. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/bisect/utilities.rb +58 -0
  291. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/configuration.rb +2289 -0
  292. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/configuration_options.rb +233 -0
  293. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/drb.rb +113 -0
  294. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/dsl.rb +98 -0
  295. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/example.rb +653 -0
  296. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/example_group.rb +885 -0
  297. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/example_status_persister.rb +235 -0
  298. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/filter_manager.rb +231 -0
  299. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/flat_map.rb +20 -0
  300. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters.rb +269 -0
  301. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/base_bisect_formatter.rb +45 -0
  302. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/base_formatter.rb +70 -0
  303. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/base_text_formatter.rb +75 -0
  304. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/bisect_drb_formatter.rb +29 -0
  305. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/bisect_progress_formatter.rb +157 -0
  306. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/console_codes.rb +68 -0
  307. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/deprecation_formatter.rb +223 -0
  308. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/documentation_formatter.rb +70 -0
  309. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/exception_presenter.rb +497 -0
  310. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/fallback_message_formatter.rb +28 -0
  311. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/helpers.rb +110 -0
  312. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/html_formatter.rb +153 -0
  313. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/html_printer.rb +414 -0
  314. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/html_snippet_extractor.rb +120 -0
  315. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/json_formatter.rb +102 -0
  316. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/profile_formatter.rb +68 -0
  317. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/progress_formatter.rb +29 -0
  318. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/protocol.rb +182 -0
  319. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/snippet_extractor.rb +134 -0
  320. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/syntax_highlighter.rb +91 -0
  321. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/hooks.rb +624 -0
  322. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/invocations.rb +87 -0
  323. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/memoized_helpers.rb +535 -0
  324. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/metadata.rb +499 -0
  325. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/metadata_filter.rb +255 -0
  326. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/minitest_assertions_adapter.rb +31 -0
  327. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/mocking_adapters/flexmock.rb +31 -0
  328. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/mocking_adapters/mocha.rb +57 -0
  329. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/mocking_adapters/null.rb +14 -0
  330. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/mocking_adapters/rr.rb +31 -0
  331. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/mocking_adapters/rspec.rb +32 -0
  332. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/notifications.rb +521 -0
  333. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/option_parser.rb +309 -0
  334. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/ordering.rb +158 -0
  335. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/output_wrapper.rb +29 -0
  336. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/pending.rb +165 -0
  337. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/profiler.rb +34 -0
  338. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/project_initializer.rb +48 -0
  339. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/project_initializer/spec/spec_helper.rb +100 -0
  340. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/rake_task.rb +168 -0
  341. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/reporter.rb +257 -0
  342. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/ruby_project.rb +53 -0
  343. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/runner.rb +199 -0
  344. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/sandbox.rb +37 -0
  345. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/set.rb +54 -0
  346. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/shared_context.rb +55 -0
  347. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/shared_example_group.rb +269 -0
  348. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/shell_escape.rb +49 -0
  349. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/test_unit_assertions_adapter.rb +30 -0
  350. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/version.rb +9 -0
  351. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/warnings.rb +40 -0
  352. data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/world.rb +275 -0
  353. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/Changelog.md +1110 -0
  354. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/LICENSE.md +25 -0
  355. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/README.md +305 -0
  356. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/expectations.rb +82 -0
  357. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/expectations/block_snippet_extractor.rb +253 -0
  358. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/expectations/configuration.rb +215 -0
  359. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/expectations/expectation_target.rb +127 -0
  360. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/expectations/fail_with.rb +39 -0
  361. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/expectations/failure_aggregator.rb +194 -0
  362. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/expectations/handler.rb +170 -0
  363. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/expectations/minitest_integration.rb +58 -0
  364. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/expectations/syntax.rb +132 -0
  365. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/expectations/version.rb +8 -0
  366. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers.rb +1034 -0
  367. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/aliased_matcher.rb +116 -0
  368. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in.rb +52 -0
  369. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/all.rb +85 -0
  370. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/base_matcher.rb +193 -0
  371. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/be.rb +288 -0
  372. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/be_between.rb +77 -0
  373. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/be_instance_of.rb +22 -0
  374. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/be_kind_of.rb +16 -0
  375. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/be_within.rb +72 -0
  376. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/change.rb +426 -0
  377. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/compound.rb +271 -0
  378. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/contain_exactly.rb +302 -0
  379. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/cover.rb +24 -0
  380. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/eq.rb +40 -0
  381. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/eql.rb +34 -0
  382. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/equal.rb +81 -0
  383. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/exist.rb +90 -0
  384. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/has.rb +103 -0
  385. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/have_attributes.rb +114 -0
  386. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/include.rb +149 -0
  387. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/match.rb +106 -0
  388. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/operators.rb +128 -0
  389. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/output.rb +200 -0
  390. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/raise_error.rb +230 -0
  391. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/respond_to.rb +165 -0
  392. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/satisfy.rb +60 -0
  393. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/start_or_end_with.rb +94 -0
  394. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/throw_symbol.rb +132 -0
  395. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/built_in/yield.rb +432 -0
  396. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/composable.rb +171 -0
  397. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/dsl.rb +527 -0
  398. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/english_phrasing.rb +58 -0
  399. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +73 -0
  400. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/fail_matchers.rb +42 -0
  401. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/generated_descriptions.rb +41 -0
  402. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/matcher_delegator.rb +35 -0
  403. data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.8.1/lib/rspec/matchers/matcher_protocol.rb +99 -0
  404. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/Changelog.md +1100 -0
  405. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/LICENSE.md +25 -0
  406. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/README.md +460 -0
  407. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks.rb +130 -0
  408. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance.rb +11 -0
  409. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/chain.rb +110 -0
  410. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/error_generator.rb +31 -0
  411. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/expect_chain_chain.rb +31 -0
  412. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/expectation_chain.rb +50 -0
  413. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/message_chains.rb +83 -0
  414. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/proxy.rb +116 -0
  415. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/recorder.rb +289 -0
  416. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/stub_chain.rb +51 -0
  417. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/stub_chain_chain.rb +23 -0
  418. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/argument_list_matcher.rb +100 -0
  419. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/argument_matchers.rb +320 -0
  420. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/configuration.rb +212 -0
  421. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/error_generator.rb +369 -0
  422. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/example_methods.rb +434 -0
  423. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/instance_method_stasher.rb +146 -0
  424. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/marshal_extension.rb +41 -0
  425. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/matchers/expectation_customization.rb +20 -0
  426. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/matchers/have_received.rb +134 -0
  427. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/matchers/receive.rb +132 -0
  428. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/matchers/receive_message_chain.rb +82 -0
  429. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/matchers/receive_messages.rb +77 -0
  430. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/message_chain.rb +87 -0
  431. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/message_expectation.rb +741 -0
  432. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/method_double.rb +287 -0
  433. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/method_reference.rb +202 -0
  434. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/minitest_integration.rb +68 -0
  435. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/mutate_const.rb +339 -0
  436. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/object_reference.rb +149 -0
  437. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/order_group.rb +81 -0
  438. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/proxy.rb +485 -0
  439. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/space.rb +238 -0
  440. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/standalone.rb +3 -0
  441. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/syntax.rb +325 -0
  442. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/targets.rb +124 -0
  443. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/test_double.rb +171 -0
  444. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/verifying_double.rb +129 -0
  445. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/verifying_message_expectation.rb +54 -0
  446. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/verifying_proxy.rb +220 -0
  447. data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/version.rb +9 -0
  448. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/Changelog.md +242 -0
  449. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/LICENSE.md +23 -0
  450. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/README.md +40 -0
  451. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support.rb +149 -0
  452. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/caller_filter.rb +83 -0
  453. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/comparable_version.rb +46 -0
  454. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/differ.rb +215 -0
  455. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/directory_maker.rb +63 -0
  456. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/encoded_string.rb +165 -0
  457. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/fuzzy_matcher.rb +48 -0
  458. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/hunk_generator.rb +47 -0
  459. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/matcher_definition.rb +42 -0
  460. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/method_signature_verifier.rb +426 -0
  461. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/mutex.rb +73 -0
  462. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/object_formatter.rb +275 -0
  463. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/recursive_const_methods.rb +76 -0
  464. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/reentrant_mutex.rb +53 -0
  465. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/ruby_features.rb +176 -0
  466. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/source.rb +75 -0
  467. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/source/location.rb +21 -0
  468. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/source/node.rb +110 -0
  469. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/source/token.rb +87 -0
  470. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/spec.rb +81 -0
  471. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/deprecation_helpers.rb +64 -0
  472. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/formatting_support.rb +9 -0
  473. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/in_sub_process.rb +69 -0
  474. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/library_wide_checks.rb +150 -0
  475. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/shell_out.rb +84 -0
  476. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/stderr_splitter.rb +63 -0
  477. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/string_matcher.rb +46 -0
  478. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/with_isolated_directory.rb +13 -0
  479. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/with_isolated_stderr.rb +13 -0
  480. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/version.rb +7 -0
  481. data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.8.0/lib/rspec/support/warnings.rb +39 -0
  482. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/LICENSE.txt +19 -0
  483. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/README.md +38 -0
  484. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/Rakefile +2 -0
  485. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar.rb +18 -0
  486. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/base.rb +183 -0
  487. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/calculators/length.rb +100 -0
  488. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/calculators/running_average.rb +9 -0
  489. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/components.rb +5 -0
  490. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/components/bar.rb +102 -0
  491. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/components/percentage.rb +29 -0
  492. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/components/rate.rb +43 -0
  493. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/components/time.rb +107 -0
  494. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/components/title.rb +13 -0
  495. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/errors/invalid_progress_error.rb +4 -0
  496. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/format.rb +3 -0
  497. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/format/formatter.rb +27 -0
  498. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/format/molecule.rb +60 -0
  499. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/format/string.rb +36 -0
  500. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/output.rb +68 -0
  501. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/outputs/non_tty.rb +47 -0
  502. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/outputs/null.rb +33 -0
  503. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/outputs/tty.rb +32 -0
  504. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/progress.rb +118 -0
  505. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/refinements.rb +1 -0
  506. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/refinements/enumerator.rb +23 -0
  507. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/throttle.rb +25 -0
  508. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/time.rb +32 -0
  509. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/timer.rb +72 -0
  510. data/vendor/bundle/ruby/2.5.0/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/version.rb +3 -0
  511. data/vendor/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.0/CHANGELOG.md +113 -0
  512. data/vendor/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.0/MIT-LICENSE.txt +22 -0
  513. data/vendor/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.0/README.md +124 -0
  514. data/vendor/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.0/Rakefile +64 -0
  515. data/vendor/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.0/data/display_width.marshal.gz +0 -0
  516. data/vendor/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.0/lib/unicode/display_width.rb +51 -0
  517. data/vendor/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.0/lib/unicode/display_width/constants.rb +8 -0
  518. data/vendor/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.0/lib/unicode/display_width/index.rb +12 -0
  519. data/vendor/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.0/lib/unicode/display_width/no_string_ext.rb +7 -0
  520. data/vendor/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.0/lib/unicode/display_width/string_ext.rb +17 -0
  521. data/vendor/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.0/spec/display_width_spec.rb +156 -0
  522. data/vendor/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.0/unicode-display_width.gemspec +18 -0
  523. data/vendor/bundle/ruby/2.5.0/specifications/ast-2.4.0.gemspec +59 -0
  524. data/vendor/bundle/ruby/2.5.0/specifications/parser-2.5.1.2.gemspec +62 -0
  525. data/vendor/bundle/ruby/2.5.0/specifications/powerpack-0.1.2.gemspec +41 -0
  526. data/vendor/bundle/ruby/2.5.0/specifications/rake-12.3.1.gemspec +49 -0
  527. data/vendor/bundle/ruby/2.5.0/specifications/rspec-3.8.0.gemspec +42 -0
  528. data/vendor/bundle/ruby/2.5.0/specifications/rspec-core-3.8.0.gemspec +62 -0
  529. data/vendor/bundle/ruby/2.5.0/specifications/rspec-expectations-3.8.1.gemspec +50 -0
  530. data/vendor/bundle/ruby/2.5.0/specifications/rspec-mocks-3.8.0.gemspec +50 -0
  531. data/vendor/bundle/ruby/2.5.0/specifications/rspec-support-3.8.0.gemspec +41 -0
  532. data/vendor/bundle/ruby/2.5.0/specifications/ruby-progressbar-1.10.0.gemspec +46 -0
  533. data/vendor/bundle/ruby/2.5.0/specifications/unicode-display_width-1.4.0.gemspec +38 -0
  534. metadata +532 -2
@@ -0,0 +1,2182 @@
1
+ class Parser::RubyMotion
2
+
3
+ token kCLASS kMODULE kDEF kUNDEF kBEGIN kRESCUE kENSURE kEND kIF kUNLESS
4
+ kTHEN kELSIF kELSE kCASE kWHEN kWHILE kUNTIL kFOR kBREAK kNEXT
5
+ kREDO kRETRY kIN kDO kDO_COND kDO_BLOCK kDO_LAMBDA kRETURN kYIELD kSUPER
6
+ kSELF kNIL kTRUE kFALSE kAND kOR kNOT kIF_MOD kUNLESS_MOD kWHILE_MOD
7
+ kUNTIL_MOD kRESCUE_MOD kALIAS kDEFINED klBEGIN klEND k__LINE__
8
+ k__FILE__ k__ENCODING__ tIDENTIFIER tFID tGVAR tIVAR tCONSTANT
9
+ tLABEL tCVAR tNTH_REF tBACK_REF tSTRING_CONTENT tINTEGER tFLOAT
10
+ tUPLUS tUMINUS tUNARY_NUM tPOW tCMP tEQ tEQQ tNEQ
11
+ tGEQ tLEQ tANDOP tOROP tMATCH tNMATCH tDOT tDOT2 tDOT3 tAREF
12
+ tASET tLSHFT tRSHFT tCOLON2 tCOLON3 tOP_ASGN tASSOC tLPAREN
13
+ tLPAREN2 tRPAREN tLPAREN_ARG tLBRACK tLBRACK2 tRBRACK tLBRACE
14
+ tLBRACE_ARG tSTAR tSTAR2 tAMPER tAMPER2 tTILDE tPERCENT tDIVIDE
15
+ tPLUS tMINUS tLT tGT tPIPE tBANG tCARET tLCURLY tRCURLY
16
+ tBACK_REF2 tSYMBEG tSTRING_BEG tXSTRING_BEG tREGEXP_BEG tREGEXP_OPT
17
+ tWORDS_BEG tQWORDS_BEG tSTRING_DBEG tSTRING_DVAR tSTRING_END
18
+ tSTRING tSYMBOL tNL tEH tCOLON tCOMMA tSPACE tSEMI tLAMBDA tLAMBEG
19
+ tCHARACTER tANDDOT
20
+
21
+ prechigh
22
+ right tBANG tTILDE tUPLUS
23
+ right tPOW
24
+ right tUNARY_NUM tUMINUS
25
+ left tSTAR2 tDIVIDE tPERCENT
26
+ left tPLUS tMINUS
27
+ left tLSHFT tRSHFT
28
+ left tAMPER2
29
+ left tPIPE tCARET
30
+ left tGT tGEQ tLT tLEQ
31
+ nonassoc tCMP tEQ tEQQ tNEQ tMATCH tNMATCH
32
+ left tANDOP
33
+ left tOROP
34
+ nonassoc tDOT2 tDOT3
35
+ right tEH tCOLON
36
+ left kRESCUE_MOD
37
+ right tEQL tOP_ASGN
38
+ nonassoc kDEFINED
39
+ right kNOT
40
+ left kOR kAND
41
+ nonassoc kIF_MOD kUNLESS_MOD kWHILE_MOD kUNTIL_MOD
42
+ nonassoc tLBRACE_ARG
43
+ nonassoc tLOWEST
44
+ preclow
45
+
46
+ rule
47
+
48
+ program: compstmt
49
+
50
+ bodystmt: compstmt opt_rescue opt_else opt_ensure
51
+ {
52
+ rescue_bodies = val[1]
53
+ else_t, else_ = val[2]
54
+ ensure_t, ensure_ = val[3]
55
+
56
+ if rescue_bodies.empty? && !else_.nil?
57
+ diagnostic :warning, :useless_else, nil, else_t
58
+ end
59
+
60
+ result = @builder.begin_body(val[0],
61
+ rescue_bodies,
62
+ else_t, else_,
63
+ ensure_t, ensure_)
64
+ }
65
+
66
+ compstmt: stmts opt_terms
67
+ {
68
+ result = @builder.compstmt(val[0])
69
+ }
70
+
71
+ stmts: # nothing
72
+ {
73
+ result = []
74
+ }
75
+ | stmt
76
+ {
77
+ result = [ val[0] ]
78
+ }
79
+ | stmts terms stmt
80
+ {
81
+ result = val[0] << val[2]
82
+ }
83
+ | error stmt
84
+ {
85
+ result = [ val[1] ]
86
+ }
87
+
88
+ stmt: kALIAS fitem
89
+ {
90
+ @lexer.state = :expr_fname
91
+ }
92
+ fitem
93
+ {
94
+ result = @builder.alias(val[0], val[1], val[3])
95
+ }
96
+ | kALIAS tGVAR tGVAR
97
+ {
98
+ result = @builder.alias(val[0],
99
+ @builder.gvar(val[1]),
100
+ @builder.gvar(val[2]))
101
+ }
102
+ | kALIAS tGVAR tBACK_REF
103
+ {
104
+ result = @builder.alias(val[0],
105
+ @builder.gvar(val[1]),
106
+ @builder.back_ref(val[2]))
107
+ }
108
+ | kALIAS tGVAR tNTH_REF
109
+ {
110
+ diagnostic :error, :nth_ref_alias, nil, val[2]
111
+ }
112
+ | kUNDEF undef_list
113
+ {
114
+ result = @builder.undef_method(val[0], val[1])
115
+ }
116
+ | stmt kIF_MOD expr_value
117
+ {
118
+ result = @builder.condition_mod(val[0], nil,
119
+ val[1], val[2])
120
+ }
121
+ | stmt kUNLESS_MOD expr_value
122
+ {
123
+ result = @builder.condition_mod(nil, val[0],
124
+ val[1], val[2])
125
+ }
126
+ | stmt kWHILE_MOD expr_value
127
+ {
128
+ result = @builder.loop_mod(:while, val[0], val[1], val[2])
129
+ }
130
+ | stmt kUNTIL_MOD expr_value
131
+ {
132
+ result = @builder.loop_mod(:until, val[0], val[1], val[2])
133
+ }
134
+ | stmt kRESCUE_MOD stmt
135
+ {
136
+ rescue_body = @builder.rescue_body(val[1],
137
+ nil, nil, nil,
138
+ nil, val[2])
139
+
140
+ result = @builder.begin_body(val[0], [ rescue_body ])
141
+ }
142
+ | klBEGIN tLCURLY compstmt tRCURLY
143
+ {
144
+ if @context.indirectly_in_def?
145
+ diagnostic :error, :begin_in_method, nil, val[0]
146
+ end
147
+
148
+ result = @builder.preexe(val[0], val[1], val[2], val[3])
149
+ }
150
+ | klEND tLCURLY compstmt tRCURLY
151
+ {
152
+ result = @builder.postexe(val[0], val[1], val[2], val[3])
153
+ }
154
+ | lhs tEQL command_call
155
+ {
156
+ result = @builder.assign(val[0], val[1], val[2])
157
+ }
158
+ | mlhs tEQL command_call
159
+ {
160
+ result = @builder.multi_assign(val[0], val[1], val[2])
161
+ }
162
+ | var_lhs tOP_ASGN command_call
163
+ {
164
+ result = @builder.op_assign(val[0], val[1], val[2])
165
+ }
166
+ | primary_value tLBRACK2 opt_call_args rbracket tOP_ASGN command_call
167
+ {
168
+ result = @builder.op_assign(
169
+ @builder.index(
170
+ val[0], val[1], val[2], val[3]),
171
+ val[4], val[5])
172
+ }
173
+ | primary_value call_op tIDENTIFIER tOP_ASGN command_call
174
+ {
175
+ result = @builder.op_assign(
176
+ @builder.call_method(
177
+ val[0], val[1], val[2]),
178
+ val[3], val[4])
179
+ }
180
+ | primary_value call_op tCONSTANT tOP_ASGN command_call
181
+ {
182
+ result = @builder.op_assign(
183
+ @builder.call_method(
184
+ val[0], val[1], val[2]),
185
+ val[3], val[4])
186
+ }
187
+ | primary_value tCOLON2 tIDENTIFIER tOP_ASGN command_call
188
+ {
189
+ result = @builder.op_assign(
190
+ @builder.call_method(
191
+ val[0], val[1], val[2]),
192
+ val[3], val[4])
193
+ }
194
+ | backref tOP_ASGN command_call
195
+ {
196
+ @builder.op_assign(val[0], val[1], val[2])
197
+ }
198
+ | lhs tEQL mrhs
199
+ {
200
+ result = @builder.assign(val[0], val[1],
201
+ @builder.array(nil, val[2], nil))
202
+ }
203
+ | mlhs tEQL arg_value
204
+ {
205
+ result = @builder.multi_assign(val[0], val[1], val[2])
206
+ }
207
+ | mlhs tEQL mrhs
208
+ {
209
+ result = @builder.multi_assign(val[0], val[1],
210
+ @builder.array(nil, val[2], nil))
211
+ }
212
+ | expr
213
+
214
+ expr: command_call
215
+ | expr kAND expr
216
+ {
217
+ result = @builder.logical_op(:and, val[0], val[1], val[2])
218
+ }
219
+ | expr kOR expr
220
+ {
221
+ result = @builder.logical_op(:or, val[0], val[1], val[2])
222
+ }
223
+ | kNOT opt_nl expr
224
+ {
225
+ result = @builder.not_op(val[0], nil, val[2], nil)
226
+ }
227
+ | tBANG command_call
228
+ {
229
+ result = @builder.not_op(val[0], nil, val[1], nil)
230
+ }
231
+ | arg
232
+
233
+ expr_value: expr
234
+
235
+ command_call: command
236
+ | block_command
237
+ | kRETURN call_args
238
+ {
239
+ result = @builder.keyword_cmd(:return, val[0],
240
+ nil, val[1], nil)
241
+ }
242
+ | kBREAK call_args
243
+ {
244
+ result = @builder.keyword_cmd(:break, val[0],
245
+ nil, val[1], nil)
246
+ }
247
+ | kNEXT call_args
248
+ {
249
+ result = @builder.keyword_cmd(:next, val[0],
250
+ nil, val[1], nil)
251
+ }
252
+
253
+ block_command: block_call
254
+ | block_call call_op operation2 command_args
255
+ {
256
+ result = @builder.call_method(val[0], val[1], val[2],
257
+ *val[3])
258
+ }
259
+ | block_call tCOLON2 operation2 command_args
260
+ {
261
+ result = @builder.call_method(val[0], val[1], val[2],
262
+ *val[3])
263
+ }
264
+
265
+ cmd_brace_block: tLBRACE_ARG
266
+ {
267
+ @static_env.extend_dynamic
268
+ @context.push(:block)
269
+ }
270
+ opt_block_param compstmt tRCURLY
271
+ {
272
+ result = [ val[0], val[2], val[3], val[4] ]
273
+
274
+ @static_env.unextend
275
+ @context.pop
276
+ }
277
+
278
+ command: operation command_args =tLOWEST
279
+ {
280
+ result = @builder.call_method(nil, nil, val[0],
281
+ *val[1])
282
+ }
283
+ | operation command_args cmd_brace_block
284
+ {
285
+ method_call = @builder.call_method(nil, nil, val[0],
286
+ *val[1])
287
+
288
+ begin_t, args, body, end_t = val[2]
289
+ result = @builder.block(method_call,
290
+ begin_t, args, body, end_t)
291
+ }
292
+ | primary_value call_op operation2 command_args =tLOWEST
293
+ {
294
+ result = @builder.call_method(val[0], val[1], val[2],
295
+ *val[3])
296
+ }
297
+ | primary_value call_op operation2 command_args cmd_brace_block
298
+ {
299
+ method_call = @builder.call_method(val[0], val[1], val[2],
300
+ *val[3])
301
+
302
+ begin_t, args, body, end_t = val[4]
303
+ result = @builder.block(method_call,
304
+ begin_t, args, body, end_t)
305
+ }
306
+ | primary_value tCOLON2 operation2 command_args =tLOWEST
307
+ {
308
+ result = @builder.call_method(val[0], val[1], val[2],
309
+ *val[3])
310
+ }
311
+ | primary_value tCOLON2 operation2 command_args cmd_brace_block
312
+ {
313
+ method_call = @builder.call_method(val[0], val[1], val[2],
314
+ *val[3])
315
+
316
+ begin_t, args, body, end_t = val[4]
317
+ result = @builder.block(method_call,
318
+ begin_t, args, body, end_t)
319
+ }
320
+ | kSUPER command_args
321
+ {
322
+ result = @builder.keyword_cmd(:super, val[0],
323
+ *val[1])
324
+ }
325
+ | kYIELD command_args
326
+ {
327
+ result = @builder.keyword_cmd(:yield, val[0],
328
+ *val[1])
329
+ }
330
+
331
+ mlhs: mlhs_basic
332
+ {
333
+ result = @builder.multi_lhs(nil, val[0], nil)
334
+ }
335
+ | tLPAREN mlhs_inner rparen
336
+ {
337
+ result = @builder.begin(val[0], val[1], val[2])
338
+ }
339
+
340
+ mlhs_inner: mlhs_basic
341
+ {
342
+ result = @builder.multi_lhs(nil, val[0], nil)
343
+ }
344
+ | tLPAREN mlhs_inner rparen
345
+ {
346
+ result = @builder.multi_lhs(val[0], val[1], val[2])
347
+ }
348
+
349
+ mlhs_basic: mlhs_head
350
+ | mlhs_head mlhs_item
351
+ {
352
+ result = val[0].
353
+ push(val[1])
354
+ }
355
+ | mlhs_head tSTAR mlhs_node
356
+ {
357
+ result = val[0].
358
+ push(@builder.splat(val[1], val[2]))
359
+ }
360
+ | mlhs_head tSTAR mlhs_node tCOMMA mlhs_post
361
+ {
362
+ result = val[0].
363
+ push(@builder.splat(val[1], val[2])).
364
+ concat(val[4])
365
+ }
366
+ | mlhs_head tSTAR
367
+ {
368
+ result = val[0].
369
+ push(@builder.splat(val[1]))
370
+ }
371
+ | mlhs_head tSTAR tCOMMA mlhs_post
372
+ {
373
+ result = val[0].
374
+ push(@builder.splat(val[1])).
375
+ concat(val[3])
376
+ }
377
+ | tSTAR mlhs_node
378
+ {
379
+ result = [ @builder.splat(val[0], val[1]) ]
380
+ }
381
+ | tSTAR mlhs_node tCOMMA mlhs_post
382
+ {
383
+ result = [ @builder.splat(val[0], val[1]),
384
+ *val[3] ]
385
+ }
386
+ | tSTAR
387
+ {
388
+ result = [ @builder.splat(val[0]) ]
389
+ }
390
+ | tSTAR tCOMMA mlhs_post
391
+ {
392
+ result = [ @builder.splat(val[0]),
393
+ *val[2] ]
394
+ }
395
+
396
+ mlhs_item: mlhs_node
397
+ | tLPAREN mlhs_inner rparen
398
+ {
399
+ result = @builder.begin(val[0], val[1], val[2])
400
+ }
401
+
402
+ mlhs_head: mlhs_item tCOMMA
403
+ {
404
+ result = [ val[0] ]
405
+ }
406
+ | mlhs_head mlhs_item tCOMMA
407
+ {
408
+ result = val[0] << val[1]
409
+ }
410
+
411
+ mlhs_post: mlhs_item
412
+ {
413
+ result = [ val[0] ]
414
+ }
415
+ | mlhs_post tCOMMA mlhs_item
416
+ {
417
+ result = val[0] << val[2]
418
+ }
419
+
420
+ mlhs_node: variable
421
+ {
422
+ result = @builder.assignable(val[0])
423
+ }
424
+ | primary_value tLBRACK2 opt_call_args rbracket
425
+ {
426
+ result = @builder.index_asgn(val[0], val[1], val[2], val[3])
427
+ }
428
+ | primary_value call_op tIDENTIFIER
429
+ {
430
+ result = @builder.attr_asgn(val[0], val[1], val[2])
431
+ }
432
+ | primary_value tCOLON2 tIDENTIFIER
433
+ {
434
+ result = @builder.attr_asgn(val[0], val[1], val[2])
435
+ }
436
+ | primary_value call_op tCONSTANT
437
+ {
438
+ result = @builder.attr_asgn(val[0], val[1], val[2])
439
+ }
440
+ | primary_value tCOLON2 tCONSTANT
441
+ {
442
+ result = @builder.assignable(
443
+ @builder.const_fetch(val[0], val[1], val[2]))
444
+ }
445
+ | tCOLON3 tCONSTANT
446
+ {
447
+ result = @builder.assignable(
448
+ @builder.const_global(val[0], val[1]))
449
+ }
450
+ | backref
451
+ {
452
+ result = @builder.assignable(val[0])
453
+ }
454
+
455
+ lhs: variable
456
+ {
457
+ result = @builder.assignable(val[0])
458
+ }
459
+ | primary_value tLBRACK2 opt_call_args rbracket
460
+ {
461
+ result = @builder.index_asgn(val[0], val[1], val[2], val[3])
462
+ }
463
+ | primary_value call_op tIDENTIFIER
464
+ {
465
+ result = @builder.attr_asgn(val[0], val[1], val[2])
466
+ }
467
+ | primary_value tCOLON2 tIDENTIFIER
468
+ {
469
+ result = @builder.attr_asgn(val[0], val[1], val[2])
470
+ }
471
+ | primary_value call_op tCONSTANT
472
+ {
473
+ result = @builder.attr_asgn(val[0], val[1], val[2])
474
+ }
475
+ | primary_value tCOLON2 tCONSTANT
476
+ {
477
+ result = @builder.assignable(
478
+ @builder.const_fetch(val[0], val[1], val[2]))
479
+ }
480
+ | tCOLON3 tCONSTANT
481
+ {
482
+ result = @builder.assignable(
483
+ @builder.const_global(val[0], val[1]))
484
+ }
485
+ | backref
486
+ {
487
+ result = @builder.assignable(val[0])
488
+ }
489
+
490
+ cname: tIDENTIFIER
491
+ {
492
+ diagnostic :error, :module_name_const, nil, val[0]
493
+ }
494
+ | tCONSTANT
495
+
496
+ cpath: tCOLON3 cname
497
+ {
498
+ result = @builder.const_global(val[0], val[1])
499
+ }
500
+ | cname
501
+ {
502
+ result = @builder.const(val[0])
503
+ }
504
+ | primary_value tCOLON2 cname
505
+ {
506
+ result = @builder.const_fetch(val[0], val[1], val[2])
507
+ }
508
+
509
+ fname: tIDENTIFIER | tCONSTANT | tFID
510
+ | op
511
+ | reswords
512
+
513
+ fsym: fname
514
+ {
515
+ result = @builder.symbol(val[0])
516
+ }
517
+ | symbol
518
+
519
+ fitem: fsym
520
+ | dsym
521
+
522
+ undef_list: fitem
523
+ {
524
+ result = [ val[0] ]
525
+ }
526
+ | undef_list tCOMMA
527
+ {
528
+ @lexer.state = :expr_fname
529
+ }
530
+ fitem
531
+ {
532
+ result = val[0] << val[3]
533
+ }
534
+
535
+ op: tPIPE | tCARET | tAMPER2 | tCMP | tEQ | tEQQ
536
+ | tMATCH | tNMATCH | tGT | tGEQ | tLT | tLEQ
537
+ | tNEQ | tLSHFT | tRSHFT | tPLUS | tMINUS | tSTAR2
538
+ | tSTAR | tDIVIDE | tPERCENT | tPOW | tBANG | tTILDE
539
+ | tUPLUS | tUMINUS | tAREF | tASET | tBACK_REF2
540
+
541
+ reswords: k__LINE__ | k__FILE__ | k__ENCODING__ | klBEGIN | klEND
542
+ | kALIAS | kAND | kBEGIN | kBREAK | kCASE
543
+ | kCLASS | kDEF | kDEFINED | kDO | kELSE
544
+ | kELSIF | kEND | kENSURE | kFALSE | kFOR
545
+ | kIN | kMODULE | kNEXT | kNIL | kNOT
546
+ | kOR | kREDO | kRESCUE | kRETRY | kRETURN
547
+ | kSELF | kSUPER | kTHEN | kTRUE | kUNDEF
548
+ | kWHEN | kYIELD | kIF | kUNLESS | kWHILE
549
+ | kUNTIL
550
+
551
+ arg: lhs tEQL arg
552
+ {
553
+ result = @builder.assign(val[0], val[1], val[2])
554
+ }
555
+ | lhs tEQL arg kRESCUE_MOD arg
556
+ {
557
+ rescue_body = @builder.rescue_body(val[3],
558
+ nil, nil, nil,
559
+ nil, val[4])
560
+
561
+ rescue_ = @builder.begin_body(val[2], [ rescue_body ])
562
+
563
+ result = @builder.assign(val[0], val[1], rescue_)
564
+ }
565
+ | var_lhs tOP_ASGN arg
566
+ {
567
+ result = @builder.op_assign(val[0], val[1], val[2])
568
+ }
569
+ | var_lhs tOP_ASGN arg kRESCUE_MOD arg
570
+ {
571
+ rescue_body = @builder.rescue_body(val[3],
572
+ nil, nil, nil,
573
+ nil, val[4])
574
+
575
+ rescue_ = @builder.begin_body(val[2], [ rescue_body ])
576
+
577
+ result = @builder.op_assign(val[0], val[1], rescue_)
578
+ }
579
+ | primary_value tLBRACK2 opt_call_args rbracket tOP_ASGN arg
580
+ {
581
+ result = @builder.op_assign(
582
+ @builder.index(
583
+ val[0], val[1], val[2], val[3]),
584
+ val[4], val[5])
585
+ }
586
+ | primary_value call_op tIDENTIFIER tOP_ASGN arg
587
+ {
588
+ result = @builder.op_assign(
589
+ @builder.call_method(
590
+ val[0], val[1], val[2]),
591
+ val[3], val[4])
592
+ }
593
+ | primary_value call_op tCONSTANT tOP_ASGN arg
594
+ {
595
+ result = @builder.op_assign(
596
+ @builder.call_method(
597
+ val[0], val[1], val[2]),
598
+ val[3], val[4])
599
+ }
600
+ | primary_value tCOLON2 tIDENTIFIER tOP_ASGN arg
601
+ {
602
+ result = @builder.op_assign(
603
+ @builder.call_method(
604
+ val[0], val[1], val[2]),
605
+ val[3], val[4])
606
+ }
607
+ | primary_value tCOLON2 tCONSTANT tOP_ASGN arg
608
+ {
609
+ diagnostic :error, :dynamic_const, nil, val[2], [ val[3] ]
610
+ }
611
+ | tCOLON3 tCONSTANT tOP_ASGN arg
612
+ {
613
+ diagnostic :error, :dynamic_const, nil, val[1], [ val[2] ]
614
+ }
615
+ | backref tOP_ASGN arg
616
+ {
617
+ result = @builder.op_assign(val[0], val[1], val[2])
618
+ }
619
+ | arg tDOT2 arg
620
+ {
621
+ result = @builder.range_inclusive(val[0], val[1], val[2])
622
+ }
623
+ | arg tDOT3 arg
624
+ {
625
+ result = @builder.range_exclusive(val[0], val[1], val[2])
626
+ }
627
+ | arg tPLUS arg
628
+ {
629
+ result = @builder.binary_op(val[0], val[1], val[2])
630
+ }
631
+ | arg tMINUS arg
632
+ {
633
+ result = @builder.binary_op(val[0], val[1], val[2])
634
+ }
635
+ | arg tSTAR2 arg
636
+ {
637
+ result = @builder.binary_op(val[0], val[1], val[2])
638
+ }
639
+ | arg tDIVIDE arg
640
+ {
641
+ result = @builder.binary_op(val[0], val[1], val[2])
642
+ }
643
+ | arg tPERCENT arg
644
+ {
645
+ result = @builder.binary_op(val[0], val[1], val[2])
646
+ }
647
+ | arg tPOW arg
648
+ {
649
+ result = @builder.binary_op(val[0], val[1], val[2])
650
+ }
651
+ | tUNARY_NUM tINTEGER tPOW arg
652
+ {
653
+ result = @builder.unary_op(val[0],
654
+ @builder.binary_op(
655
+ @builder.integer(val[1]),
656
+ val[2], val[3]))
657
+ }
658
+ | tUNARY_NUM tFLOAT tPOW arg
659
+ {
660
+ result = @builder.unary_op(val[0],
661
+ @builder.binary_op(
662
+ @builder.float(val[1]),
663
+ val[2], val[3]))
664
+ }
665
+ | tUPLUS arg
666
+ {
667
+ result = @builder.unary_op(val[0], val[1])
668
+ }
669
+ | tUMINUS arg
670
+ {
671
+ result = @builder.unary_op(val[0], val[1])
672
+ }
673
+ | arg tPIPE arg
674
+ {
675
+ result = @builder.binary_op(val[0], val[1], val[2])
676
+ }
677
+ | arg tCARET arg
678
+ {
679
+ result = @builder.binary_op(val[0], val[1], val[2])
680
+ }
681
+ | arg tAMPER2 arg
682
+ {
683
+ result = @builder.binary_op(val[0], val[1], val[2])
684
+ }
685
+ | arg tCMP arg
686
+ {
687
+ result = @builder.binary_op(val[0], val[1], val[2])
688
+ }
689
+ | arg tGT arg
690
+ {
691
+ result = @builder.binary_op(val[0], val[1], val[2])
692
+ }
693
+ | arg tGEQ arg
694
+ {
695
+ result = @builder.binary_op(val[0], val[1], val[2])
696
+ }
697
+ | arg tLT arg
698
+ {
699
+ result = @builder.binary_op(val[0], val[1], val[2])
700
+ }
701
+ | arg tLEQ arg
702
+ {
703
+ result = @builder.binary_op(val[0], val[1], val[2])
704
+ }
705
+ | arg tEQ arg
706
+ {
707
+ result = @builder.binary_op(val[0], val[1], val[2])
708
+ }
709
+ | arg tEQQ arg
710
+ {
711
+ result = @builder.binary_op(val[0], val[1], val[2])
712
+ }
713
+ | arg tNEQ arg
714
+ {
715
+ result = @builder.binary_op(val[0], val[1], val[2])
716
+ }
717
+ | arg tMATCH arg
718
+ {
719
+ result = @builder.match_op(val[0], val[1], val[2])
720
+ }
721
+ | arg tNMATCH arg
722
+ {
723
+ result = @builder.binary_op(val[0], val[1], val[2])
724
+ }
725
+ | tBANG arg
726
+ {
727
+ result = @builder.not_op(val[0], nil, val[1], nil)
728
+ }
729
+ | tTILDE arg
730
+ {
731
+ result = @builder.unary_op(val[0], val[1])
732
+ }
733
+ | arg tLSHFT arg
734
+ {
735
+ result = @builder.binary_op(val[0], val[1], val[2])
736
+ }
737
+ | arg tRSHFT arg
738
+ {
739
+ result = @builder.binary_op(val[0], val[1], val[2])
740
+ }
741
+ | arg tANDOP arg
742
+ {
743
+ result = @builder.logical_op(:and, val[0], val[1], val[2])
744
+ }
745
+ | arg tOROP arg
746
+ {
747
+ result = @builder.logical_op(:or, val[0], val[1], val[2])
748
+ }
749
+ | kDEFINED opt_nl arg
750
+ {
751
+ result = @builder.keyword_cmd(:defined?, val[0], nil, [ val[2] ], nil)
752
+ }
753
+
754
+ | arg tEH arg opt_nl tCOLON arg
755
+ {
756
+ result = @builder.ternary(val[0], val[1],
757
+ val[2], val[4], val[5])
758
+ }
759
+ | primary
760
+
761
+ arg_value: arg
762
+
763
+ aref_args: none
764
+ | args trailer
765
+ | args tCOMMA assocs trailer
766
+ {
767
+ result = val[0] << @builder.associate(nil, val[2], nil)
768
+ }
769
+ | assocs trailer
770
+ {
771
+ result = [ @builder.associate(nil, val[0], nil) ]
772
+ }
773
+
774
+ paren_args: tLPAREN2 opt_call_args rparen
775
+ {
776
+ result = val
777
+ }
778
+
779
+ opt_paren_args: # nothing
780
+ {
781
+ result = [ nil, [], nil ]
782
+ }
783
+ | paren_args
784
+
785
+ opt_call_args: # nothing
786
+ {
787
+ result = []
788
+ }
789
+ | call_args
790
+
791
+ call_args: command
792
+ {
793
+ result = [ val[0] ]
794
+ }
795
+ | args opt_block_arg
796
+ {
797
+ result = val[0].concat(val[1])
798
+ }
799
+ | assocs opt_block_arg
800
+ {
801
+ result = [ @builder.associate(nil, val[0], nil) ]
802
+ result.concat(val[1])
803
+ }
804
+ | args tCOMMA assocs opt_block_arg
805
+ {
806
+ assocs = @builder.associate(nil, val[2], nil)
807
+ result = val[0] << assocs
808
+ result.concat(val[3])
809
+ }
810
+ | args tCOMMA assocs tCOMMA args opt_block_arg
811
+ {
812
+ val[2][-1] = @builder.objc_varargs(val[2][-1], val[4])
813
+ assocs = @builder.associate(nil, val[2], nil)
814
+ result = val[0] << assocs
815
+ result.concat(val[5])
816
+ }
817
+ | block_arg
818
+ {
819
+ result = [ val[0] ]
820
+ }
821
+
822
+ call_args2: arg_value tCOMMA args opt_block_arg
823
+ {
824
+ result = [ val[0], *val[2].concat(val[3]) ]
825
+ }
826
+ | arg_value tCOMMA block_arg
827
+ {
828
+ result = [ val[0], val[2] ]
829
+ }
830
+ | assocs opt_block_arg
831
+ {
832
+ result = [ @builder.associate(nil, val[0], nil),
833
+ *val[1] ]
834
+ }
835
+ | arg_value tCOMMA assocs opt_block_arg
836
+ {
837
+ result = [ val[0],
838
+ @builder.associate(nil, val[2], nil),
839
+ *val[3] ]
840
+ }
841
+ | arg_value tCOMMA args tCOMMA assocs opt_block_arg
842
+ {
843
+ result = [ val[0],
844
+ *val[2].
845
+ push(@builder.associate(nil, val[4], nil)).
846
+ concat(val[5]) ]
847
+ }
848
+ | block_arg
849
+ {
850
+ result = [ val[0] ]
851
+ }
852
+
853
+ command_args: {
854
+ result = @lexer.cmdarg.dup
855
+ @lexer.cmdarg.push(true)
856
+ }
857
+ open_args
858
+ {
859
+ @lexer.cmdarg = val[0]
860
+
861
+ result = val[1]
862
+ }
863
+
864
+ open_args: call_args
865
+ {
866
+ result = [ nil, val[0], nil ]
867
+ }
868
+ | tLPAREN_ARG
869
+ {
870
+ @lexer.state = :expr_endarg
871
+ }
872
+ rparen
873
+ {
874
+ result = [ val[0], [], val[2] ]
875
+ }
876
+ | tLPAREN_ARG call_args2
877
+ {
878
+ @lexer.state = :expr_endarg
879
+ }
880
+ rparen
881
+ {
882
+ result = [ val[0], val[1], val[3] ]
883
+ }
884
+
885
+ block_arg: tAMPER arg_value
886
+ {
887
+ result = @builder.block_pass(val[0], val[1])
888
+ }
889
+
890
+ opt_block_arg: tCOMMA block_arg
891
+ {
892
+ result = [ val[1] ]
893
+ }
894
+ | tCOMMA
895
+ {
896
+ result = []
897
+ }
898
+ | # nothing
899
+ {
900
+ result = []
901
+ }
902
+
903
+ args: arg_value
904
+ {
905
+ result = [ val[0] ]
906
+ }
907
+ | tSTAR arg_value
908
+ {
909
+ result = [ @builder.splat(val[0], val[1]) ]
910
+ }
911
+ | args tCOMMA arg_value
912
+ {
913
+ result = val[0] << val[2]
914
+ }
915
+ | args tCOMMA tSTAR arg_value
916
+ {
917
+ result = val[0] << @builder.splat(val[2], val[3])
918
+ }
919
+
920
+ mrhs: args tCOMMA arg_value
921
+ {
922
+ result = val[0] << val[2]
923
+ }
924
+ | args tCOMMA tSTAR arg_value
925
+ {
926
+ result = val[0] << @builder.splat(val[2], val[3])
927
+ }
928
+ | tSTAR arg_value
929
+ {
930
+ result = [ @builder.splat(val[0], val[1]) ]
931
+ }
932
+
933
+ primary: literal
934
+ | strings
935
+ | xstring
936
+ | regexp
937
+ | words
938
+ | qwords
939
+ | var_ref
940
+ | backref
941
+ | tFID
942
+ {
943
+ result = @builder.call_method(nil, nil, val[0])
944
+ }
945
+ | kBEGIN bodystmt kEND
946
+ {
947
+ result = @builder.begin_keyword(val[0], val[1], val[2])
948
+ }
949
+ | tLPAREN_ARG expr
950
+ {
951
+ @lexer.state = :expr_endarg
952
+ }
953
+ rparen
954
+ {
955
+ result = @builder.begin(val[0], val[1], val[3])
956
+ }
957
+ | tLPAREN compstmt tRPAREN
958
+ {
959
+ result = @builder.begin(val[0], val[1], val[2])
960
+ }
961
+ | primary_value tCOLON2 tCONSTANT
962
+ {
963
+ result = @builder.const_fetch(val[0], val[1], val[2])
964
+ }
965
+ | tCOLON3 tCONSTANT
966
+ {
967
+ result = @builder.const_global(val[0], val[1])
968
+ }
969
+ | tLBRACK aref_args tRBRACK
970
+ {
971
+ result = @builder.array(val[0], val[1], val[2])
972
+ }
973
+ | tLBRACE assoc_list tRCURLY
974
+ {
975
+ result = @builder.associate(val[0], val[1], val[2])
976
+ }
977
+ | kRETURN
978
+ {
979
+ result = @builder.keyword_cmd(:return, val[0])
980
+ }
981
+ | kYIELD tLPAREN2 call_args rparen
982
+ {
983
+ result = @builder.keyword_cmd(:yield, val[0], val[1], val[2], val[3])
984
+ }
985
+ | kYIELD tLPAREN2 rparen
986
+ {
987
+ result = @builder.keyword_cmd(:yield, val[0], val[1], [], val[2])
988
+ }
989
+ | kYIELD
990
+ {
991
+ result = @builder.keyword_cmd(:yield, val[0])
992
+ }
993
+ | kDEFINED opt_nl tLPAREN2 expr rparen
994
+ {
995
+ result = @builder.keyword_cmd(:defined?, val[0],
996
+ val[2], [ val[3] ], val[4])
997
+ }
998
+ | kNOT tLPAREN2 expr rparen
999
+ {
1000
+ result = @builder.not_op(val[0], val[1], val[2], val[3])
1001
+ }
1002
+ | kNOT tLPAREN2 rparen
1003
+ {
1004
+ result = @builder.not_op(val[0], val[1], nil, val[2])
1005
+ }
1006
+ | operation brace_block
1007
+ {
1008
+ method_call = @builder.call_method(nil, nil, val[0])
1009
+
1010
+ begin_t, args, body, end_t = val[1]
1011
+ result = @builder.block(method_call,
1012
+ begin_t, args, body, end_t)
1013
+ }
1014
+ | method_call
1015
+ | method_call brace_block
1016
+ {
1017
+ begin_t, args, body, end_t = val[1]
1018
+ result = @builder.block(val[0],
1019
+ begin_t, args, body, end_t)
1020
+ }
1021
+ | tLAMBDA lambda
1022
+ {
1023
+ lambda_call = @builder.call_lambda(val[0])
1024
+
1025
+ args, (begin_t, body, end_t) = val[1]
1026
+ result = @builder.block(lambda_call,
1027
+ begin_t, args, body, end_t)
1028
+ }
1029
+ | kIF expr_value then compstmt if_tail kEND
1030
+ {
1031
+ else_t, else_ = val[4]
1032
+ result = @builder.condition(val[0], val[1], val[2],
1033
+ val[3], else_t,
1034
+ else_, val[5])
1035
+ }
1036
+ | kUNLESS expr_value then compstmt opt_else kEND
1037
+ {
1038
+ else_t, else_ = val[4]
1039
+ result = @builder.condition(val[0], val[1], val[2],
1040
+ else_, else_t,
1041
+ val[3], val[5])
1042
+ }
1043
+ | kWHILE
1044
+ {
1045
+ @lexer.cond.push(true)
1046
+ }
1047
+ expr_value do
1048
+ {
1049
+ @lexer.cond.pop
1050
+ }
1051
+ compstmt kEND
1052
+ {
1053
+ result = @builder.loop(:while, val[0], val[2], val[3],
1054
+ val[5], val[6])
1055
+ }
1056
+ | kUNTIL
1057
+ {
1058
+ @lexer.cond.push(true)
1059
+ }
1060
+ expr_value do
1061
+ {
1062
+ @lexer.cond.pop
1063
+ }
1064
+ compstmt kEND
1065
+ {
1066
+ result = @builder.loop(:until, val[0], val[2], val[3],
1067
+ val[5], val[6])
1068
+ }
1069
+ | kCASE expr_value opt_terms case_body kEND
1070
+ {
1071
+ *when_bodies, (else_t, else_body) = *val[3]
1072
+
1073
+ result = @builder.case(val[0], val[1],
1074
+ when_bodies, else_t, else_body,
1075
+ val[4])
1076
+ }
1077
+ | kCASE opt_terms case_body kEND
1078
+ {
1079
+ *when_bodies, (else_t, else_body) = *val[2]
1080
+
1081
+ result = @builder.case(val[0], nil,
1082
+ when_bodies, else_t, else_body,
1083
+ val[3])
1084
+ }
1085
+ | kFOR for_var kIN
1086
+ {
1087
+ @lexer.cond.push(true)
1088
+ }
1089
+ expr_value do
1090
+ {
1091
+ @lexer.cond.pop
1092
+ }
1093
+ compstmt kEND
1094
+ {
1095
+ result = @builder.for(val[0], val[1],
1096
+ val[2], val[4],
1097
+ val[5], val[7], val[8])
1098
+ }
1099
+ | kCLASS cpath superclass
1100
+ {
1101
+ @static_env.extend_static
1102
+ @lexer.push_cmdarg
1103
+ @context.push(:class)
1104
+ }
1105
+ bodystmt kEND
1106
+ {
1107
+ unless @context.class_definition_allowed?
1108
+ diagnostic :error, :class_in_def, nil, val[0]
1109
+ end
1110
+
1111
+ lt_t, superclass = val[2]
1112
+ result = @builder.def_class(val[0], val[1],
1113
+ lt_t, superclass,
1114
+ val[4], val[5])
1115
+
1116
+ @lexer.pop_cmdarg
1117
+ @static_env.unextend
1118
+ @context.pop
1119
+ }
1120
+ | kCLASS tLSHFT expr term
1121
+ {
1122
+ @static_env.extend_static
1123
+ @lexer.push_cmdarg
1124
+ @context.push(:sclass)
1125
+ }
1126
+ bodystmt kEND
1127
+ {
1128
+ result = @builder.def_sclass(val[0], val[1], val[2],
1129
+ val[5], val[6])
1130
+
1131
+ @lexer.pop_cmdarg
1132
+ @static_env.unextend
1133
+ @context.pop
1134
+ }
1135
+ | kMODULE cpath
1136
+ {
1137
+ @static_env.extend_static
1138
+ @lexer.push_cmdarg
1139
+ }
1140
+ bodystmt kEND
1141
+ {
1142
+ unless @context.module_definition_allowed?
1143
+ diagnostic :error, :module_in_def, nil, val[0]
1144
+ end
1145
+
1146
+ result = @builder.def_module(val[0], val[1],
1147
+ val[3], val[4])
1148
+
1149
+ @lexer.pop_cmdarg
1150
+ @static_env.unextend
1151
+ }
1152
+ | kDEF fname
1153
+ {
1154
+ @static_env.extend_static
1155
+ @lexer.push_cmdarg
1156
+ @context.push(:def)
1157
+ }
1158
+ f_arglist bodystmt kEND
1159
+ {
1160
+ result = @builder.def_method(val[0], val[1],
1161
+ val[3], val[4], val[5])
1162
+
1163
+ @lexer.pop_cmdarg
1164
+ @static_env.unextend
1165
+ @context.pop
1166
+ }
1167
+ | kDEF singleton dot_or_colon
1168
+ {
1169
+ @lexer.state = :expr_fname
1170
+ }
1171
+ fname
1172
+ {
1173
+ @static_env.extend_static
1174
+ @lexer.push_cmdarg
1175
+ @context.push(:defs)
1176
+ }
1177
+ f_arglist bodystmt kEND
1178
+ {
1179
+ result = @builder.def_singleton(val[0], val[1], val[2],
1180
+ val[4], val[6], val[7], val[8])
1181
+
1182
+ @lexer.pop_cmdarg
1183
+ @static_env.unextend
1184
+ @context.pop
1185
+ }
1186
+ | kBREAK
1187
+ {
1188
+ result = @builder.keyword_cmd(:break, val[0])
1189
+ }
1190
+ | kNEXT
1191
+ {
1192
+ result = @builder.keyword_cmd(:next, val[0])
1193
+ }
1194
+ | kREDO
1195
+ {
1196
+ result = @builder.keyword_cmd(:redo, val[0])
1197
+ }
1198
+ | kRETRY
1199
+ {
1200
+ result = @builder.keyword_cmd(:retry, val[0])
1201
+ }
1202
+
1203
+ primary_value: primary
1204
+
1205
+ then: term
1206
+ | kTHEN
1207
+ | term kTHEN
1208
+ {
1209
+ result = val[1]
1210
+ }
1211
+
1212
+ do: term
1213
+ | kDO_COND
1214
+
1215
+ if_tail: opt_else
1216
+ | kELSIF expr_value then compstmt if_tail
1217
+ {
1218
+ else_t, else_ = val[4]
1219
+ result = [ val[0],
1220
+ @builder.condition(val[0], val[1], val[2],
1221
+ val[3], else_t,
1222
+ else_, nil),
1223
+ ]
1224
+ }
1225
+
1226
+ opt_else: none
1227
+ | kELSE compstmt
1228
+ {
1229
+ result = val
1230
+ }
1231
+
1232
+ for_var: lhs
1233
+ | mlhs
1234
+
1235
+ f_marg: f_norm_arg
1236
+ | tLPAREN f_margs rparen
1237
+ {
1238
+ result = @builder.multi_lhs(val[0], val[1], val[2])
1239
+ }
1240
+
1241
+ f_marg_list: f_marg
1242
+ {
1243
+ result = [ val[0] ]
1244
+ }
1245
+ | f_marg_list tCOMMA f_marg
1246
+ {
1247
+ result = val[0] << val[2]
1248
+ }
1249
+
1250
+ f_margs: f_marg_list
1251
+ | f_marg_list tCOMMA tSTAR f_norm_arg
1252
+ {
1253
+ result = val[0].
1254
+ push(@builder.objc_restarg(val[2], val[3]))
1255
+ }
1256
+ | f_marg_list tCOMMA tSTAR f_norm_arg tCOMMA f_marg_list
1257
+ {
1258
+ result = val[0].
1259
+ push(@builder.objc_restarg(val[2], val[3])).
1260
+ concat(val[5])
1261
+ }
1262
+ | f_marg_list tCOMMA tSTAR
1263
+ {
1264
+ result = val[0].
1265
+ push(@builder.objc_restarg(val[2]))
1266
+ }
1267
+ | f_marg_list tCOMMA tSTAR tCOMMA f_marg_list
1268
+ {
1269
+ result = val[0].
1270
+ push(@builder.objc_restarg(val[2])).
1271
+ concat(val[4])
1272
+ }
1273
+ | tSTAR f_norm_arg
1274
+ {
1275
+ result = [ @builder.objc_restarg(val[0], val[1]) ]
1276
+ }
1277
+ | tSTAR f_norm_arg tCOMMA f_marg_list
1278
+ {
1279
+ result = [ @builder.objc_restarg(val[0], val[1]),
1280
+ *val[3] ]
1281
+ }
1282
+ | tSTAR
1283
+ {
1284
+ result = [ @builder.objc_restarg(val[0]) ]
1285
+ }
1286
+ | tSTAR tCOMMA f_marg_list
1287
+ {
1288
+ result = [ @builder.objc_restarg(val[0]),
1289
+ *val[2] ]
1290
+ }
1291
+
1292
+ block_param: f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg opt_f_block_arg
1293
+ {
1294
+ result = val[0].
1295
+ concat(val[2]).
1296
+ concat(val[4]).
1297
+ concat(val[5])
1298
+ }
1299
+ | f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg
1300
+ {
1301
+ result = val[0].
1302
+ concat(val[2]).
1303
+ concat(val[4]).
1304
+ concat(val[6]).
1305
+ concat(val[7])
1306
+ }
1307
+ | f_arg tCOMMA f_block_optarg opt_f_block_arg
1308
+ {
1309
+ result = val[0].
1310
+ concat(val[2]).
1311
+ concat(val[3])
1312
+ }
1313
+ | f_arg tCOMMA f_block_optarg tCOMMA f_arg opt_f_block_arg
1314
+ {
1315
+ result = val[0].
1316
+ concat(val[2]).
1317
+ concat(val[4]).
1318
+ concat(val[5])
1319
+ }
1320
+ | f_arg tCOMMA f_rest_arg opt_f_block_arg
1321
+ {
1322
+ result = val[0].
1323
+ concat(val[2]).
1324
+ concat(val[3])
1325
+ }
1326
+ | f_arg tCOMMA
1327
+ | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg
1328
+ {
1329
+ result = val[0].
1330
+ concat(val[2]).
1331
+ concat(val[4]).
1332
+ concat(val[5])
1333
+ }
1334
+ | f_arg opt_f_block_arg
1335
+ {
1336
+ if val[1].empty? && val[0].size == 1
1337
+ result = [@builder.procarg0(val[0][0])]
1338
+ else
1339
+ result = val[0].concat(val[1])
1340
+ end
1341
+ }
1342
+ | f_block_optarg tCOMMA f_rest_arg opt_f_block_arg
1343
+ {
1344
+ result = val[0].
1345
+ concat(val[2]).
1346
+ concat(val[3])
1347
+ }
1348
+ | f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg
1349
+ {
1350
+ result = val[0].
1351
+ concat(val[2]).
1352
+ concat(val[4]).
1353
+ concat(val[5])
1354
+ }
1355
+ | f_block_optarg opt_f_block_arg
1356
+ {
1357
+ result = val[0].
1358
+ concat(val[1])
1359
+ }
1360
+ | f_block_optarg tCOMMA f_arg opt_f_block_arg
1361
+ {
1362
+ result = val[0].
1363
+ concat(val[2]).
1364
+ concat(val[3])
1365
+ }
1366
+ | f_rest_arg opt_f_block_arg
1367
+ {
1368
+ result = val[0].
1369
+ concat(val[1])
1370
+ }
1371
+ | f_rest_arg tCOMMA f_arg opt_f_block_arg
1372
+ {
1373
+ result = val[0].
1374
+ concat(val[2]).
1375
+ concat(val[3])
1376
+ }
1377
+ | f_block_arg
1378
+ {
1379
+ result = [ val[0] ]
1380
+ }
1381
+
1382
+ opt_block_param: # nothing
1383
+ {
1384
+ result = @builder.args(nil, [], nil)
1385
+ }
1386
+ | block_param_def
1387
+ {
1388
+ @lexer.state = :expr_value
1389
+ }
1390
+
1391
+ block_param_def: tPIPE opt_bv_decl tPIPE
1392
+ {
1393
+ result = @builder.args(val[0], val[1], val[2])
1394
+ }
1395
+ | tOROP
1396
+ {
1397
+ result = @builder.args(val[0], [], val[0])
1398
+ }
1399
+ | tPIPE block_param opt_bv_decl tPIPE
1400
+ {
1401
+ result = @builder.args(val[0], val[1].concat(val[2]), val[3])
1402
+ }
1403
+
1404
+ opt_bv_decl: # nothing
1405
+ {
1406
+ result = []
1407
+ }
1408
+ | tSEMI bv_decls
1409
+ {
1410
+ result = val[1]
1411
+ }
1412
+
1413
+ bv_decls: bvar
1414
+ {
1415
+ result = [ val[0] ]
1416
+ }
1417
+ | bv_decls tCOMMA bvar
1418
+ {
1419
+ result = val[0] << val[2]
1420
+ }
1421
+
1422
+ bvar: tIDENTIFIER
1423
+ {
1424
+ @static_env.declare val[0][0]
1425
+ result = @builder.shadowarg(val[0])
1426
+ }
1427
+ | f_bad_arg
1428
+
1429
+ lambda: {
1430
+ @static_env.extend_dynamic
1431
+ }
1432
+ f_larglist lambda_body
1433
+ {
1434
+ result = [ val[1], val[2] ]
1435
+
1436
+ @static_env.unextend
1437
+ }
1438
+
1439
+ f_larglist: tLPAREN2 f_args opt_bv_decl rparen
1440
+ {
1441
+ result = @builder.args(val[0], val[1].concat(val[2]), val[3])
1442
+ }
1443
+ | f_args opt_bv_decl
1444
+ {
1445
+ result = @builder.args(nil, val[0].concat(val[1]), nil)
1446
+ }
1447
+
1448
+ lambda_body: tLAMBEG
1449
+ {
1450
+ @context.push(:lambda)
1451
+ }
1452
+ compstmt tRCURLY
1453
+ {
1454
+ result = [ val[0], val[2], val[3] ]
1455
+ @context.pop
1456
+ }
1457
+ | kDO_LAMBDA
1458
+ {
1459
+ @context.push(:lambda)
1460
+ }
1461
+ compstmt kEND
1462
+ {
1463
+ result = [ val[0], val[2], val[3] ]
1464
+ @context.pop
1465
+ }
1466
+
1467
+ do_block: kDO_BLOCK
1468
+ {
1469
+ @static_env.extend_dynamic
1470
+ @context.push(:block)
1471
+ }
1472
+ opt_block_param compstmt kEND
1473
+ {
1474
+ result = [ val[0], val[2], val[3], val[4] ]
1475
+
1476
+ @static_env.unextend
1477
+ @context.pop
1478
+ }
1479
+
1480
+ block_call: command do_block
1481
+ {
1482
+ begin_t, block_args, body, end_t = val[1]
1483
+ result = @builder.block(val[0],
1484
+ begin_t, block_args, body, end_t)
1485
+ }
1486
+ | block_call call_op operation2 opt_paren_args
1487
+ {
1488
+ lparen_t, args, rparen_t = val[3]
1489
+ result = @builder.call_method(val[0], val[1], val[2],
1490
+ lparen_t, args, rparen_t)
1491
+ }
1492
+ | block_call tCOLON2 operation2 opt_paren_args
1493
+ {
1494
+ lparen_t, args, rparen_t = val[3]
1495
+ result = @builder.call_method(val[0], val[1], val[2],
1496
+ lparen_t, args, rparen_t)
1497
+ }
1498
+
1499
+ method_call: operation paren_args
1500
+ {
1501
+ lparen_t, args, rparen_t = val[1]
1502
+ result = @builder.call_method(nil, nil, val[0],
1503
+ lparen_t, args, rparen_t)
1504
+ }
1505
+ | primary_value call_op operation2 opt_paren_args
1506
+ {
1507
+ lparen_t, args, rparen_t = val[3]
1508
+ result = @builder.call_method(val[0], val[1], val[2],
1509
+ lparen_t, args, rparen_t)
1510
+ }
1511
+ | primary_value tCOLON2 operation2 paren_args
1512
+ {
1513
+ lparen_t, args, rparen_t = val[3]
1514
+ result = @builder.call_method(val[0], val[1], val[2],
1515
+ lparen_t, args, rparen_t)
1516
+ }
1517
+ | primary_value tCOLON2 operation3
1518
+ {
1519
+ result = @builder.call_method(val[0], val[1], val[2])
1520
+ }
1521
+ | primary_value call_op paren_args
1522
+ {
1523
+ lparen_t, args, rparen_t = val[2]
1524
+ result = @builder.call_method(val[0], val[1], nil,
1525
+ lparen_t, args, rparen_t)
1526
+ }
1527
+ | primary_value tCOLON2 paren_args
1528
+ {
1529
+ lparen_t, args, rparen_t = val[2]
1530
+ result = @builder.call_method(val[0], val[1], nil,
1531
+ lparen_t, args, rparen_t)
1532
+ }
1533
+ | kSUPER paren_args
1534
+ {
1535
+ lparen_t, args, rparen_t = val[1]
1536
+ result = @builder.keyword_cmd(:super, val[0],
1537
+ lparen_t, args, rparen_t)
1538
+ }
1539
+ | kSUPER
1540
+ {
1541
+ result = @builder.keyword_cmd(:zsuper, val[0])
1542
+ }
1543
+ | primary_value tLBRACK2 opt_call_args rbracket
1544
+ {
1545
+ result = @builder.index(val[0], val[1], val[2], val[3])
1546
+ }
1547
+
1548
+ brace_block: tLCURLY
1549
+ {
1550
+ @static_env.extend_dynamic
1551
+ @context.push(:block)
1552
+ }
1553
+ opt_block_param compstmt tRCURLY
1554
+ {
1555
+ result = [ val[0], val[2], val[3], val[4] ]
1556
+
1557
+ @static_env.unextend
1558
+ @context.pop
1559
+ }
1560
+ | kDO
1561
+ {
1562
+ @static_env.extend_dynamic
1563
+ @context.push(:block)
1564
+ }
1565
+ opt_block_param compstmt kEND
1566
+ {
1567
+ result = [ val[0], val[2], val[3], val[4] ]
1568
+
1569
+ @static_env.unextend
1570
+ @context.pop
1571
+ }
1572
+
1573
+ case_body: kWHEN args then compstmt cases
1574
+ {
1575
+ result = [ @builder.when(val[0], val[1], val[2], val[3]),
1576
+ *val[4] ]
1577
+ }
1578
+
1579
+ cases: opt_else
1580
+ {
1581
+ result = [ val[0] ]
1582
+ }
1583
+ | case_body
1584
+
1585
+ opt_rescue: kRESCUE exc_list exc_var then compstmt opt_rescue
1586
+ {
1587
+ assoc_t, exc_var = val[2]
1588
+
1589
+ if val[1]
1590
+ exc_list = @builder.array(nil, val[1], nil)
1591
+ end
1592
+
1593
+ result = [ @builder.rescue_body(val[0],
1594
+ exc_list, assoc_t, exc_var,
1595
+ val[3], val[4]),
1596
+ *val[5] ]
1597
+ }
1598
+ |
1599
+ {
1600
+ result = []
1601
+ }
1602
+
1603
+ exc_list: arg_value
1604
+ {
1605
+ result = [ val[0] ]
1606
+ }
1607
+ | mrhs
1608
+ | none
1609
+
1610
+ exc_var: tASSOC lhs
1611
+ {
1612
+ result = [ val[0], val[1] ]
1613
+ }
1614
+ | none
1615
+
1616
+ opt_ensure: kENSURE compstmt
1617
+ {
1618
+ result = [ val[0], val[1] ]
1619
+ }
1620
+ | none
1621
+
1622
+ literal: numeric
1623
+ | symbol
1624
+ | dsym
1625
+
1626
+ strings: string
1627
+ {
1628
+ result = @builder.string_compose(nil, val[0], nil)
1629
+ }
1630
+
1631
+ string: string1
1632
+ {
1633
+ result = [ val[0] ]
1634
+ }
1635
+ | string string1
1636
+ {
1637
+ result = val[0] << val[1]
1638
+ }
1639
+
1640
+ string1: tSTRING_BEG string_contents tSTRING_END
1641
+ {
1642
+ result = @builder.string_compose(val[0], val[1], val[2])
1643
+ }
1644
+ | tSTRING
1645
+ {
1646
+ result = @builder.string(val[0])
1647
+ }
1648
+ | tCHARACTER
1649
+ {
1650
+ result = @builder.character(val[0])
1651
+ }
1652
+
1653
+ xstring: tXSTRING_BEG xstring_contents tSTRING_END
1654
+ {
1655
+ result = @builder.xstring_compose(val[0], val[1], val[2])
1656
+ }
1657
+
1658
+ regexp: tREGEXP_BEG regexp_contents tSTRING_END tREGEXP_OPT
1659
+ {
1660
+ opts = @builder.regexp_options(val[3])
1661
+ result = @builder.regexp_compose(val[0], val[1], val[2], opts)
1662
+ }
1663
+
1664
+ words: tWORDS_BEG word_list tSTRING_END
1665
+ {
1666
+ result = @builder.words_compose(val[0], val[1], val[2])
1667
+ }
1668
+
1669
+ word_list: # nothing
1670
+ {
1671
+ result = []
1672
+ }
1673
+ | word_list word tSPACE
1674
+ {
1675
+ result = val[0] << @builder.word(val[1])
1676
+ }
1677
+
1678
+ word: string_content
1679
+ {
1680
+ result = [ val[0] ]
1681
+ }
1682
+ | word string_content
1683
+ {
1684
+ result = val[0] << val[1]
1685
+ }
1686
+
1687
+ qwords: tQWORDS_BEG qword_list tSTRING_END
1688
+ {
1689
+ result = @builder.words_compose(val[0], val[1], val[2])
1690
+ }
1691
+
1692
+ qword_list: # nothing
1693
+ {
1694
+ result = []
1695
+ }
1696
+ | qword_list tSTRING_CONTENT tSPACE
1697
+ {
1698
+ result = val[0] << @builder.string_internal(val[1])
1699
+ }
1700
+
1701
+ string_contents: # nothing
1702
+ {
1703
+ result = []
1704
+ }
1705
+ | string_contents string_content
1706
+ {
1707
+ result = val[0] << val[1]
1708
+ }
1709
+
1710
+ xstring_contents: # nothing
1711
+ {
1712
+ result = []
1713
+ }
1714
+ | xstring_contents string_content
1715
+ {
1716
+ result = val[0] << val[1]
1717
+ }
1718
+
1719
+ regexp_contents: # nothing
1720
+ {
1721
+ result = []
1722
+ }
1723
+ | regexp_contents string_content
1724
+ {
1725
+ result = val[0] << val[1]
1726
+ }
1727
+
1728
+ string_content: tSTRING_CONTENT
1729
+ {
1730
+ result = @builder.string_internal(val[0])
1731
+ }
1732
+ | tSTRING_DVAR string_dvar
1733
+ {
1734
+ result = val[1]
1735
+ }
1736
+ | tSTRING_DBEG
1737
+ {
1738
+ @lexer.cond.push(false)
1739
+ @lexer.cmdarg.push(false)
1740
+ }
1741
+ compstmt tRCURLY
1742
+ {
1743
+ @lexer.cond.lexpop
1744
+ @lexer.cmdarg.lexpop
1745
+
1746
+ result = @builder.begin(val[0], val[2], val[3])
1747
+ }
1748
+
1749
+ string_dvar: tGVAR
1750
+ {
1751
+ result = @builder.gvar(val[0])
1752
+ }
1753
+ | tIVAR
1754
+ {
1755
+ result = @builder.ivar(val[0])
1756
+ }
1757
+ | tCVAR
1758
+ {
1759
+ result = @builder.cvar(val[0])
1760
+ }
1761
+ | backref
1762
+
1763
+
1764
+ symbol: tSYMBOL
1765
+ {
1766
+ result = @builder.symbol(val[0])
1767
+ }
1768
+
1769
+ dsym: tSYMBEG xstring_contents tSTRING_END
1770
+ {
1771
+ result = @builder.symbol_compose(val[0], val[1], val[2])
1772
+ }
1773
+
1774
+ numeric: tINTEGER
1775
+ {
1776
+ result = @builder.integer(val[0])
1777
+ }
1778
+ | tFLOAT
1779
+ {
1780
+ result = @builder.float(val[0])
1781
+ }
1782
+ | tUNARY_NUM tINTEGER =tLOWEST
1783
+ {
1784
+ num = @builder.integer(val[1])
1785
+ if @builder.respond_to? :negate
1786
+ # AST builder interface compatibility
1787
+ result = @builder.negate(val[0], num)
1788
+ else
1789
+ result = @builder.unary_num(val[0], num)
1790
+ end
1791
+ }
1792
+ | tUNARY_NUM tFLOAT =tLOWEST
1793
+ {
1794
+ num = @builder.float(val[1])
1795
+ if @builder.respond_to? :negate
1796
+ # AST builder interface compatibility
1797
+ result = @builder.negate(val[0], num)
1798
+ else
1799
+ result = @builder.unary_num(val[0], num)
1800
+ end
1801
+ }
1802
+
1803
+ variable: tIDENTIFIER
1804
+ {
1805
+ result = @builder.ident(val[0])
1806
+ }
1807
+ | tIVAR
1808
+ {
1809
+ result = @builder.ivar(val[0])
1810
+ }
1811
+ | tGVAR
1812
+ {
1813
+ result = @builder.gvar(val[0])
1814
+ }
1815
+ | tCONSTANT
1816
+ {
1817
+ result = @builder.const(val[0])
1818
+ }
1819
+ | tCVAR
1820
+ {
1821
+ result = @builder.cvar(val[0])
1822
+ }
1823
+ | kNIL
1824
+ {
1825
+ result = @builder.nil(val[0])
1826
+ }
1827
+ | kSELF
1828
+ {
1829
+ result = @builder.self(val[0])
1830
+ }
1831
+ | kTRUE
1832
+ {
1833
+ result = @builder.true(val[0])
1834
+ }
1835
+ | kFALSE
1836
+ {
1837
+ result = @builder.false(val[0])
1838
+ }
1839
+ | k__FILE__
1840
+ {
1841
+ result = @builder.__FILE__(val[0])
1842
+ }
1843
+ | k__LINE__
1844
+ {
1845
+ result = @builder.__LINE__(val[0])
1846
+ }
1847
+ | k__ENCODING__
1848
+ {
1849
+ result = @builder.__ENCODING__(val[0])
1850
+ }
1851
+
1852
+ var_ref: variable
1853
+ {
1854
+ result = @builder.accessible(val[0])
1855
+ }
1856
+
1857
+ var_lhs: variable
1858
+ {
1859
+ result = @builder.assignable(val[0])
1860
+ }
1861
+
1862
+ backref: tNTH_REF
1863
+ {
1864
+ result = @builder.nth_ref(val[0])
1865
+ }
1866
+ | tBACK_REF
1867
+ {
1868
+ result = @builder.back_ref(val[0])
1869
+ }
1870
+
1871
+ superclass: term
1872
+ {
1873
+ result = nil
1874
+ }
1875
+ | tLT expr_value term
1876
+ {
1877
+ result = [ val[0], val[1] ]
1878
+ }
1879
+ | error term
1880
+ {
1881
+ yyerrok
1882
+ result = nil
1883
+ }
1884
+
1885
+ f_arglist: tLPAREN2 f_args rparen
1886
+ {
1887
+ result = @builder.args(val[0], val[1], val[2])
1888
+
1889
+ @lexer.state = :expr_value
1890
+ }
1891
+ | f_args term
1892
+ {
1893
+ result = @builder.args(nil, val[0], nil)
1894
+ }
1895
+
1896
+ f_args: f_arg tCOMMA f_optarg tCOMMA f_rest_arg opt_f_block_arg
1897
+ {
1898
+ result = val[0].
1899
+ concat(val[2]).
1900
+ concat(val[4]).
1901
+ concat(val[5])
1902
+ }
1903
+ | f_arg tCOMMA f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg
1904
+ {
1905
+ result = val[0].
1906
+ concat(val[2]).
1907
+ concat(val[4]).
1908
+ concat(val[6]).
1909
+ concat(val[7])
1910
+ }
1911
+ | f_arg tCOMMA f_optarg opt_f_block_arg
1912
+ {
1913
+ result = val[0].
1914
+ concat(val[2]).
1915
+ concat(val[3])
1916
+ }
1917
+ | f_arg tCOMMA f_optarg tCOMMA f_arg opt_f_block_arg
1918
+ {
1919
+ result = val[0].
1920
+ concat(val[2]).
1921
+ concat(val[4]).
1922
+ concat(val[5])
1923
+ }
1924
+ | f_arg tCOMMA f_rest_arg opt_f_block_arg
1925
+ {
1926
+ result = val[0].
1927
+ concat(val[2]).
1928
+ concat(val[3])
1929
+ }
1930
+ | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg
1931
+ {
1932
+ result = val[0].
1933
+ concat(val[2]).
1934
+ concat(val[4]).
1935
+ concat(val[5])
1936
+ }
1937
+ | f_arg opt_f_block_arg
1938
+ {
1939
+ result = val[0].
1940
+ concat(val[1])
1941
+ }
1942
+ | f_optarg tCOMMA f_rest_arg opt_f_block_arg
1943
+ {
1944
+ result = val[0].
1945
+ concat(val[2]).
1946
+ concat(val[3])
1947
+ }
1948
+ | f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg
1949
+ {
1950
+ result = val[0].
1951
+ concat(val[2]).
1952
+ concat(val[4]).
1953
+ concat(val[5])
1954
+ }
1955
+ | f_optarg opt_f_block_arg
1956
+ {
1957
+ result = val[0].
1958
+ concat(val[1])
1959
+ }
1960
+ | f_optarg tCOMMA f_arg opt_f_block_arg
1961
+ {
1962
+ result = val[0].
1963
+ concat(val[2]).
1964
+ concat(val[3])
1965
+ }
1966
+ | f_rest_arg opt_f_block_arg
1967
+ {
1968
+ result = val[0].
1969
+ concat(val[1])
1970
+ }
1971
+ | f_rest_arg tCOMMA f_arg opt_f_block_arg
1972
+ {
1973
+ result = val[0].
1974
+ concat(val[2]).
1975
+ concat(val[3])
1976
+ }
1977
+ | f_block_arg
1978
+ {
1979
+ result = [ val[0] ]
1980
+ }
1981
+ | # nothing
1982
+ {
1983
+ result = []
1984
+ }
1985
+
1986
+ f_bad_arg: tCONSTANT
1987
+ {
1988
+ diagnostic :error, :argument_const, nil, val[0]
1989
+ }
1990
+ | tIVAR
1991
+ {
1992
+ diagnostic :error, :argument_ivar, nil, val[0]
1993
+ }
1994
+ | tGVAR
1995
+ {
1996
+ diagnostic :error, :argument_gvar, nil, val[0]
1997
+ }
1998
+ | tCVAR
1999
+ {
2000
+ diagnostic :error, :argument_cvar, nil, val[0]
2001
+ }
2002
+
2003
+ f_norm_arg: f_bad_arg
2004
+ | tIDENTIFIER
2005
+ {
2006
+ @static_env.declare val[0][0]
2007
+
2008
+ result = @builder.arg(val[0])
2009
+ }
2010
+ | tIDENTIFIER tASSOC tIDENTIFIER
2011
+ {
2012
+ @static_env.declare val[2][0]
2013
+
2014
+ result = @builder.objc_kwarg(val[0], val[1], val[2])
2015
+ }
2016
+ | tLABEL tIDENTIFIER
2017
+ {
2018
+ @static_env.declare val[1][0]
2019
+
2020
+ result = @builder.objc_kwarg(val[0], nil, val[1])
2021
+ }
2022
+
2023
+ f_arg_item: f_norm_arg
2024
+ | tLPAREN f_margs rparen
2025
+ {
2026
+ result = @builder.multi_lhs(val[0], val[1], val[2])
2027
+ }
2028
+
2029
+ f_arg: f_arg_item
2030
+ {
2031
+ result = [ val[0] ]
2032
+ }
2033
+ | f_arg tCOMMA f_arg_item
2034
+ {
2035
+ result = val[0] << val[2]
2036
+ }
2037
+
2038
+ f_opt: tIDENTIFIER tEQL arg_value
2039
+ {
2040
+ @static_env.declare val[0][0]
2041
+
2042
+ result = @builder.optarg(val[0], val[1], val[2])
2043
+ }
2044
+
2045
+ f_block_opt: tIDENTIFIER tEQL primary_value
2046
+ {
2047
+ @static_env.declare val[0][0]
2048
+
2049
+ result = @builder.optarg(val[0], val[1], val[2])
2050
+ }
2051
+
2052
+ f_block_optarg: f_block_opt
2053
+ {
2054
+ result = [ val[0] ]
2055
+ }
2056
+ | f_block_optarg tCOMMA f_block_opt
2057
+ {
2058
+ result = val[0] << val[2]
2059
+ }
2060
+
2061
+ f_optarg: f_opt
2062
+ {
2063
+ result = [ val[0] ]
2064
+ }
2065
+ | f_optarg tCOMMA f_opt
2066
+ {
2067
+ result = val[0] << val[2]
2068
+ }
2069
+
2070
+ restarg_mark: tSTAR2 | tSTAR
2071
+
2072
+ f_rest_arg: restarg_mark tIDENTIFIER
2073
+ {
2074
+ @static_env.declare val[1][0]
2075
+
2076
+ result = [ @builder.restarg(val[0], val[1]) ]
2077
+ }
2078
+ | restarg_mark
2079
+ {
2080
+ result = [ @builder.restarg(val[0]) ]
2081
+ }
2082
+
2083
+ blkarg_mark: tAMPER2 | tAMPER
2084
+
2085
+ f_block_arg: blkarg_mark tIDENTIFIER
2086
+ {
2087
+ @static_env.declare val[1][0]
2088
+
2089
+ result = @builder.blockarg(val[0], val[1])
2090
+ }
2091
+
2092
+ opt_f_block_arg: tCOMMA f_block_arg
2093
+ {
2094
+ result = [ val[1] ]
2095
+ }
2096
+ | # nothing
2097
+ {
2098
+ result = []
2099
+ }
2100
+
2101
+ singleton: var_ref
2102
+ | tLPAREN2 expr rparen
2103
+ {
2104
+ result = val[1]
2105
+ }
2106
+
2107
+ assoc_list: # nothing
2108
+ {
2109
+ result = []
2110
+ }
2111
+ | assocs trailer
2112
+
2113
+ assocs: assoc
2114
+ {
2115
+ result = [ val[0] ]
2116
+ }
2117
+ | assocs tCOMMA assoc
2118
+ {
2119
+ result = val[0] << val[2]
2120
+ }
2121
+
2122
+ assoc: arg_value tASSOC arg_value
2123
+ {
2124
+ result = @builder.pair(val[0], val[1], val[2])
2125
+ }
2126
+ | tLABEL arg_value
2127
+ {
2128
+ result = @builder.pair_keyword(val[0], val[1])
2129
+ }
2130
+
2131
+ operation: tIDENTIFIER | tCONSTANT | tFID
2132
+ operation2: tIDENTIFIER | tCONSTANT | tFID | op
2133
+ operation3: tIDENTIFIER | tFID | op
2134
+ dot_or_colon: call_op | tCOLON2
2135
+ call_op: tDOT
2136
+ {
2137
+ result = [:dot, val[0][1]]
2138
+ }
2139
+ | tANDDOT
2140
+ {
2141
+ result = [:anddot, val[0][1]]
2142
+ }
2143
+ opt_terms: | terms
2144
+ opt_nl: | tNL
2145
+ rparen: opt_nl tRPAREN
2146
+ {
2147
+ result = val[1]
2148
+ }
2149
+ rbracket: opt_nl tRBRACK
2150
+ {
2151
+ result = val[1]
2152
+ }
2153
+ trailer: | tNL | tCOMMA
2154
+
2155
+ term: tSEMI
2156
+ {
2157
+ yyerrok
2158
+ }
2159
+ | tNL
2160
+
2161
+ terms: term
2162
+ | terms tSEMI
2163
+
2164
+ none: # nothing
2165
+ {
2166
+ result = nil
2167
+ }
2168
+ end
2169
+
2170
+ ---- header
2171
+
2172
+ require 'parser'
2173
+
2174
+ ---- inner
2175
+
2176
+ def version
2177
+ 19 # closest released match: v1_9_0_2
2178
+ end
2179
+
2180
+ def default_encoding
2181
+ Encoding::BINARY
2182
+ end