chess_engine 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +5 -0
  3. data/Gemfile.lock +21 -0
  4. data/README.md +26 -0
  5. data/chess_engine.gemspec +14 -0
  6. data/lib/chess_engine/board.rb +95 -0
  7. data/lib/chess_engine/cli.rb +105 -0
  8. data/lib/chess_engine/game.rb +148 -0
  9. data/lib/chess_engine/input.rb +19 -0
  10. data/lib/chess_engine/move.rb +35 -0
  11. data/lib/chess_engine/piece.rb +97 -0
  12. data/lib/chess_engine/validator.rb +87 -0
  13. data/lib/chess_engine.rb +1 -0
  14. data/spec/board_spec.rb +70 -0
  15. data/spec/game_helper.rb +5 -0
  16. data/spec/game_spec.rb +79 -0
  17. data/spec/spec_helper.rb +100 -0
  18. data/spec/validator_spec.rb +26 -0
  19. data/vendor/bundle/bin/coderay +27 -0
  20. data/vendor/bundle/bin/pry +27 -0
  21. data/vendor/bundle/cache/coderay-1.1.2.gem +0 -0
  22. data/vendor/bundle/cache/colorize-0.8.1.gem +0 -0
  23. data/vendor/bundle/cache/method_source-0.9.2.gem +0 -0
  24. data/vendor/bundle/cache/pry-0.12.2.gem +0 -0
  25. data/vendor/bundle/cache/rb-readline-0.5.5.gem +0 -0
  26. data/vendor/bundle/gems/coderay-1.1.2/MIT-LICENSE +22 -0
  27. data/vendor/bundle/gems/coderay-1.1.2/README_INDEX.rdoc +123 -0
  28. data/vendor/bundle/gems/coderay-1.1.2/bin/coderay +215 -0
  29. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/duo.rb +81 -0
  30. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/_map.rb +17 -0
  31. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/comment_filter.rb +25 -0
  32. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/count.rb +39 -0
  33. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/debug.rb +49 -0
  34. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/debug_lint.rb +63 -0
  35. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/div.rb +23 -0
  36. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/encoder.rb +190 -0
  37. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/filter.rb +58 -0
  38. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/html/css.rb +65 -0
  39. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/html/numbering.rb +108 -0
  40. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/html/output.rb +166 -0
  41. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/html.rb +333 -0
  42. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/json.rb +83 -0
  43. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/lines_of_code.rb +45 -0
  44. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/lint.rb +59 -0
  45. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/null.rb +18 -0
  46. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/page.rb +24 -0
  47. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/span.rb +23 -0
  48. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/statistic.rb +95 -0
  49. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/terminal.rb +195 -0
  50. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/text.rb +46 -0
  51. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/token_kind_filter.rb +111 -0
  52. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/xml.rb +72 -0
  53. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/yaml.rb +50 -0
  54. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders.rb +18 -0
  55. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/for_redcloth.rb +95 -0
  56. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/helpers/file_type.rb +151 -0
  57. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/helpers/plugin.rb +55 -0
  58. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/helpers/plugin_host.rb +221 -0
  59. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/helpers/word_list.rb +72 -0
  60. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/_map.rb +24 -0
  61. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/c.rb +189 -0
  62. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/clojure.rb +217 -0
  63. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/cpp.rb +217 -0
  64. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/css.rb +196 -0
  65. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/debug.rb +75 -0
  66. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/delphi.rb +144 -0
  67. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/diff.rb +221 -0
  68. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/erb.rb +81 -0
  69. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/go.rb +208 -0
  70. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/groovy.rb +268 -0
  71. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/haml.rb +168 -0
  72. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/html.rb +275 -0
  73. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/java/builtin_types.rb +421 -0
  74. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/java.rb +174 -0
  75. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/java_script.rb +237 -0
  76. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/json.rb +98 -0
  77. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/lua.rb +280 -0
  78. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/php.rb +527 -0
  79. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/python.rb +287 -0
  80. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/raydebug.rb +75 -0
  81. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/ruby/patterns.rb +178 -0
  82. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/ruby/string_state.rb +79 -0
  83. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/ruby.rb +477 -0
  84. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/sass.rb +232 -0
  85. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/scanner.rb +337 -0
  86. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/sql.rb +169 -0
  87. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/taskpaper.rb +36 -0
  88. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/text.rb +26 -0
  89. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/xml.rb +17 -0
  90. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/yaml.rb +140 -0
  91. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners.rb +27 -0
  92. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/styles/_map.rb +7 -0
  93. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/styles/alpha.rb +153 -0
  94. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/styles/style.rb +18 -0
  95. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/styles.rb +15 -0
  96. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/token_kinds.rb +85 -0
  97. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/tokens.rb +161 -0
  98. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/tokens_proxy.rb +55 -0
  99. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/version.rb +3 -0
  100. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay.rb +284 -0
  101. data/vendor/bundle/gems/colorize-0.8.1/CHANGELOG +65 -0
  102. data/vendor/bundle/gems/colorize-0.8.1/LICENSE +339 -0
  103. data/vendor/bundle/gems/colorize-0.8.1/README.md +105 -0
  104. data/vendor/bundle/gems/colorize-0.8.1/Rakefile +13 -0
  105. data/vendor/bundle/gems/colorize-0.8.1/colorize.gemspec +36 -0
  106. data/vendor/bundle/gems/colorize-0.8.1/lib/colorize/class_methods.rb +120 -0
  107. data/vendor/bundle/gems/colorize-0.8.1/lib/colorize/instance_methods.rb +132 -0
  108. data/vendor/bundle/gems/colorize-0.8.1/lib/colorize.rb +12 -0
  109. data/vendor/bundle/gems/colorize-0.8.1/lib/colorized_string.rb +19 -0
  110. data/vendor/bundle/gems/colorize-0.8.1/test/test_colorize.rb +164 -0
  111. data/vendor/bundle/gems/method_source-0.9.2/Gemfile +2 -0
  112. data/vendor/bundle/gems/method_source-0.9.2/LICENSE +25 -0
  113. data/vendor/bundle/gems/method_source-0.9.2/README.markdown +91 -0
  114. data/vendor/bundle/gems/method_source-0.9.2/Rakefile +81 -0
  115. data/vendor/bundle/gems/method_source-0.9.2/lib/method_source/code_helpers.rb +154 -0
  116. data/vendor/bundle/gems/method_source-0.9.2/lib/method_source/source_location.rb +138 -0
  117. data/vendor/bundle/gems/method_source-0.9.2/lib/method_source/version.rb +3 -0
  118. data/vendor/bundle/gems/method_source-0.9.2/lib/method_source.rb +141 -0
  119. data/vendor/bundle/gems/method_source-0.9.2/method_source.gemspec +35 -0
  120. data/vendor/bundle/gems/method_source-0.9.2/spec/method_source/code_helpers_spec.rb +43 -0
  121. data/vendor/bundle/gems/method_source-0.9.2/spec/method_source_spec.rb +143 -0
  122. data/vendor/bundle/gems/method_source-0.9.2/spec/spec_helper.rb +101 -0
  123. data/vendor/bundle/gems/pry-0.12.2/CHANGELOG.md +953 -0
  124. data/vendor/bundle/gems/pry-0.12.2/LICENSE +25 -0
  125. data/vendor/bundle/gems/pry-0.12.2/README.md +390 -0
  126. data/vendor/bundle/gems/pry-0.12.2/bin/pry +8 -0
  127. data/vendor/bundle/gems/pry-0.12.2/lib/pry/basic_object.rb +6 -0
  128. data/vendor/bundle/gems/pry-0.12.2/lib/pry/cli.rb +218 -0
  129. data/vendor/bundle/gems/pry-0.12.2/lib/pry/code/code_file.rb +110 -0
  130. data/vendor/bundle/gems/pry-0.12.2/lib/pry/code/code_range.rb +71 -0
  131. data/vendor/bundle/gems/pry-0.12.2/lib/pry/code/loc.rb +98 -0
  132. data/vendor/bundle/gems/pry-0.12.2/lib/pry/code.rb +353 -0
  133. data/vendor/bundle/gems/pry-0.12.2/lib/pry/code_object.rb +195 -0
  134. data/vendor/bundle/gems/pry-0.12.2/lib/pry/color_printer.rb +65 -0
  135. data/vendor/bundle/gems/pry-0.12.2/lib/pry/command.rb +723 -0
  136. data/vendor/bundle/gems/pry-0.12.2/lib/pry/command_set.rb +415 -0
  137. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/amend_line.rb +98 -0
  138. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/bang.rb +20 -0
  139. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/bang_pry.rb +17 -0
  140. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/cat/abstract_formatter.rb +27 -0
  141. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/cat/exception_formatter.rb +79 -0
  142. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/cat/file_formatter.rb +71 -0
  143. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/cat/input_expression_formatter.rb +43 -0
  144. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/cat.rb +63 -0
  145. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/cd.rb +41 -0
  146. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/change_inspector.rb +27 -0
  147. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/change_prompt.rb +46 -0
  148. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/clear_screen.rb +14 -0
  149. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/code_collector.rb +167 -0
  150. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/disable_pry.rb +27 -0
  151. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/disabled_commands.rb +2 -0
  152. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/easter_eggs.rb +112 -0
  153. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/edit/exception_patcher.rb +25 -0
  154. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/edit/file_and_line_locator.rb +36 -0
  155. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/edit.rb +200 -0
  156. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/exit.rb +43 -0
  157. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/exit_all.rb +29 -0
  158. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/exit_program.rb +23 -0
  159. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/find_method.rb +191 -0
  160. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/fix_indent.rb +19 -0
  161. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_cd.rb +26 -0
  162. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_install.rb +32 -0
  163. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_list.rb +33 -0
  164. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_open.rb +29 -0
  165. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_readme.rb +25 -0
  166. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_search.rb +40 -0
  167. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_stats.rb +83 -0
  168. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gist.rb +102 -0
  169. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/help.rb +164 -0
  170. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/hist.rb +181 -0
  171. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/import_set.rb +23 -0
  172. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/install_command.rb +54 -0
  173. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/jump_to.rb +29 -0
  174. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/list_inspectors.rb +35 -0
  175. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/constants.rb +58 -0
  176. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/formatter.rb +51 -0
  177. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/globals.rb +46 -0
  178. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/grep.rb +19 -0
  179. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/instance_vars.rb +38 -0
  180. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/interrogatable.rb +18 -0
  181. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/jruby_hacks.rb +49 -0
  182. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/local_names.rb +33 -0
  183. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/local_vars.rb +37 -0
  184. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/ls_entity.rb +69 -0
  185. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/methods.rb +54 -0
  186. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/methods_helper.rb +46 -0
  187. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/self_methods.rb +33 -0
  188. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls.rb +113 -0
  189. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/nesting.rb +25 -0
  190. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/play.rb +102 -0
  191. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/pry_backtrace.rb +25 -0
  192. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/pry_version.rb +17 -0
  193. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/raise_up.rb +33 -0
  194. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/reload_code.rb +62 -0
  195. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/reset.rb +18 -0
  196. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ri.rb +65 -0
  197. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/save_file.rb +61 -0
  198. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/shell_command.rb +75 -0
  199. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/shell_mode.rb +25 -0
  200. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/show_doc.rb +81 -0
  201. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/show_info.rb +216 -0
  202. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/show_input.rb +17 -0
  203. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/show_source.rb +53 -0
  204. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/stat.rb +40 -0
  205. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/switch_to.rb +23 -0
  206. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/toggle_color.rb +24 -0
  207. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/watch_expression/expression.rb +38 -0
  208. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/watch_expression.rb +107 -0
  209. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/whereami.rb +197 -0
  210. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/wtf.rb +70 -0
  211. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands.rb +6 -0
  212. data/vendor/bundle/gems/pry-0.12.2/lib/pry/config/behavior.rb +255 -0
  213. data/vendor/bundle/gems/pry-0.12.2/lib/pry/config/convenience.rb +28 -0
  214. data/vendor/bundle/gems/pry-0.12.2/lib/pry/config/default.rb +159 -0
  215. data/vendor/bundle/gems/pry-0.12.2/lib/pry/config/memoization.rb +48 -0
  216. data/vendor/bundle/gems/pry-0.12.2/lib/pry/config.rb +35 -0
  217. data/vendor/bundle/gems/pry-0.12.2/lib/pry/core_extensions.rb +142 -0
  218. data/vendor/bundle/gems/pry-0.12.2/lib/pry/editor.rb +128 -0
  219. data/vendor/bundle/gems/pry-0.12.2/lib/pry/exceptions.rb +76 -0
  220. data/vendor/bundle/gems/pry-0.12.2/lib/pry/forwardable.rb +23 -0
  221. data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/base_helpers.rb +200 -0
  222. data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/command_helpers.rb +157 -0
  223. data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/documentation_helpers.rb +76 -0
  224. data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/options_helpers.rb +27 -0
  225. data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/platform.rb +58 -0
  226. data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/table.rb +114 -0
  227. data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/text.rb +115 -0
  228. data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers.rb +6 -0
  229. data/vendor/bundle/gems/pry-0.12.2/lib/pry/history.rb +161 -0
  230. data/vendor/bundle/gems/pry-0.12.2/lib/pry/hooks.rb +171 -0
  231. data/vendor/bundle/gems/pry-0.12.2/lib/pry/indent.rb +408 -0
  232. data/vendor/bundle/gems/pry-0.12.2/lib/pry/input_completer.rb +265 -0
  233. data/vendor/bundle/gems/pry-0.12.2/lib/pry/input_lock.rb +130 -0
  234. data/vendor/bundle/gems/pry-0.12.2/lib/pry/inspector.rb +27 -0
  235. data/vendor/bundle/gems/pry-0.12.2/lib/pry/last_exception.rb +61 -0
  236. data/vendor/bundle/gems/pry-0.12.2/lib/pry/method/disowned.rb +55 -0
  237. data/vendor/bundle/gems/pry-0.12.2/lib/pry/method/patcher.rb +122 -0
  238. data/vendor/bundle/gems/pry-0.12.2/lib/pry/method/weird_method_locator.rb +198 -0
  239. data/vendor/bundle/gems/pry-0.12.2/lib/pry/method.rb +552 -0
  240. data/vendor/bundle/gems/pry-0.12.2/lib/pry/object_path.rb +83 -0
  241. data/vendor/bundle/gems/pry-0.12.2/lib/pry/output.rb +50 -0
  242. data/vendor/bundle/gems/pry-0.12.2/lib/pry/pager.rb +250 -0
  243. data/vendor/bundle/gems/pry-0.12.2/lib/pry/platform.rb +91 -0
  244. data/vendor/bundle/gems/pry-0.12.2/lib/pry/plugins.rb +122 -0
  245. data/vendor/bundle/gems/pry-0.12.2/lib/pry/prompt.rb +145 -0
  246. data/vendor/bundle/gems/pry-0.12.2/lib/pry/pry_class.rb +425 -0
  247. data/vendor/bundle/gems/pry-0.12.2/lib/pry/pry_instance.rb +699 -0
  248. data/vendor/bundle/gems/pry-0.12.2/lib/pry/repl.rb +261 -0
  249. data/vendor/bundle/gems/pry-0.12.2/lib/pry/repl_file_loader.rb +73 -0
  250. data/vendor/bundle/gems/pry-0.12.2/lib/pry/ring.rb +84 -0
  251. data/vendor/bundle/gems/pry-0.12.2/lib/pry/rubygem.rb +84 -0
  252. data/vendor/bundle/gems/pry-0.12.2/lib/pry/slop/LICENSE +20 -0
  253. data/vendor/bundle/gems/pry-0.12.2/lib/pry/slop/commands.rb +195 -0
  254. data/vendor/bundle/gems/pry-0.12.2/lib/pry/slop/option.rb +206 -0
  255. data/vendor/bundle/gems/pry-0.12.2/lib/pry/slop.rb +661 -0
  256. data/vendor/bundle/gems/pry-0.12.2/lib/pry/terminal.rb +91 -0
  257. data/vendor/bundle/gems/pry-0.12.2/lib/pry/testable/evalable.rb +15 -0
  258. data/vendor/bundle/gems/pry-0.12.2/lib/pry/testable/mockable.rb +14 -0
  259. data/vendor/bundle/gems/pry-0.12.2/lib/pry/testable/pry_tester.rb +73 -0
  260. data/vendor/bundle/gems/pry-0.12.2/lib/pry/testable/utility.rb +26 -0
  261. data/vendor/bundle/gems/pry-0.12.2/lib/pry/testable/variables.rb +46 -0
  262. data/vendor/bundle/gems/pry-0.12.2/lib/pry/testable.rb +70 -0
  263. data/vendor/bundle/gems/pry-0.12.2/lib/pry/version.rb +3 -0
  264. data/vendor/bundle/gems/pry-0.12.2/lib/pry/wrapped_module/candidate.rb +131 -0
  265. data/vendor/bundle/gems/pry-0.12.2/lib/pry/wrapped_module.rb +378 -0
  266. data/vendor/bundle/gems/pry-0.12.2/lib/pry.rb +132 -0
  267. data/vendor/bundle/gems/rb-readline-0.5.5/CHANGES +94 -0
  268. data/vendor/bundle/gems/rb-readline-0.5.5/LICENSE +25 -0
  269. data/vendor/bundle/gems/rb-readline-0.5.5/README.md +81 -0
  270. data/vendor/bundle/gems/rb-readline-0.5.5/Rakefile +25 -0
  271. data/vendor/bundle/gems/rb-readline-0.5.5/bench/_rl_adjust_point.rb +26 -0
  272. data/vendor/bundle/gems/rb-readline-0.5.5/examples/example_readline.rb +8 -0
  273. data/vendor/bundle/gems/rb-readline-0.5.5/examples/example_readline_with_completion.rb +18 -0
  274. data/vendor/bundle/gems/rb-readline-0.5.5/examples/tinyirb.rb +11 -0
  275. data/vendor/bundle/gems/rb-readline-0.5.5/lib/rb-readline.rb +18 -0
  276. data/vendor/bundle/gems/rb-readline-0.5.5/lib/rbreadline/version.rb +3 -0
  277. data/vendor/bundle/gems/rb-readline-0.5.5/lib/rbreadline.rb +8920 -0
  278. data/vendor/bundle/gems/rb-readline-0.5.5/lib/readline.rb +539 -0
  279. data/vendor/bundle/gems/rb-readline-0.5.5/rb-readline.gemspec +51 -0
  280. data/vendor/bundle/gems/rb-readline-0.5.5/setup.rb +1585 -0
  281. data/vendor/bundle/gems/rb-readline-0.5.5/test/support/filesystem_completion_helper.rb +53 -0
  282. data/vendor/bundle/gems/rb-readline-0.5.5/test/test_completion.rb +100 -0
  283. data/vendor/bundle/gems/rb-readline-0.5.5/test/test_filename_completion_proc.rb +88 -0
  284. data/vendor/bundle/gems/rb-readline-0.5.5/test/test_history.rb +29 -0
  285. data/vendor/bundle/gems/rb-readline-0.5.5/test/test_rbreadline.rb +23 -0
  286. data/vendor/bundle/gems/rb-readline-0.5.5/test/test_readline.rb +221 -0
  287. data/vendor/bundle/specifications/coderay-1.1.2.gemspec +26 -0
  288. data/vendor/bundle/specifications/colorize-0.8.1.gemspec +38 -0
  289. data/vendor/bundle/specifications/method_source-0.9.2.gemspec +35 -0
  290. data/vendor/bundle/specifications/pry-0.12.2.gemspec +38 -0
  291. data/vendor/bundle/specifications/rb-readline-0.5.5.gemspec +39 -0
  292. metadata +363 -0
