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.
- checksums.yaml +7 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +21 -0
- data/README.md +26 -0
- data/chess_engine.gemspec +14 -0
- data/lib/chess_engine/board.rb +95 -0
- data/lib/chess_engine/cli.rb +105 -0
- data/lib/chess_engine/game.rb +148 -0
- data/lib/chess_engine/input.rb +19 -0
- data/lib/chess_engine/move.rb +35 -0
- data/lib/chess_engine/piece.rb +97 -0
- data/lib/chess_engine/validator.rb +87 -0
- data/lib/chess_engine.rb +1 -0
- data/spec/board_spec.rb +70 -0
- data/spec/game_helper.rb +5 -0
- data/spec/game_spec.rb +79 -0
- data/spec/spec_helper.rb +100 -0
- data/spec/validator_spec.rb +26 -0
- data/vendor/bundle/bin/coderay +27 -0
- data/vendor/bundle/bin/pry +27 -0
- data/vendor/bundle/cache/coderay-1.1.2.gem +0 -0
- data/vendor/bundle/cache/colorize-0.8.1.gem +0 -0
- data/vendor/bundle/cache/method_source-0.9.2.gem +0 -0
- data/vendor/bundle/cache/pry-0.12.2.gem +0 -0
- data/vendor/bundle/cache/rb-readline-0.5.5.gem +0 -0
- data/vendor/bundle/gems/coderay-1.1.2/MIT-LICENSE +22 -0
- data/vendor/bundle/gems/coderay-1.1.2/README_INDEX.rdoc +123 -0
- data/vendor/bundle/gems/coderay-1.1.2/bin/coderay +215 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/duo.rb +81 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/_map.rb +17 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/comment_filter.rb +25 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/count.rb +39 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/debug.rb +49 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/debug_lint.rb +63 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/div.rb +23 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/encoder.rb +190 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/filter.rb +58 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/html/css.rb +65 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/html/numbering.rb +108 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/html/output.rb +166 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/html.rb +333 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/json.rb +83 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/lines_of_code.rb +45 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/lint.rb +59 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/null.rb +18 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/page.rb +24 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/span.rb +23 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/statistic.rb +95 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/terminal.rb +195 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/text.rb +46 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/token_kind_filter.rb +111 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/xml.rb +72 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/yaml.rb +50 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders.rb +18 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/for_redcloth.rb +95 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/helpers/file_type.rb +151 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/helpers/plugin.rb +55 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/helpers/plugin_host.rb +221 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/helpers/word_list.rb +72 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/_map.rb +24 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/c.rb +189 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/clojure.rb +217 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/cpp.rb +217 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/css.rb +196 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/debug.rb +75 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/delphi.rb +144 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/diff.rb +221 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/erb.rb +81 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/go.rb +208 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/groovy.rb +268 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/haml.rb +168 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/html.rb +275 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/java/builtin_types.rb +421 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/java.rb +174 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/java_script.rb +237 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/json.rb +98 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/lua.rb +280 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/php.rb +527 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/python.rb +287 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/raydebug.rb +75 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/ruby/patterns.rb +178 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/ruby/string_state.rb +79 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/ruby.rb +477 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/sass.rb +232 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/scanner.rb +337 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/sql.rb +169 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/taskpaper.rb +36 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/text.rb +26 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/xml.rb +17 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/yaml.rb +140 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners.rb +27 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/styles/_map.rb +7 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/styles/alpha.rb +153 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/styles/style.rb +18 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/styles.rb +15 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/token_kinds.rb +85 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/tokens.rb +161 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/tokens_proxy.rb +55 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/version.rb +3 -0
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay.rb +284 -0
- data/vendor/bundle/gems/colorize-0.8.1/CHANGELOG +65 -0
- data/vendor/bundle/gems/colorize-0.8.1/LICENSE +339 -0
- data/vendor/bundle/gems/colorize-0.8.1/README.md +105 -0
- data/vendor/bundle/gems/colorize-0.8.1/Rakefile +13 -0
- data/vendor/bundle/gems/colorize-0.8.1/colorize.gemspec +36 -0
- data/vendor/bundle/gems/colorize-0.8.1/lib/colorize/class_methods.rb +120 -0
- data/vendor/bundle/gems/colorize-0.8.1/lib/colorize/instance_methods.rb +132 -0
- data/vendor/bundle/gems/colorize-0.8.1/lib/colorize.rb +12 -0
- data/vendor/bundle/gems/colorize-0.8.1/lib/colorized_string.rb +19 -0
- data/vendor/bundle/gems/colorize-0.8.1/test/test_colorize.rb +164 -0
- data/vendor/bundle/gems/method_source-0.9.2/Gemfile +2 -0
- data/vendor/bundle/gems/method_source-0.9.2/LICENSE +25 -0
- data/vendor/bundle/gems/method_source-0.9.2/README.markdown +91 -0
- data/vendor/bundle/gems/method_source-0.9.2/Rakefile +81 -0
- data/vendor/bundle/gems/method_source-0.9.2/lib/method_source/code_helpers.rb +154 -0
- data/vendor/bundle/gems/method_source-0.9.2/lib/method_source/source_location.rb +138 -0
- data/vendor/bundle/gems/method_source-0.9.2/lib/method_source/version.rb +3 -0
- data/vendor/bundle/gems/method_source-0.9.2/lib/method_source.rb +141 -0
- data/vendor/bundle/gems/method_source-0.9.2/method_source.gemspec +35 -0
- data/vendor/bundle/gems/method_source-0.9.2/spec/method_source/code_helpers_spec.rb +43 -0
- data/vendor/bundle/gems/method_source-0.9.2/spec/method_source_spec.rb +143 -0
- data/vendor/bundle/gems/method_source-0.9.2/spec/spec_helper.rb +101 -0
- data/vendor/bundle/gems/pry-0.12.2/CHANGELOG.md +953 -0
- data/vendor/bundle/gems/pry-0.12.2/LICENSE +25 -0
- data/vendor/bundle/gems/pry-0.12.2/README.md +390 -0
- data/vendor/bundle/gems/pry-0.12.2/bin/pry +8 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/basic_object.rb +6 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/cli.rb +218 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/code/code_file.rb +110 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/code/code_range.rb +71 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/code/loc.rb +98 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/code.rb +353 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/code_object.rb +195 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/color_printer.rb +65 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/command.rb +723 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/command_set.rb +415 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/amend_line.rb +98 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/bang.rb +20 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/bang_pry.rb +17 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/cat/abstract_formatter.rb +27 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/cat/exception_formatter.rb +79 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/cat/file_formatter.rb +71 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/cat/input_expression_formatter.rb +43 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/cat.rb +63 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/cd.rb +41 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/change_inspector.rb +27 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/change_prompt.rb +46 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/clear_screen.rb +14 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/code_collector.rb +167 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/disable_pry.rb +27 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/disabled_commands.rb +2 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/easter_eggs.rb +112 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/edit/exception_patcher.rb +25 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/edit/file_and_line_locator.rb +36 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/edit.rb +200 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/exit.rb +43 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/exit_all.rb +29 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/exit_program.rb +23 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/find_method.rb +191 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/fix_indent.rb +19 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_cd.rb +26 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_install.rb +32 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_list.rb +33 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_open.rb +29 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_readme.rb +25 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_search.rb +40 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_stats.rb +83 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gist.rb +102 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/help.rb +164 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/hist.rb +181 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/import_set.rb +23 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/install_command.rb +54 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/jump_to.rb +29 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/list_inspectors.rb +35 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/constants.rb +58 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/formatter.rb +51 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/globals.rb +46 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/grep.rb +19 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/instance_vars.rb +38 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/interrogatable.rb +18 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/jruby_hacks.rb +49 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/local_names.rb +33 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/local_vars.rb +37 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/ls_entity.rb +69 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/methods.rb +54 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/methods_helper.rb +46 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/self_methods.rb +33 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls.rb +113 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/nesting.rb +25 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/play.rb +102 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/pry_backtrace.rb +25 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/pry_version.rb +17 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/raise_up.rb +33 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/reload_code.rb +62 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/reset.rb +18 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ri.rb +65 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/save_file.rb +61 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/shell_command.rb +75 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/shell_mode.rb +25 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/show_doc.rb +81 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/show_info.rb +216 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/show_input.rb +17 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/show_source.rb +53 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/stat.rb +40 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/switch_to.rb +23 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/toggle_color.rb +24 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/watch_expression/expression.rb +38 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/watch_expression.rb +107 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/whereami.rb +197 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/wtf.rb +70 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands.rb +6 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/config/behavior.rb +255 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/config/convenience.rb +28 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/config/default.rb +159 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/config/memoization.rb +48 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/config.rb +35 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/core_extensions.rb +142 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/editor.rb +128 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/exceptions.rb +76 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/forwardable.rb +23 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/base_helpers.rb +200 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/command_helpers.rb +157 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/documentation_helpers.rb +76 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/options_helpers.rb +27 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/platform.rb +58 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/table.rb +114 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/text.rb +115 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers.rb +6 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/history.rb +161 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/hooks.rb +171 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/indent.rb +408 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/input_completer.rb +265 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/input_lock.rb +130 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/inspector.rb +27 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/last_exception.rb +61 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/method/disowned.rb +55 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/method/patcher.rb +122 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/method/weird_method_locator.rb +198 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/method.rb +552 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/object_path.rb +83 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/output.rb +50 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/pager.rb +250 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/platform.rb +91 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/plugins.rb +122 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/prompt.rb +145 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/pry_class.rb +425 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/pry_instance.rb +699 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/repl.rb +261 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/repl_file_loader.rb +73 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/ring.rb +84 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/rubygem.rb +84 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/slop/LICENSE +20 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/slop/commands.rb +195 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/slop/option.rb +206 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/slop.rb +661 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/terminal.rb +91 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/testable/evalable.rb +15 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/testable/mockable.rb +14 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/testable/pry_tester.rb +73 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/testable/utility.rb +26 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/testable/variables.rb +46 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/testable.rb +70 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/version.rb +3 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/wrapped_module/candidate.rb +131 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/wrapped_module.rb +378 -0
- data/vendor/bundle/gems/pry-0.12.2/lib/pry.rb +132 -0
- data/vendor/bundle/gems/rb-readline-0.5.5/CHANGES +94 -0
- data/vendor/bundle/gems/rb-readline-0.5.5/LICENSE +25 -0
- data/vendor/bundle/gems/rb-readline-0.5.5/README.md +81 -0
- data/vendor/bundle/gems/rb-readline-0.5.5/Rakefile +25 -0
- data/vendor/bundle/gems/rb-readline-0.5.5/bench/_rl_adjust_point.rb +26 -0
- data/vendor/bundle/gems/rb-readline-0.5.5/examples/example_readline.rb +8 -0
- data/vendor/bundle/gems/rb-readline-0.5.5/examples/example_readline_with_completion.rb +18 -0
- data/vendor/bundle/gems/rb-readline-0.5.5/examples/tinyirb.rb +11 -0
- data/vendor/bundle/gems/rb-readline-0.5.5/lib/rb-readline.rb +18 -0
- data/vendor/bundle/gems/rb-readline-0.5.5/lib/rbreadline/version.rb +3 -0
- data/vendor/bundle/gems/rb-readline-0.5.5/lib/rbreadline.rb +8920 -0
- data/vendor/bundle/gems/rb-readline-0.5.5/lib/readline.rb +539 -0
- data/vendor/bundle/gems/rb-readline-0.5.5/rb-readline.gemspec +51 -0
- data/vendor/bundle/gems/rb-readline-0.5.5/setup.rb +1585 -0
- data/vendor/bundle/gems/rb-readline-0.5.5/test/support/filesystem_completion_helper.rb +53 -0
- data/vendor/bundle/gems/rb-readline-0.5.5/test/test_completion.rb +100 -0
- data/vendor/bundle/gems/rb-readline-0.5.5/test/test_filename_completion_proc.rb +88 -0
- data/vendor/bundle/gems/rb-readline-0.5.5/test/test_history.rb +29 -0
- data/vendor/bundle/gems/rb-readline-0.5.5/test/test_rbreadline.rb +23 -0
- data/vendor/bundle/gems/rb-readline-0.5.5/test/test_readline.rb +221 -0
- data/vendor/bundle/specifications/coderay-1.1.2.gemspec +26 -0
- data/vendor/bundle/specifications/colorize-0.8.1.gemspec +38 -0
- data/vendor/bundle/specifications/method_source-0.9.2.gemspec +35 -0
- data/vendor/bundle/specifications/pry-0.12.2.gemspec +38 -0
- data/vendor/bundle/specifications/rb-readline-0.5.5.gemspec +39 -0
- 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
|