genkaio 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/.bundle/config +2 -0
- data/.gitignore +2 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +7 -0
- data/Gemfile.lock +34 -0
- data/LICENSE.txt +21 -0
- data/README.md +78 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/genkaio +66 -0
- data/bin/setup +8 -0
- data/demo.gif +0 -0
- data/genkaio.gemspec +28 -0
- data/lib/.genkaio.rb.swp +0 -0
- data/lib/dic/dicdata_2019_1108 +212408 -0
- data/lib/genkaio/version.rb +3 -0
- data/lib/genkaio.rb +73 -0
- data/pkg/genkaio-0.0.1.gem +0 -0
- data/vendor/bundle/ruby/2.5.0/bin/genkaio +27 -0
- data/vendor/bundle/ruby/2.5.0/bin/htmldiff +29 -0
- data/vendor/bundle/ruby/2.5.0/bin/ldiff +29 -0
- data/vendor/bundle/ruby/2.5.0/bin/rake +27 -0
- data/vendor/bundle/ruby/2.5.0/bin/rspec +27 -0
- data/vendor/bundle/ruby/2.5.0/cache/diff-lcs-1.3.gem +0 -0
- data/vendor/bundle/ruby/2.5.0/cache/rake-12.3.3.gem +0 -0
- data/vendor/bundle/ruby/2.5.0/cache/rspec-3.9.0.gem +0 -0
- data/vendor/bundle/ruby/2.5.0/cache/rspec-core-3.9.0.gem +0 -0
- data/vendor/bundle/ruby/2.5.0/cache/rspec-expectations-3.9.0.gem +0 -0
- data/vendor/bundle/ruby/2.5.0/cache/rspec-mocks-3.9.0.gem +0 -0
- data/vendor/bundle/ruby/2.5.0/cache/rspec-support-3.9.0.gem +0 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/.rspec +1 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/Code-of-Conduct.md +74 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/Contributing.md +83 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/History.md +220 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/License.md +39 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/Manifest.txt +37 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/README.rdoc +84 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/Rakefile +57 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/autotest/discover.rb +1 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/bin/htmldiff +32 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/bin/ldiff +6 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/docs/COPYING.txt +339 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/docs/artistic.txt +127 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/lib/diff/lcs/array.rb +7 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/lib/diff/lcs/block.rb +37 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/lib/diff/lcs/callbacks.rb +322 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/lib/diff/lcs/change.rb +181 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/lib/diff/lcs/htmldiff.rb +149 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/lib/diff/lcs/hunk.rb +276 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/lib/diff/lcs/internals.rb +307 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/lib/diff/lcs/ldiff.rb +167 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/lib/diff/lcs/string.rb +5 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/lib/diff/lcs.rb +725 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/lib/diff-lcs.rb +3 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/spec/change_spec.rb +65 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/spec/diff_spec.rb +47 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/spec/fixtures/ds1.csv +50 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/spec/fixtures/ds2.csv +51 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/spec/hunk_spec.rb +72 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/spec/issues_spec.rb +49 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/spec/lcs_spec.rb +56 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/spec/ldiff_spec.rb +47 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/spec/patch_spec.rb +422 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/spec/sdiff_spec.rb +214 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/spec/spec_helper.rb +321 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/spec/traverse_balanced_spec.rb +310 -0
- data/vendor/bundle/ruby/2.5.0/gems/diff-lcs-1.3/spec/traverse_sequences_spec.rb +139 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/CONTRIBUTING.rdoc +43 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/Gemfile +3 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/History.rdoc +2344 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/MIT-LICENSE +21 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/README.rdoc +156 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/Rakefile +41 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/azure-pipelines.yml +11 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/bin/bundle +105 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/bin/console +7 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/bin/rake +29 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/bin/rdoc +29 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/bin/rubocop +29 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/bin/setup +6 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/doc/command_line_usage.rdoc +158 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/doc/example/Rakefile1 +38 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/doc/example/Rakefile2 +35 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/doc/example/a.c +6 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/doc/example/b.c +6 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/doc/example/main.c +11 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/doc/glossary.rdoc +42 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/doc/jamis.rb +592 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/doc/proto_rake.rdoc +127 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/doc/rake.1 +156 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/doc/rakefile.rdoc +622 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/doc/rational.rdoc +151 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/exe/rake +27 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/application.rb +824 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/backtrace.rb +24 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/clean.rb +78 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/cloneable.rb +17 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/cpu_counter.rb +107 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/default_loader.rb +15 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/dsl_definition.rb +195 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/early_time.rb +22 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/ext/core.rb +26 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/ext/string.rb +176 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/file_creation_task.rb +25 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/file_list.rb +435 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/file_task.rb +54 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/file_utils.rb +137 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/file_utils_ext.rb +145 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/invocation_chain.rb +57 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/invocation_exception_mixin.rb +17 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/late_time.rb +18 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/linked_list.rb +112 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/loaders/makefile.rb +54 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/multi_task.rb +14 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/name_space.rb +38 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/packagetask.rb +207 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/phony.rb +16 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/private_reader.rb +21 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/promise.rb +100 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/pseudo_status.rb +30 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/rake_module.rb +67 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/rake_test_loader.rb +27 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/rule_recursion_overflow_error.rb +20 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/scope.rb +43 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/task.rb +413 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/task_argument_error.rb +8 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/task_arguments.rb +109 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/task_manager.rb +324 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/tasklib.rb +12 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/testtask.rb +224 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/thread_history_display.rb +49 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/thread_pool.rb +163 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/trace_output.rb +23 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/version.rb +10 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/win32.rb +51 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake.rb +71 -0
- data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/rake.gemspec +42 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-3.9.0/LICENSE.md +27 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-3.9.0/README.md +43 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-3.9.0/lib/rspec/version.rb +5 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-3.9.0/lib/rspec.rb +3 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/.document +5 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/.yardopts +8 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/Changelog.md +2265 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/LICENSE.md +26 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/README.md +384 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/exe/rspec +4 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/autorun.rb +3 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/backtrace_formatter.rb +65 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/bisect/coordinator.rb +62 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/bisect/example_minimizer.rb +173 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/bisect/fork_runner.rb +134 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/bisect/server.rb +61 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/bisect/shell_command.rb +126 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/bisect/shell_runner.rb +73 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/bisect/utilities.rb +58 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/configuration.rb +2336 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/configuration_options.rb +233 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/did_you_mean.rb +46 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/drb.rb +113 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/dsl.rb +98 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/example.rb +656 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/example_group.rb +889 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/example_status_persister.rb +235 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/filter_manager.rb +231 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/flat_map.rb +20 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/formatters/base_bisect_formatter.rb +45 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/formatters/base_formatter.rb +70 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/formatters/base_text_formatter.rb +75 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/formatters/bisect_drb_formatter.rb +29 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/formatters/bisect_progress_formatter.rb +157 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/formatters/console_codes.rb +68 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/formatters/deprecation_formatter.rb +223 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/formatters/documentation_formatter.rb +102 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/formatters/exception_presenter.rb +508 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/formatters/failure_list_formatter.rb +23 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/formatters/fallback_message_formatter.rb +28 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/formatters/helpers.rb +110 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/formatters/html_formatter.rb +153 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/formatters/html_printer.rb +414 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/formatters/html_snippet_extractor.rb +120 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/formatters/json_formatter.rb +102 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/formatters/profile_formatter.rb +68 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/formatters/progress_formatter.rb +29 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/formatters/protocol.rb +182 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/formatters/snippet_extractor.rb +134 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/formatters/syntax_highlighter.rb +91 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/formatters.rb +272 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/hooks.rb +632 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/invocations.rb +87 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/memoized_helpers.rb +554 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/metadata.rb +498 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/metadata_filter.rb +255 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/minitest_assertions_adapter.rb +31 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/mocking_adapters/flexmock.rb +31 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/mocking_adapters/mocha.rb +57 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/mocking_adapters/null.rb +14 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/mocking_adapters/rr.rb +31 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/mocking_adapters/rspec.rb +32 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/notifications.rb +521 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/option_parser.rb +317 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/ordering.rb +158 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/output_wrapper.rb +29 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/pending.rb +165 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/profiler.rb +34 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/project_initializer/.rspec +1 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/project_initializer/spec/spec_helper.rb +100 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/project_initializer.rb +48 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/rake_task.rb +188 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/reporter.rb +265 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/ruby_project.rb +53 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/runner.rb +204 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/sandbox.rb +37 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/set.rb +54 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/shared_context.rb +55 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/shared_example_group.rb +269 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/shell_escape.rb +49 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/test_unit_assertions_adapter.rb +30 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/version.rb +9 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/warnings.rb +40 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core/world.rb +275 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-core-3.9.0/lib/rspec/core.rb +186 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/.document +5 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/.yardopts +6 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/Changelog.md +1170 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/LICENSE.md +25 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/README.md +320 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/block_snippet_extractor.rb +253 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/configuration.rb +215 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/expectation_target.rb +127 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/fail_with.rb +39 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/failure_aggregator.rb +194 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/handler.rb +170 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/minitest_integration.rb +58 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/syntax.rb +132 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/version.rb +8 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations.rb +82 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/aliased_matcher.rb +116 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/all.rb +86 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/base_matcher.rb +193 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be.rb +288 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be_between.rb +77 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be_instance_of.rb +26 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be_kind_of.rb +20 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be_within.rb +72 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/change.rb +428 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/compound.rb +276 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/contain_exactly.rb +302 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/cover.rb +24 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/eq.rb +40 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/eql.rb +34 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/equal.rb +81 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/exist.rb +90 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/has.rb +103 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/have_attributes.rb +114 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/include.rb +149 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/match.rb +106 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/operators.rb +128 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/output.rb +200 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/raise_error.rb +230 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/respond_to.rb +174 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/satisfy.rb +60 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/start_or_end_with.rb +94 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/throw_symbol.rb +132 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/yield.rb +432 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in.rb +52 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/composable.rb +171 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/dsl.rb +534 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/english_phrasing.rb +58 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +82 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/fail_matchers.rb +42 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/generated_descriptions.rb +41 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/matcher_delegator.rb +35 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/matcher_protocol.rb +99 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers.rb +1038 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/.document +5 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/.yardopts +6 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/Changelog.md +1125 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/LICENSE.md +25 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/README.md +463 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/any_instance/chain.rb +111 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/any_instance/error_generator.rb +31 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/any_instance/expect_chain_chain.rb +31 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/any_instance/expectation_chain.rb +50 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/any_instance/message_chains.rb +83 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/any_instance/proxy.rb +116 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/any_instance/recorder.rb +289 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/any_instance/stub_chain.rb +51 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/any_instance/stub_chain_chain.rb +23 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/any_instance.rb +11 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/argument_list_matcher.rb +100 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/argument_matchers.rb +322 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/configuration.rb +212 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/error_generator.rb +369 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/example_methods.rb +434 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/instance_method_stasher.rb +146 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/marshal_extension.rb +41 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/matchers/expectation_customization.rb +20 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/matchers/have_received.rb +134 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/matchers/receive.rb +132 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/matchers/receive_message_chain.rb +82 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/matchers/receive_messages.rb +77 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/message_chain.rb +87 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/message_expectation.rb +751 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/method_double.rb +287 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/method_reference.rb +202 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/minitest_integration.rb +68 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/mutate_const.rb +339 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/object_reference.rb +149 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/order_group.rb +81 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/proxy.rb +503 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/space.rb +238 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/standalone.rb +3 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/syntax.rb +325 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/targets.rb +124 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/test_double.rb +171 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/verifying_double.rb +129 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/verifying_message_expectation.rb +54 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/verifying_proxy.rb +220 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks/version.rb +9 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-mocks-3.9.0/lib/rspec/mocks.rb +130 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/Changelog.md +275 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/LICENSE.md +23 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/README.md +40 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/caller_filter.rb +83 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/comparable_version.rb +46 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/differ.rb +215 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/directory_maker.rb +63 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/encoded_string.rb +165 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/fuzzy_matcher.rb +48 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/hunk_generator.rb +47 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/matcher_definition.rb +42 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/method_signature_verifier.rb +438 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/mutex.rb +73 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/object_formatter.rb +275 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/recursive_const_methods.rb +76 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/reentrant_mutex.rb +53 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/ruby_features.rb +176 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/source/location.rb +21 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/source/node.rb +110 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/source/token.rb +87 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/source.rb +75 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/spec/deprecation_helpers.rb +64 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/spec/formatting_support.rb +9 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/spec/in_sub_process.rb +69 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/spec/library_wide_checks.rb +150 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/spec/shell_out.rb +89 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/spec/stderr_splitter.rb +63 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/spec/string_matcher.rb +46 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/spec/with_isolated_directory.rb +13 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/spec/with_isolated_stderr.rb +13 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/spec.rb +81 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/version.rb +7 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/warnings.rb +39 -0
- data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support.rb +149 -0
- data/vendor/bundle/ruby/2.5.0/specifications/diff-lcs-1.3.gemspec +61 -0
- data/vendor/bundle/ruby/2.5.0/specifications/rake-12.3.3.gemspec +49 -0
- data/vendor/bundle/ruby/2.5.0/specifications/rspec-3.9.0.gemspec +43 -0
- data/vendor/bundle/ruby/2.5.0/specifications/rspec-core-3.9.0.gemspec +63 -0
- data/vendor/bundle/ruby/2.5.0/specifications/rspec-expectations-3.9.0.gemspec +51 -0
- data/vendor/bundle/ruby/2.5.0/specifications/rspec-mocks-3.9.0.gemspec +51 -0
- data/vendor/bundle/ruby/2.5.0/specifications/rspec-support-3.9.0.gemspec +39 -0
- metadata +411 -0
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
RSpec::Support.require_rspec_support 'matcher_definition'
|
|
2
|
+
|
|
3
|
+
module RSpec
|
|
4
|
+
module Support
|
|
5
|
+
# Provide additional output details beyond what `inspect` provides when
|
|
6
|
+
# printing Time, DateTime, or BigDecimal
|
|
7
|
+
# @api private
|
|
8
|
+
class ObjectFormatter # rubocop:disable Metrics/ClassLength
|
|
9
|
+
ELLIPSIS = "..."
|
|
10
|
+
|
|
11
|
+
attr_accessor :max_formatted_output_length
|
|
12
|
+
|
|
13
|
+
# Methods are deferred to a default instance of the class to maintain the interface
|
|
14
|
+
# For example, calling ObjectFormatter.format is still possible
|
|
15
|
+
def self.default_instance
|
|
16
|
+
@default_instance ||= new
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def self.format(object)
|
|
20
|
+
default_instance.format(object)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def self.prepare_for_inspection(object)
|
|
24
|
+
default_instance.prepare_for_inspection(object)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def initialize(max_formatted_output_length=200)
|
|
28
|
+
@max_formatted_output_length = max_formatted_output_length
|
|
29
|
+
@current_structure_stack = []
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def format(object)
|
|
33
|
+
if max_formatted_output_length.nil?
|
|
34
|
+
prepare_for_inspection(object).inspect
|
|
35
|
+
else
|
|
36
|
+
formatted_object = prepare_for_inspection(object).inspect
|
|
37
|
+
if formatted_object.length < max_formatted_output_length
|
|
38
|
+
formatted_object
|
|
39
|
+
else
|
|
40
|
+
beginning = truncate_string formatted_object, 0, max_formatted_output_length / 2
|
|
41
|
+
ending = truncate_string formatted_object, -max_formatted_output_length / 2, -1
|
|
42
|
+
beginning + ELLIPSIS + ending
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Prepares the provided object to be formatted by wrapping it as needed
|
|
48
|
+
# in something that, when `inspect` is called on it, will produce the
|
|
49
|
+
# desired output.
|
|
50
|
+
#
|
|
51
|
+
# This allows us to apply the desired formatting to hash/array data structures
|
|
52
|
+
# at any level of nesting, simply by walking that structure and replacing items
|
|
53
|
+
# with custom items that have `inspect` defined to return the desired output
|
|
54
|
+
# for that item. Then we can just use `Array#inspect` or `Hash#inspect` to
|
|
55
|
+
# format the entire thing.
|
|
56
|
+
def prepare_for_inspection(object)
|
|
57
|
+
case object
|
|
58
|
+
when Array
|
|
59
|
+
prepare_array(object)
|
|
60
|
+
when Hash
|
|
61
|
+
prepare_hash(object)
|
|
62
|
+
else
|
|
63
|
+
inspector_class = INSPECTOR_CLASSES.find { |inspector| inspector.can_inspect?(object) }
|
|
64
|
+
inspector_class.new(object, self)
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def prepare_array(array)
|
|
69
|
+
with_entering_structure(array) do
|
|
70
|
+
array.map { |element| prepare_element(element) }
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def prepare_hash(input_hash)
|
|
75
|
+
with_entering_structure(input_hash) do
|
|
76
|
+
sort_hash_keys(input_hash).inject({}) do |output_hash, key_and_value|
|
|
77
|
+
key, value = key_and_value.map { |element| prepare_element(element) }
|
|
78
|
+
output_hash[key] = value
|
|
79
|
+
output_hash
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def sort_hash_keys(input_hash)
|
|
85
|
+
if input_hash.keys.all? { |k| k.is_a?(String) || k.is_a?(Symbol) }
|
|
86
|
+
Hash[input_hash.sort_by { |k, _v| k.to_s }]
|
|
87
|
+
else
|
|
88
|
+
input_hash
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def prepare_element(element)
|
|
93
|
+
if recursive_structure?(element)
|
|
94
|
+
case element
|
|
95
|
+
when Array then InspectableItem.new('[...]')
|
|
96
|
+
when Hash then InspectableItem.new('{...}')
|
|
97
|
+
else raise # This won't happen
|
|
98
|
+
end
|
|
99
|
+
else
|
|
100
|
+
prepare_for_inspection(element)
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def with_entering_structure(structure)
|
|
105
|
+
@current_structure_stack.push(structure)
|
|
106
|
+
return_value = yield
|
|
107
|
+
@current_structure_stack.pop
|
|
108
|
+
return_value
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def recursive_structure?(object)
|
|
112
|
+
@current_structure_stack.any? { |seen_structure| seen_structure.equal?(object) }
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
InspectableItem = Struct.new(:text) do
|
|
116
|
+
def inspect
|
|
117
|
+
text
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def pretty_print(pp)
|
|
121
|
+
pp.text(text)
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
BaseInspector = Struct.new(:object, :formatter) do
|
|
126
|
+
def self.can_inspect?(_object)
|
|
127
|
+
raise NotImplementedError
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def inspect
|
|
131
|
+
raise NotImplementedError
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def pretty_print(pp)
|
|
135
|
+
pp.text(inspect)
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
class TimeInspector < BaseInspector
|
|
140
|
+
FORMAT = "%Y-%m-%d %H:%M:%S"
|
|
141
|
+
|
|
142
|
+
def self.can_inspect?(object)
|
|
143
|
+
Time === object
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
if Time.method_defined?(:nsec)
|
|
147
|
+
def inspect
|
|
148
|
+
object.strftime("#{FORMAT}.#{"%09d" % object.nsec} %z")
|
|
149
|
+
end
|
|
150
|
+
else # for 1.8.7
|
|
151
|
+
def inspect
|
|
152
|
+
object.strftime("#{FORMAT}.#{"%06d" % object.usec} %z")
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
class DateTimeInspector < BaseInspector
|
|
158
|
+
FORMAT = "%a, %d %b %Y %H:%M:%S.%N %z"
|
|
159
|
+
|
|
160
|
+
def self.can_inspect?(object)
|
|
161
|
+
defined?(DateTime) && DateTime === object
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
# ActiveSupport sometimes overrides inspect. If `ActiveSupport` is
|
|
165
|
+
# defined use a custom format string that includes more time precision.
|
|
166
|
+
def inspect
|
|
167
|
+
if defined?(ActiveSupport)
|
|
168
|
+
object.strftime(FORMAT)
|
|
169
|
+
else
|
|
170
|
+
object.inspect
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
class BigDecimalInspector < BaseInspector
|
|
176
|
+
def self.can_inspect?(object)
|
|
177
|
+
defined?(BigDecimal) && BigDecimal === object
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
def inspect
|
|
181
|
+
"#{object.to_s('F')} (#{object.inspect})"
|
|
182
|
+
end
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
class DescribableMatcherInspector < BaseInspector
|
|
186
|
+
def self.can_inspect?(object)
|
|
187
|
+
Support.is_a_matcher?(object) && object.respond_to?(:description)
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
def inspect
|
|
191
|
+
object.description
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
class UninspectableObjectInspector < BaseInspector
|
|
196
|
+
OBJECT_ID_FORMAT = '%#016x'
|
|
197
|
+
|
|
198
|
+
def self.can_inspect?(object)
|
|
199
|
+
object.inspect
|
|
200
|
+
false
|
|
201
|
+
rescue NoMethodError
|
|
202
|
+
true
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
def inspect
|
|
206
|
+
"#<#{klass}:#{native_object_id}>"
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
def klass
|
|
210
|
+
Support.class_of(object)
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
# http://stackoverflow.com/a/2818916
|
|
214
|
+
def native_object_id
|
|
215
|
+
OBJECT_ID_FORMAT % (object.__id__ << 1)
|
|
216
|
+
rescue NoMethodError
|
|
217
|
+
# In Ruby 1.9.2, BasicObject responds to none of #__id__, #object_id, #id...
|
|
218
|
+
'-'
|
|
219
|
+
end
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
class DelegatorInspector < BaseInspector
|
|
223
|
+
def self.can_inspect?(object)
|
|
224
|
+
defined?(Delegator) && Delegator === object
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
def inspect
|
|
228
|
+
"#<#{object.class}(#{formatter.format(object.send(:__getobj__))})>"
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
class InspectableObjectInspector < BaseInspector
|
|
233
|
+
def self.can_inspect?(object)
|
|
234
|
+
object.inspect
|
|
235
|
+
true
|
|
236
|
+
rescue NoMethodError
|
|
237
|
+
false
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
def inspect
|
|
241
|
+
object.inspect
|
|
242
|
+
end
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
INSPECTOR_CLASSES = [
|
|
246
|
+
TimeInspector,
|
|
247
|
+
DateTimeInspector,
|
|
248
|
+
BigDecimalInspector,
|
|
249
|
+
UninspectableObjectInspector,
|
|
250
|
+
DescribableMatcherInspector,
|
|
251
|
+
DelegatorInspector,
|
|
252
|
+
InspectableObjectInspector
|
|
253
|
+
].tap do |classes|
|
|
254
|
+
# 2.4 has improved BigDecimal formatting so we do not need
|
|
255
|
+
# to provide our own.
|
|
256
|
+
# https://github.com/ruby/bigdecimal/pull/42
|
|
257
|
+
classes.delete(BigDecimalInspector) if RUBY_VERSION >= '2.4'
|
|
258
|
+
end
|
|
259
|
+
|
|
260
|
+
private
|
|
261
|
+
|
|
262
|
+
# Returns the substring defined by the start_index and end_index
|
|
263
|
+
# If the string ends with a partial ANSI code code then that
|
|
264
|
+
# will be removed as printing partial ANSI
|
|
265
|
+
# codes to the terminal can lead to corruption
|
|
266
|
+
def truncate_string(str, start_index, end_index)
|
|
267
|
+
cut_str = str[start_index..end_index]
|
|
268
|
+
|
|
269
|
+
# ANSI color codes are like: \e[33m so anything with \e[ and a
|
|
270
|
+
# number without a 'm' is an incomplete color code
|
|
271
|
+
cut_str.sub(/\e\[\d+$/, '')
|
|
272
|
+
end
|
|
273
|
+
end
|
|
274
|
+
end
|
|
275
|
+
end
|
data/vendor/bundle/ruby/2.5.0/gems/rspec-support-3.9.0/lib/rspec/support/recursive_const_methods.rb
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
module RSpec
|
|
2
|
+
module Support
|
|
3
|
+
# Provides recursive constant lookup methods useful for
|
|
4
|
+
# constant stubbing.
|
|
5
|
+
module RecursiveConstMethods
|
|
6
|
+
# We only want to consider constants that are defined directly on a
|
|
7
|
+
# particular module, and not include top-level/inherited constants.
|
|
8
|
+
# Unfortunately, the constant API changed between 1.8 and 1.9, so
|
|
9
|
+
# we need to conditionally define methods to ignore the top-level/inherited
|
|
10
|
+
# constants.
|
|
11
|
+
#
|
|
12
|
+
# Given:
|
|
13
|
+
# class A; B = 1; end
|
|
14
|
+
# class C < A; end
|
|
15
|
+
#
|
|
16
|
+
# On 1.8:
|
|
17
|
+
# - C.const_get("Hash") # => ::Hash
|
|
18
|
+
# - C.const_defined?("Hash") # => false
|
|
19
|
+
# - C.constants # => ["B"]
|
|
20
|
+
# - None of these methods accept the extra `inherit` argument
|
|
21
|
+
# On 1.9:
|
|
22
|
+
# - C.const_get("Hash") # => ::Hash
|
|
23
|
+
# - C.const_defined?("Hash") # => true
|
|
24
|
+
# - C.const_get("Hash", false) # => raises NameError
|
|
25
|
+
# - C.const_defined?("Hash", false) # => false
|
|
26
|
+
# - C.constants # => [:B]
|
|
27
|
+
# - C.constants(false) #=> []
|
|
28
|
+
if Module.method(:const_defined?).arity == 1
|
|
29
|
+
def const_defined_on?(mod, const_name)
|
|
30
|
+
mod.const_defined?(const_name)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def get_const_defined_on(mod, const_name)
|
|
34
|
+
return mod.const_get(const_name) if const_defined_on?(mod, const_name)
|
|
35
|
+
|
|
36
|
+
raise NameError, "uninitialized constant #{mod.name}::#{const_name}"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def constants_defined_on(mod)
|
|
40
|
+
mod.constants.select { |c| const_defined_on?(mod, c) }
|
|
41
|
+
end
|
|
42
|
+
else
|
|
43
|
+
def const_defined_on?(mod, const_name)
|
|
44
|
+
mod.const_defined?(const_name, false)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def get_const_defined_on(mod, const_name)
|
|
48
|
+
mod.const_get(const_name, false)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def constants_defined_on(mod)
|
|
52
|
+
mod.constants(false)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def recursive_const_get(const_name)
|
|
57
|
+
normalize_const_name(const_name).split('::').inject(Object) do |mod, name|
|
|
58
|
+
get_const_defined_on(mod, name)
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def recursive_const_defined?(const_name)
|
|
63
|
+
parts = normalize_const_name(const_name).split('::')
|
|
64
|
+
parts.inject([Object, '']) do |(mod, full_name), name|
|
|
65
|
+
yield(full_name, name) if block_given? && !(Module === mod)
|
|
66
|
+
return false unless const_defined_on?(mod, name)
|
|
67
|
+
[get_const_defined_on(mod, name), [mod.name, name].join('::')]
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def normalize_const_name(const_name)
|
|
72
|
+
const_name.sub(/\A::/, '')
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
module RSpec
|
|
2
|
+
module Support
|
|
3
|
+
# Allows a thread to lock out other threads from a critical section of code,
|
|
4
|
+
# while allowing the thread with the lock to reenter that section.
|
|
5
|
+
#
|
|
6
|
+
# Based on Monitor as of 2.2 -
|
|
7
|
+
# https://github.com/ruby/ruby/blob/eb7ddaa3a47bf48045d26c72eb0f263a53524ebc/lib/monitor.rb#L9
|
|
8
|
+
#
|
|
9
|
+
# Depends on Mutex, but Mutex is only available as part of core since 1.9.1:
|
|
10
|
+
# exists - http://ruby-doc.org/core-1.9.1/Mutex.html
|
|
11
|
+
# dne - http://ruby-doc.org/core-1.9.0/Mutex.html
|
|
12
|
+
#
|
|
13
|
+
# @private
|
|
14
|
+
class ReentrantMutex
|
|
15
|
+
def initialize
|
|
16
|
+
@owner = nil
|
|
17
|
+
@count = 0
|
|
18
|
+
@mutex = Mutex.new
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def synchronize
|
|
22
|
+
enter
|
|
23
|
+
yield
|
|
24
|
+
ensure
|
|
25
|
+
exit
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
private
|
|
29
|
+
|
|
30
|
+
def enter
|
|
31
|
+
@mutex.lock if @owner != Thread.current
|
|
32
|
+
@owner = Thread.current
|
|
33
|
+
@count += 1
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def exit
|
|
37
|
+
@count -= 1
|
|
38
|
+
return unless @count == 0
|
|
39
|
+
@owner = nil
|
|
40
|
+
@mutex.unlock
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
if defined? ::Mutex
|
|
45
|
+
# On 1.9 and up, this is in core, so we just use the real one
|
|
46
|
+
Mutex = ::Mutex
|
|
47
|
+
else # For 1.8.7
|
|
48
|
+
# :nocov:
|
|
49
|
+
RSpec::Support.require_rspec_support "mutex"
|
|
50
|
+
# :nocov:
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
require 'rbconfig'
|
|
2
|
+
RSpec::Support.require_rspec_support "comparable_version"
|
|
3
|
+
|
|
4
|
+
module RSpec
|
|
5
|
+
module Support
|
|
6
|
+
# @api private
|
|
7
|
+
#
|
|
8
|
+
# Provides query methods for different OS or OS features.
|
|
9
|
+
module OS
|
|
10
|
+
module_function
|
|
11
|
+
|
|
12
|
+
def windows?
|
|
13
|
+
!!(RbConfig::CONFIG['host_os'] =~ /cygwin|mswin|mingw|bccwin|wince|emx/)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def windows_file_path?
|
|
17
|
+
::File::ALT_SEPARATOR == '\\'
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# @api private
|
|
22
|
+
#
|
|
23
|
+
# Provides query methods for different rubies
|
|
24
|
+
module Ruby
|
|
25
|
+
module_function
|
|
26
|
+
|
|
27
|
+
def jruby?
|
|
28
|
+
RUBY_PLATFORM == 'java'
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def jruby_version
|
|
32
|
+
@jruby_version ||= ComparableVersion.new(JRUBY_VERSION)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def jruby_9000?
|
|
36
|
+
jruby? && JRUBY_VERSION >= '9.0.0.0'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def rbx?
|
|
40
|
+
defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx'
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def non_mri?
|
|
44
|
+
!mri?
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def mri?
|
|
48
|
+
!defined?(RUBY_ENGINE) || RUBY_ENGINE == 'ruby'
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# @api private
|
|
53
|
+
#
|
|
54
|
+
# Provides query methods for ruby features that differ among
|
|
55
|
+
# implementations.
|
|
56
|
+
module RubyFeatures
|
|
57
|
+
module_function
|
|
58
|
+
|
|
59
|
+
if Ruby.jruby?
|
|
60
|
+
# On JRuby 1.7 `--1.8` mode, `Process.respond_to?(:fork)` returns true,
|
|
61
|
+
# but when you try to fork, it raises an error:
|
|
62
|
+
# NotImplementedError: fork is not available on this platform
|
|
63
|
+
#
|
|
64
|
+
# When we drop support for JRuby 1.7 and/or Ruby 1.8, we can drop
|
|
65
|
+
# this special case.
|
|
66
|
+
def fork_supported?
|
|
67
|
+
false
|
|
68
|
+
end
|
|
69
|
+
else
|
|
70
|
+
def fork_supported?
|
|
71
|
+
Process.respond_to?(:fork)
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def optional_and_splat_args_supported?
|
|
76
|
+
Method.method_defined?(:parameters)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def caller_locations_supported?
|
|
80
|
+
respond_to?(:caller_locations, true)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
if Exception.method_defined?(:cause)
|
|
84
|
+
def supports_exception_cause?
|
|
85
|
+
true
|
|
86
|
+
end
|
|
87
|
+
else
|
|
88
|
+
def supports_exception_cause?
|
|
89
|
+
false
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
ripper_requirements = [ComparableVersion.new(RUBY_VERSION) >= '1.9.2']
|
|
94
|
+
|
|
95
|
+
ripper_requirements.push(false) if Ruby.rbx?
|
|
96
|
+
|
|
97
|
+
if Ruby.jruby?
|
|
98
|
+
ripper_requirements.push(Ruby.jruby_version >= '1.7.5')
|
|
99
|
+
# Ripper on JRuby 9.0.0.0.rc1 - 9.1.8.0 reports wrong line number
|
|
100
|
+
# or cannot parse source including `:if`.
|
|
101
|
+
ripper_requirements.push(!Ruby.jruby_version.between?('9.0.0.0.rc1', '9.1.8.0'))
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
if ripper_requirements.all?
|
|
105
|
+
def ripper_supported?
|
|
106
|
+
true
|
|
107
|
+
end
|
|
108
|
+
else
|
|
109
|
+
def ripper_supported?
|
|
110
|
+
false
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
if Ruby.mri?
|
|
115
|
+
def kw_args_supported?
|
|
116
|
+
RUBY_VERSION >= '2.0.0'
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def required_kw_args_supported?
|
|
120
|
+
RUBY_VERSION >= '2.1.0'
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def supports_rebinding_module_methods?
|
|
124
|
+
RUBY_VERSION.to_i >= 2
|
|
125
|
+
end
|
|
126
|
+
else
|
|
127
|
+
# RBX / JRuby et al support is unknown for keyword arguments
|
|
128
|
+
begin
|
|
129
|
+
eval("o = Object.new; def o.m(a: 1); end;"\
|
|
130
|
+
" raise SyntaxError unless o.method(:m).parameters.include?([:key, :a])")
|
|
131
|
+
|
|
132
|
+
def kw_args_supported?
|
|
133
|
+
true
|
|
134
|
+
end
|
|
135
|
+
rescue SyntaxError
|
|
136
|
+
def kw_args_supported?
|
|
137
|
+
false
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
begin
|
|
142
|
+
eval("o = Object.new; def o.m(a: ); end;"\
|
|
143
|
+
"raise SyntaxError unless o.method(:m).parameters.include?([:keyreq, :a])")
|
|
144
|
+
|
|
145
|
+
def required_kw_args_supported?
|
|
146
|
+
true
|
|
147
|
+
end
|
|
148
|
+
rescue SyntaxError
|
|
149
|
+
def required_kw_args_supported?
|
|
150
|
+
false
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
begin
|
|
155
|
+
Module.new { def foo; end }.instance_method(:foo).bind(Object.new)
|
|
156
|
+
|
|
157
|
+
def supports_rebinding_module_methods?
|
|
158
|
+
true
|
|
159
|
+
end
|
|
160
|
+
rescue TypeError
|
|
161
|
+
def supports_rebinding_module_methods?
|
|
162
|
+
false
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
def module_refinement_supported?
|
|
168
|
+
Module.method_defined?(:refine) || Module.private_method_defined?(:refine)
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
def module_prepends_supported?
|
|
172
|
+
Module.method_defined?(:prepend) || Module.private_method_defined?(:prepend)
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module RSpec
|
|
2
|
+
module Support
|
|
3
|
+
class Source
|
|
4
|
+
# @private
|
|
5
|
+
# Represents a source location of node or token.
|
|
6
|
+
Location = Struct.new(:line, :column) do
|
|
7
|
+
include Comparable
|
|
8
|
+
|
|
9
|
+
def self.location?(array)
|
|
10
|
+
array.is_a?(Array) && array.size == 2 && array.all? { |e| e.is_a?(Integer) }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def <=>(other)
|
|
14
|
+
line_comparison = (line <=> other.line)
|
|
15
|
+
return line_comparison unless line_comparison == 0
|
|
16
|
+
column <=> other.column
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
RSpec::Support.require_rspec_support 'source/location'
|
|
2
|
+
|
|
3
|
+
module RSpec
|
|
4
|
+
module Support
|
|
5
|
+
class Source
|
|
6
|
+
# @private
|
|
7
|
+
# A wrapper for Ripper AST node which is generated with `Ripper.sexp`.
|
|
8
|
+
class Node
|
|
9
|
+
include Enumerable
|
|
10
|
+
|
|
11
|
+
attr_reader :sexp, :parent
|
|
12
|
+
|
|
13
|
+
def self.sexp?(array)
|
|
14
|
+
array.is_a?(Array) && array.first.is_a?(Symbol)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def initialize(ripper_sexp, parent=nil)
|
|
18
|
+
@sexp = ripper_sexp.freeze
|
|
19
|
+
@parent = parent
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def type
|
|
23
|
+
sexp[0]
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def args
|
|
27
|
+
@args ||= raw_args.map do |raw_arg|
|
|
28
|
+
if Node.sexp?(raw_arg)
|
|
29
|
+
Node.new(raw_arg, self)
|
|
30
|
+
elsif Location.location?(raw_arg)
|
|
31
|
+
Location.new(*raw_arg)
|
|
32
|
+
elsif raw_arg.is_a?(Array)
|
|
33
|
+
ExpressionSequenceNode.new(raw_arg, self)
|
|
34
|
+
else
|
|
35
|
+
raw_arg
|
|
36
|
+
end
|
|
37
|
+
end.freeze
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def children
|
|
41
|
+
@children ||= args.select { |arg| arg.is_a?(Node) }.freeze
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def location
|
|
45
|
+
@location ||= args.find { |arg| arg.is_a?(Location) }
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# We use a loop here (instead of recursion) to prevent SystemStackError
|
|
49
|
+
def each
|
|
50
|
+
return to_enum(__method__) unless block_given?
|
|
51
|
+
|
|
52
|
+
node_queue = []
|
|
53
|
+
node_queue << self
|
|
54
|
+
|
|
55
|
+
while (current_node = node_queue.shift)
|
|
56
|
+
yield current_node
|
|
57
|
+
node_queue.concat(current_node.children)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def each_ancestor
|
|
62
|
+
return to_enum(__method__) unless block_given?
|
|
63
|
+
|
|
64
|
+
current_node = self
|
|
65
|
+
|
|
66
|
+
while (current_node = current_node.parent)
|
|
67
|
+
yield current_node
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def inspect
|
|
72
|
+
"#<#{self.class} #{type}>"
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
private
|
|
76
|
+
|
|
77
|
+
def raw_args
|
|
78
|
+
sexp[1..-1] || []
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# @private
|
|
83
|
+
# Basically `Ripper.sexp` generates arrays whose first element is a symbol (type of sexp),
|
|
84
|
+
# but it exceptionally generates typeless arrays for expression sequence:
|
|
85
|
+
#
|
|
86
|
+
# Ripper.sexp('foo; bar')
|
|
87
|
+
# => [
|
|
88
|
+
# :program,
|
|
89
|
+
# [ # Typeless array
|
|
90
|
+
# [:vcall, [:@ident, "foo", [1, 0]]],
|
|
91
|
+
# [:vcall, [:@ident, "bar", [1, 5]]]
|
|
92
|
+
# ]
|
|
93
|
+
# ]
|
|
94
|
+
#
|
|
95
|
+
# We wrap typeless arrays in this pseudo type node
|
|
96
|
+
# so that it can be handled in the same way as other type node.
|
|
97
|
+
class ExpressionSequenceNode < Node
|
|
98
|
+
def type
|
|
99
|
+
:_expression_sequence
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
private
|
|
103
|
+
|
|
104
|
+
def raw_args
|
|
105
|
+
sexp
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|