@@ -0,0 +1,174 @@
1
+ module CodeRay
2
+ module Scanners
3
+
4
+ # Scanner for Java.
5
+ class Java < Scanner
6
+
7
+ register_for :java
8
+
9
+ autoload :BuiltinTypes, CodeRay.coderay_path('scanners', 'java', 'builtin_types')
10
+
11
+ # http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html
12
+ KEYWORDS = %w[
13
+ assert break case catch continue default do else
14
+ finally for if instanceof import new package
15
+ return switch throw try typeof while
16
+ debugger export
17
+ ] # :nodoc:
18
+ RESERVED = %w[ const goto ] # :nodoc:
19
+ CONSTANTS = %w[ false null true ] # :nodoc:
20
+ MAGIC_VARIABLES = %w[ this super ] # :nodoc:
21
+ TYPES = %w[
22
+ boolean byte char class double enum float int interface long
23
+ short void
24
+ ] << '[]' # :nodoc: because int[] should be highlighted as a type
25
+ DIRECTIVES = %w[
26
+ abstract extends final implements native private protected public
27
+ static strictfp synchronized throws transient volatile
28
+ ] # :nodoc:
29
+
30
+ IDENT_KIND = WordList.new(:ident).
31
+ add(KEYWORDS, :keyword).
32
+ add(RESERVED, :reserved).
33
+ add(CONSTANTS, :predefined_constant).
34
+ add(MAGIC_VARIABLES, :local_variable).
35
+ add(TYPES, :type).
36
+ add(BuiltinTypes::List, :predefined_type).
37
+ add(BuiltinTypes::List.select { |builtin| builtin[/(Error|Exception)$/] }, :exception).
38
+ add(DIRECTIVES, :directive) # :nodoc:
39
+
40
+ ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x # :nodoc:
41
+ UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x # :nodoc:
42
+ STRING_CONTENT_PATTERN = {
43
+ "'" => /[^\\']+/,
44
+ '"' => /[^\\"]+/,
45
+ '/' => /[^\\\/]+/,
46
+ } # :nodoc:
47
+ IDENT = RUBY_VERSION < '1.9' ? /[a-zA-Z_][A-Za-z_0-9]*/ : Regexp.new('[[[:alpha:]]_][[[:alnum:]]_]*') # :nodoc:
48
+
49
+ protected
50
+
51
+ def scan_tokens encoder, options
52
+
53
+ state = :initial
54
+ string_delimiter = nil
55
+ package_name_expected = false
56
+ class_name_follows = false
57
+ last_token_dot = false
58
+
59
+ until eos?
60
+
61
+ case state
62
+
63
+ when :initial
64
+
65
+ if match = scan(/ \s+ | \\\n /x)
66
+ encoder.text_token match, :space
67
+ next
68
+
69
+ elsif match = scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx)
70
+ encoder.text_token match, :comment
71
+ next
72
+
73
+ elsif package_name_expected && match = scan(/ #{IDENT} (?: \. #{IDENT} )* /ox)
74
+ encoder.text_token match, package_name_expected
75
+
76
+ elsif match = scan(/ #{IDENT} | \[\] /ox)
77
+ kind = IDENT_KIND[match]
78
+ if last_token_dot
79
+ kind = :ident
80
+ elsif class_name_follows
81
+ kind = :class
82
+ class_name_follows = false
83
+ else
84
+ case match
85
+ when 'import'
86
+ package_name_expected = :include
87
+ when 'package'
88
+ package_name_expected = :namespace
89
+ when 'class', 'interface'
90
+ class_name_follows = true
91
+ end
92
+ end
93
+ encoder.text_token match, kind
94
+
95
+ elsif match = scan(/ \.(?!\d) | [,?:()\[\]}] | -- | \+\+ | && | \|\| | \*\*=? | [-+*\/%^~&|<>=!]=? | <<<?=? | >>>?=? /x)
96
+ encoder.text_token match, :operator
97
+
98
+ elsif match = scan(/;/)
99
+ package_name_expected = false
100
+ encoder.text_token match, :operator
101
+
102
+ elsif match = scan(/\{/)
103
+ class_name_follows = false
104
+ encoder.text_token match, :operator
105
+
106
+ elsif check(/[\d.]/)
107
+ if match = scan(/0[xX][0-9A-Fa-f]+/)
108
+ encoder.text_token match, :hex
109
+ elsif match = scan(/(?>0[0-7]+)(?![89.eEfF])/)
110
+ encoder.text_token match, :octal
111
+ elsif match = scan(/\d+[fFdD]|\d*\.\d+(?:[eE][+-]?\d+)?[fFdD]?|\d+[eE][+-]?\d+[fFdD]?/)
112
+ encoder.text_token match, :float
113
+ elsif match = scan(/\d+[lL]?/)
114
+ encoder.text_token match, :integer
115
+ end
116
+
117
+ elsif match = scan(/["']/)
118
+ state = :string
119
+ encoder.begin_group state
120
+ string_delimiter = match
121
+ encoder.text_token match, :delimiter
122
+
123
+ elsif match = scan(/ @ #{IDENT} /ox)
124
+ encoder.text_token match, :annotation
125
+
126
+ else
127
+ encoder.text_token getch, :error
128
+
129
+ end
130
+
131
+ when :string
132
+ if match = scan(STRING_CONTENT_PATTERN[string_delimiter])
133
+ encoder.text_token match, :content
134
+ elsif match = scan(/["'\/]/)
135
+ encoder.text_token match, :delimiter
136
+ encoder.end_group state
137
+ state = :initial
138
+ string_delimiter = nil
139
+ elsif state == :string && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox))
140
+ if string_delimiter == "'" && !(match == "\\\\" || match == "\\'")
141
+ encoder.text_token match, :content
142
+ else
143
+ encoder.text_token match, :char
144
+ end
145
+ elsif match = scan(/\\./m)
146
+ encoder.text_token match, :content
147
+ elsif match = scan(/ \\ | $ /x)
148
+ encoder.end_group state
149
+ state = :initial
150
+ encoder.text_token match, :error unless match.empty?
151
+ else
152
+ raise_inspect "else case \" reached; %p not handled." % peek(1), encoder
153
+ end
154
+
155
+ else
156
+ raise_inspect 'Unknown state', encoder
157
+
158
+ end
159
+
160
+ last_token_dot = match == '.'
161
+
162
+ end
163
+
164
+ if state == :string
165
+ encoder.end_group state
166
+ end
167
+
168
+ encoder
169
+ end
170
+
171
+ end
172
+
173
+ end
174
+ end
@@ -0,0 +1,237 @@
1
+ module CodeRay
2
+ module Scanners
3
+
4
+ # Scanner for JavaScript.
5
+ #
6
+ # Aliases: +ecmascript+, +ecma_script+, +javascript+
7
+ class JavaScript < Scanner
8
+
9
+ register_for :java_script
10
+ file_extension 'js'
11
+
12
+ # The actual JavaScript keywords.
13
+ KEYWORDS = %w[
14
+ break case catch continue default delete do else
15
+ finally for function if in instanceof new
16
+ return switch throw try typeof var void while with
17
+ ] # :nodoc:
18
+ PREDEFINED_CONSTANTS = %w[
19
+ false null true undefined NaN Infinity
20
+ ] # :nodoc:
21
+
22
+ MAGIC_VARIABLES = %w[ this arguments ] # :nodoc: arguments was introduced in JavaScript 1.4
23
+
24
+ KEYWORDS_EXPECTING_VALUE = WordList.new.add %w[
25
+ case delete in instanceof new return throw typeof with
26
+ ] # :nodoc:
27
+
28
+ # Reserved for future use.
29
+ RESERVED_WORDS = %w[
30
+ abstract boolean byte char class debugger double enum export extends
31
+ final float goto implements import int interface long native package
32
+ private protected public short static super synchronized throws transient
33
+ volatile
34
+ ] # :nodoc:
35
+
36
+ IDENT_KIND = WordList.new(:ident).
37
+ add(RESERVED_WORDS, :reserved).
38
+ add(PREDEFINED_CONSTANTS, :predefined_constant).
39
+ add(MAGIC_VARIABLES, :local_variable).
40
+ add(KEYWORDS, :keyword) # :nodoc:
41
+
42
+ ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x # :nodoc:
43
+ UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x # :nodoc:
44
+ REGEXP_ESCAPE = / [bBdDsSwW] /x # :nodoc:
45
+ STRING_CONTENT_PATTERN = {
46
+ "'" => /[^\\']+/,
47
+ '"' => /[^\\"]+/,
48
+ '/' => /[^\\\/]+/,
49
+ } # :nodoc:
50
+ KEY_CHECK_PATTERN = {
51
+ "'" => / (?> [^\\']* (?: \\. [^\\']* )* ) ' \s* : /mx,
52
+ '"' => / (?> [^\\"]* (?: \\. [^\\"]* )* ) " \s* : /mx,
53
+ } # :nodoc:
54
+
55
+ protected
56
+
57
+ def setup
58
+ @state = :initial
59
+ end
60
+
61
+ def scan_tokens encoder, options
62
+
63
+ state, string_delimiter = options[:state] || @state
64
+ if string_delimiter
65
+ encoder.begin_group state
66
+ end
67
+
68
+ value_expected = true
69
+ key_expected = false
70
+ function_expected = false
71
+
72
+ until eos?
73
+
74
+ case state
75
+
76
+ when :initial
77
+
78
+ if match = scan(/ \s+ | \\\n /x)
79
+ value_expected = true if !value_expected && match.index(?\n)
80
+ encoder.text_token match, :space
81
+
82
+ elsif match = scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .*() ) !mx)
83
+ value_expected = true
84
+ encoder.text_token match, :comment
85
+ state = :open_multi_line_comment if self[1]
86
+
87
+ elsif check(/\.?\d/)
88
+ key_expected = value_expected = false
89
+ if match = scan(/0[xX][0-9A-Fa-f]+/)
90
+ encoder.text_token match, :hex
91
+ elsif match = scan(/(?>0[0-7]+)(?![89.eEfF])/)
92
+ encoder.text_token match, :octal
93
+ elsif match = scan(/\d+[fF]|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/)
94
+ encoder.text_token match, :float
95
+ elsif match = scan(/\d+/)
96
+ encoder.text_token match, :integer
97
+ end
98
+
99
+ elsif value_expected && match = scan(/<([[:alpha:]]\w*) (?: [^\/>]*\/> | .*?<\/\1>)/xim)
100
+ # TODO: scan over nested tags
101
+ xml_scanner.tokenize match, :tokens => encoder
102
+ value_expected = false
103
+ next
104
+
105
+ elsif match = scan(/ [-+*=<>?:;,!&^|(\[{~%]+ | \.(?!\d) /x)
106
+ value_expected = true
107
+ last_operator = match[-1]
108
+ key_expected = (last_operator == ?{) || (last_operator == ?,)
109
+ function_expected = false
110
+ encoder.text_token match, :operator
111
+
112
+ elsif match = scan(/ [)\]}]+ /x)
113
+ function_expected = key_expected = value_expected = false
114
+ encoder.text_token match, :operator
115
+
116
+ elsif match = scan(/ [$a-zA-Z_][A-Za-z_0-9$]* /x)
117
+ kind = IDENT_KIND[match]
118
+ value_expected = (kind == :keyword) && KEYWORDS_EXPECTING_VALUE[match]
119
+ # TODO: labels
120
+ if kind == :ident
121
+ if match.index(?$) # $ allowed inside an identifier
122
+ kind = :predefined
123
+ elsif function_expected
124
+ kind = :function
125
+ elsif check(/\s*[=:]\s*function\b/)
126
+ kind = :function
127
+ elsif key_expected && check(/\s*:/)
128
+ kind = :key
129
+ end
130
+ end
131
+ function_expected = (kind == :keyword) && (match == 'function')
132
+ key_expected = false
133
+ encoder.text_token match, kind
134
+
135
+ elsif match = scan(/["']/)
136
+ if key_expected && check(KEY_CHECK_PATTERN[match])
137
+ state = :key
138
+ else
139
+ state = :string
140
+ end
141
+ encoder.begin_group state
142
+ string_delimiter = match
143
+ encoder.text_token match, :delimiter
144
+
145
+ elsif value_expected && (match = scan(/\//))
146
+ encoder.begin_group :regexp
147
+ state = :regexp
148
+ string_delimiter = '/'
149
+ encoder.text_token match, :delimiter
150
+
151
+ elsif match = scan(/ \/ /x)
152
+ value_expected = true
153
+ key_expected = false
154
+ encoder.text_token match, :operator
155
+
156
+ else
157
+ encoder.text_token getch, :error
158
+
159
+ end
160
+
161
+ when :string, :regexp, :key
162
+ if match = scan(STRING_CONTENT_PATTERN[string_delimiter])
163
+ encoder.text_token match, :content
164
+ elsif match = scan(/["'\/]/)
165
+ encoder.text_token match, :delimiter
166
+ if state == :regexp
167
+ modifiers = scan(/[gim]+/)
168
+ encoder.text_token modifiers, :modifier if modifiers && !modifiers.empty?
169
+ end
170
+ encoder.end_group state
171
+ string_delimiter = nil
172
+ key_expected = value_expected = false
173
+ state = :initial
174
+ elsif state != :regexp && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox))
175
+ if string_delimiter == "'" && !(match == "\\\\" || match == "\\'")
176
+ encoder.text_token match, :content
177
+ else
178
+ encoder.text_token match, :char
179
+ end
180
+ elsif state == :regexp && match = scan(/ \\ (?: #{ESCAPE} | #{REGEXP_ESCAPE} | #{UNICODE_ESCAPE} ) /mox)
181
+ encoder.text_token match, :char
182
+ elsif match = scan(/\\./m)
183
+ encoder.text_token match, :content
184
+ elsif match = scan(/ \\ | $ /x)
185
+ encoder.end_group state
186
+ encoder.text_token match, :error unless match.empty?
187
+ string_delimiter = nil
188
+ key_expected = value_expected = false
189
+ state = :initial
190
+ else
191
+ raise_inspect "else case #{string_delimiter} reached; %p not handled." % peek(1), encoder
192
+ end
193
+
194
+ when :open_multi_line_comment
195
+ if match = scan(%r! .*? \*/ !mx)
196
+ state = :initial
197
+ else
198
+ match = scan(%r! .+ !mx)
199
+ end
200
+ value_expected = true
201
+ encoder.text_token match, :comment if match
202
+
203
+ else
204
+ #:nocov:
205
+ raise_inspect 'Unknown state: %p' % [state], encoder
206
+ #:nocov:
207
+
208
+ end
209
+
210
+ end
211
+
212
+ if options[:keep_state]
213
+ @state = state, string_delimiter
214
+ end
215
+
216
+ if [:string, :regexp].include? state
217
+ encoder.end_group state
218
+ end
219
+
220
+ encoder
221
+ end
222
+
223
+ protected
224
+
225
+ def reset_instance
226
+ super
227
+ @xml_scanner.reset if defined? @xml_scanner
228
+ end
229
+
230
+ def xml_scanner
231
+ @xml_scanner ||= CodeRay.scanner :xml, :tokens => @tokens, :keep_tokens => true, :keep_state => false
232
+ end
233
+
234
+ end
235
+
236
+ end
237
+ end
@@ -0,0 +1,98 @@
1
+ module CodeRay
2
+ module Scanners
3
+
4
+ # Scanner for JSON (JavaScript Object Notation).
5
+ class JSON < Scanner
6
+
7
+ register_for :json
8
+ file_extension 'json'
9
+
10
+ KINDS_NOT_LOC = [
11
+ :float, :char, :content, :delimiter,
12
+ :error, :integer, :operator, :value,
13
+ ] # :nodoc:
14
+
15
+ ESCAPE = / [bfnrt\\"\/] /x # :nodoc:
16
+ UNICODE_ESCAPE = / u[a-fA-F0-9]{4} /x # :nodoc:
17
+ KEY = / (?> (?: [^\\"]+ | \\. )* ) " \s* : /x
18
+
19
+ protected
20
+
21
+ def setup
22
+ @state = :initial
23
+ end
24
+
25
+ # See http://json.org/ for a definition of the JSON lexic/grammar.
26
+ def scan_tokens encoder, options
27
+ state = options[:state] || @state
28
+
29
+ if [:string, :key].include? state
30
+ encoder.begin_group state
31
+ end
32
+
33
+ until eos?
34
+
35
+ case state
36
+
37
+ when :initial
38
+ if match = scan(/ \s+ /x)
39
+ encoder.text_token match, :space
40
+ elsif match = scan(/"/)
41
+ state = check(/#{KEY}/o) ? :key : :string
42
+ encoder.begin_group state
43
+ encoder.text_token match, :delimiter
44
+ elsif match = scan(/ [:,\[{\]}] /x)
45
+ encoder.text_token match, :operator
46
+ elsif match = scan(/ true | false | null /x)
47
+ encoder.text_token match, :value
48
+ elsif match = scan(/ -? (?: 0 | [1-9]\d* ) /x)
49
+ if scan(/ \.\d+ (?:[eE][-+]?\d+)? | [eE][-+]? \d+ /x)
50
+ match << matched
51
+ encoder.text_token match, :float
52
+ else
53
+ encoder.text_token match, :integer
54
+ end
55
+ else
56
+ encoder.text_token getch, :error
57
+ end
58
+
59
+ when :string, :key
60
+ if match = scan(/[^\\"]+/)
61
+ encoder.text_token match, :content
62
+ elsif match = scan(/"/)
63
+ encoder.text_token match, :delimiter
64
+ encoder.end_group state
65
+ state = :initial
66
+ elsif match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)
67
+ encoder.text_token match, :char
68
+ elsif match = scan(/\\./m)
69
+ encoder.text_token match, :content
70
+ elsif match = scan(/ \\ | $ /x)
71
+ encoder.end_group state
72
+ encoder.text_token match, :error unless match.empty?
73
+ state = :initial
74
+ else
75
+ raise_inspect "else case \" reached; %p not handled." % peek(1), encoder
76
+ end
77
+
78
+ else
79
+ raise_inspect 'Unknown state: %p' % [state], encoder
80
+
81
+ end
82
+ end
83
+
84
+ if options[:keep_state]
85
+ @state = state
86
+ end
87
+
88
+ if [:string, :key].include? state
89
+ encoder.end_group state
90
+ end
91
+
92
+ encoder
93
+ end
94
+
95
+ end
96
+
97
+ end
98
+ end