swift-pyrite 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.rspec +2 -0
- data/.ruby-version +1 -0
- data/.travis.yml +4 -0
- data/CODE_OF_CONDUCT.md +13 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +41 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/exe/pyrite +4 -0
- data/lib/swift/pyrite/cli.rb +18 -0
- data/lib/swift/pyrite/parser.rb +43 -0
- data/lib/swift/pyrite/transformer.rb +129 -0
- data/lib/swift/pyrite/version.rb +5 -0
- data/lib/swift/pyrite.rb +21 -0
- data/swift-pyrite.gemspec +30 -0
- data/vendor/bundle/ruby/2.0.0/bin/htmldiff +25 -0
- data/vendor/bundle/ruby/2.0.0/bin/ldiff +25 -0
- data/vendor/bundle/ruby/2.0.0/bin/rake +23 -0
- data/vendor/bundle/ruby/2.0.0/bin/rspec +23 -0
- data/vendor/bundle/ruby/2.0.0/bin/tt +23 -0
- data/vendor/bundle/ruby/2.0.0/cache/blankslate-3.1.3.gem +0 -0
- data/vendor/bundle/ruby/2.0.0/cache/diff-lcs-1.2.5.gem +0 -0
- data/vendor/bundle/ruby/2.0.0/cache/parslet-1.7.1.gem +0 -0
- data/vendor/bundle/ruby/2.0.0/cache/polyglot-0.3.5.gem +0 -0
- data/vendor/bundle/ruby/2.0.0/cache/rake-10.4.2.gem +0 -0
- data/vendor/bundle/ruby/2.0.0/cache/rspec-3.3.0.gem +0 -0
- data/vendor/bundle/ruby/2.0.0/cache/rspec-core-3.3.2.gem +0 -0
- data/vendor/bundle/ruby/2.0.0/cache/rspec-expectations-3.3.1.gem +0 -0
- data/vendor/bundle/ruby/2.0.0/cache/rspec-mocks-3.3.2.gem +0 -0
- data/vendor/bundle/ruby/2.0.0/cache/rspec-support-3.3.0.gem +0 -0
- data/vendor/bundle/ruby/2.0.0/cache/treetop-1.6.3.gem +0 -0
- data/vendor/bundle/ruby/2.0.0/gems/blankslate-3.1.3/Gemfile +6 -0
- data/vendor/bundle/ruby/2.0.0/gems/blankslate-3.1.3/Gemfile.lock +22 -0
- data/vendor/bundle/ruby/2.0.0/gems/blankslate-3.1.3/MIT-LICENSE +20 -0
- data/vendor/bundle/ruby/2.0.0/gems/blankslate-3.1.3/README +31 -0
- data/vendor/bundle/ruby/2.0.0/gems/blankslate-3.1.3/Rakefile +13 -0
- data/vendor/bundle/ruby/2.0.0/gems/blankslate-3.1.3/VERSION +1 -0
- data/vendor/bundle/ruby/2.0.0/gems/blankslate-3.1.3/blankslate.gemspec +22 -0
- data/vendor/bundle/ruby/2.0.0/gems/blankslate-3.1.3/lib/blankslate.rb +137 -0
- data/vendor/bundle/ruby/2.0.0/gems/blankslate-3.1.3/spec/blankslate_spec.rb +54 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/.autotest +3 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/.gemtest +0 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/.hoerc +2 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/.rspec +2 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/.travis.yml +22 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/Contributing.rdoc +64 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/Gemfile +20 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/History.rdoc +152 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/License.rdoc +39 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/Manifest.txt +38 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/README.rdoc +85 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/Rakefile +41 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/autotest/discover.rb +1 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/bin/htmldiff +32 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/bin/ldiff +6 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/docs/COPYING.txt +339 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/docs/artistic.txt +127 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/lib/diff/lcs/array.rb +7 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/lib/diff/lcs/block.rb +37 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/lib/diff/lcs/callbacks.rb +322 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/lib/diff/lcs/change.rb +177 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/lib/diff/lcs/htmldiff.rb +149 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/lib/diff/lcs/hunk.rb +276 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/lib/diff/lcs/internals.rb +301 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/lib/diff/lcs/ldiff.rb +195 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/lib/diff/lcs/string.rb +5 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/lib/diff/lcs.rb +805 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/lib/diff-lcs.rb +3 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/spec/change_spec.rb +65 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/spec/diff_spec.rb +47 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/spec/hunk_spec.rb +72 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/spec/issues_spec.rb +24 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/spec/lcs_spec.rb +54 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/spec/patch_spec.rb +414 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/spec/sdiff_spec.rb +214 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/spec/spec_helper.rb +290 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/spec/traverse_balanced_spec.rb +310 -0
- data/vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/spec/traverse_sequences_spec.rb +139 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/HISTORY.txt +241 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/LICENSE +22 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/README +73 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/Rakefile +30 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/big.erb +73 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/boolean_algebra.rb +70 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/calc.rb +153 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/capture.rb +49 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/comments.rb +35 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/deepest_errors.rb +131 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/documentation.rb +18 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/email_parser.rb +54 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/empty.rb +13 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/erb.rb +47 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/ignore.rb +33 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/ip_address.rb +125 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/json.rb +128 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/local.rb +34 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/mathn.rb +44 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/minilisp.rb +94 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/modularity.rb +47 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/nested_errors.rb +132 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/optimized_erb.rb +42 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/boolean_algebra.out +4 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/calc.out +1 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/capture.out +3 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/comments.out +8 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/deepest_errors.out +54 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/documentation.err +4 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/documentation.out +1 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/email_parser.out +2 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/empty.err +1 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/erb.out +7 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/ignore.out +1 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/ignore_whitespace.out +1 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/ip_address.out +9 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/json.out +5 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/local.out +3 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/mathn.out +4 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/minilisp.out +5 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/modularity.out +0 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/nested_errors.out +54 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/optimized_erb.out +1 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/parens.out +8 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/prec_calc.out +5 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/readme.out +1 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/scopes.out +1 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/seasons.out +28 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/sentence.out +1 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/simple_xml.out +2 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/output/string_parser.out +3 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/parens.rb +42 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/prec_calc.rb +71 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/readme.rb +30 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/scopes.rb +15 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/seasons.rb +46 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/sentence.rb +36 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/simple.lit +3 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/simple_xml.rb +54 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/string_parser.rb +77 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/example/test.lit +4 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/accelerator/application.rb +62 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/accelerator/engine.rb +112 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/accelerator.rb +161 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/atoms/alternative.rb +50 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/atoms/base.rb +157 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/atoms/can_flatten.rb +137 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/atoms/capture.rb +38 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/atoms/context.rb +103 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/atoms/dsl.rb +109 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/atoms/dynamic.rb +32 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/atoms/entity.rb +44 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/atoms/infix.rb +121 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/atoms/lookahead.rb +50 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/atoms/named.rb +32 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/atoms/re.rb +38 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/atoms/repetition.rb +83 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/atoms/scope.rb +26 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/atoms/sequence.rb +45 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/atoms/str.rb +39 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/atoms/visitor.rb +89 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/atoms.rb +35 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/cause.rb +101 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/context.rb +35 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/convenience.rb +33 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/error_reporter/contextual.rb +120 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/error_reporter/deepest.rb +100 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/error_reporter/tree.rb +63 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/error_reporter.rb +8 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/export.rb +162 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/expression/treetop.rb +92 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/expression.rb +51 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/graphviz.rb +97 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/parser.rb +67 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/pattern/binding.rb +49 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/pattern.rb +114 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/position.rb +21 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/rig/rspec.rb +59 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/scope.rb +42 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/slice.rb +110 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/source/line_cache.rb +98 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/source.rb +96 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet/transform.rb +257 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/lib/parslet.rb +302 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/parslet.gemspec +18 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/acceptance/examples_spec.rb +37 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/acceptance/infix_parser_spec.rb +112 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/acceptance/regression_spec.rb +314 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/acceptance/repetition_and_maybe_spec.rb +42 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/acceptance/unconsumed_input_spec.rb +21 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/atom_results_spec.rb +39 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/atoms/alternative_spec.rb +26 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/atoms/base_spec.rb +126 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/atoms/capture_spec.rb +21 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/atoms/combinations_spec.rb +5 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/atoms/dsl_spec.rb +25 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/atoms/entity_spec.rb +77 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/atoms/infix_spec.rb +5 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/atoms/lookahead_spec.rb +22 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/atoms/named_spec.rb +4 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/atoms/re_spec.rb +14 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/atoms/repetition_spec.rb +24 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/atoms/scope_spec.rb +26 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/atoms/sequence_spec.rb +28 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/atoms/str_spec.rb +15 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/atoms/visitor_spec.rb +80 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/atoms_spec.rb +429 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/convenience_spec.rb +48 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/error_reporter/contextual_spec.rb +115 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/error_reporter/deepest_spec.rb +73 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/error_reporter/tree_spec.rb +7 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/export_spec.rb +67 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/expression/treetop_spec.rb +74 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/minilisp.citrus +29 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/minilisp.tt +29 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/parser_spec.rb +31 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/parslet_spec.rb +38 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/pattern_spec.rb +272 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/position_spec.rb +14 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/rig/rspec_spec.rb +54 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/scope_spec.rb +45 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/slice_spec.rb +144 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/source/line_cache_spec.rb +74 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/source_spec.rb +168 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/transform/context_spec.rb +35 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/parslet/transform_spec.rb +165 -0
- data/vendor/bundle/ruby/2.0.0/gems/parslet-1.7.1/spec/spec_helper.rb +38 -0
- data/vendor/bundle/ruby/2.0.0/gems/polyglot-0.3.5/History.txt +72 -0
- data/vendor/bundle/ruby/2.0.0/gems/polyglot-0.3.5/License.txt +20 -0
- data/vendor/bundle/ruby/2.0.0/gems/polyglot-0.3.5/README.txt +87 -0
- data/vendor/bundle/ruby/2.0.0/gems/polyglot-0.3.5/Rakefile +42 -0
- data/vendor/bundle/ruby/2.0.0/gems/polyglot-0.3.5/lib/polyglot/version.rb +9 -0
- data/vendor/bundle/ruby/2.0.0/gems/polyglot-0.3.5/lib/polyglot.rb +76 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/.autotest +7 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/.gemtest +0 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/.rubocop.yml +27 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/.togglerc +7 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/CONTRIBUTING.rdoc +34 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/History.rdoc +651 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/MIT-LICENSE +21 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/Manifest.txt +166 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/README.rdoc +140 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/Rakefile +81 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/bin/rake +33 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/command_line_usage.rdoc +158 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/example/Rakefile1 +38 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/example/Rakefile2 +35 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/example/a.c +6 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/example/b.c +6 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/example/main.c +11 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/glossary.rdoc +43 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/jamis.rb +591 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/proto_rake.rdoc +127 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/rake.1 +141 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/rakefile.rdoc +653 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/rational.rdoc +151 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.4.14.rdoc +23 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.4.15.rdoc +35 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.5.0.rdoc +53 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.5.3.rdoc +78 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.5.4.rdoc +46 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.6.0.rdoc +141 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.7.0.rdoc +119 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.7.1.rdoc +59 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.7.2.rdoc +121 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.7.3.rdoc +47 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.8.0.rdoc +114 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.8.2.rdoc +165 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.8.3.rdoc +112 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.8.4.rdoc +147 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.8.5.rdoc +53 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.8.6.rdoc +37 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.8.7.rdoc +55 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.9.0.rdoc +112 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.9.1.rdoc +52 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.9.2.2.rdoc +55 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.9.2.rdoc +49 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.9.3.rdoc +102 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.9.4.rdoc +60 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.9.5.rdoc +55 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-0.9.6.rdoc +64 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-10.0.0.rdoc +178 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-10.0.1.rdoc +58 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-10.0.2.rdoc +53 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-10.0.3.rdoc +191 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/doc/release_notes/rake-10.1.0.rdoc +61 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/alt_system.rb +110 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/application.rb +790 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/backtrace.rb +23 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/clean.rb +76 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/cloneable.rb +16 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/contrib/.document +1 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/contrib/compositepublisher.rb +21 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/contrib/ftptools.rb +137 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/contrib/publisher.rb +81 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/contrib/rubyforgepublisher.rb +18 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/contrib/sshpublisher.rb +61 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/contrib/sys.rb +4 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/cpu_counter.rb +125 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/default_loader.rb +14 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/dsl_definition.rb +201 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/early_time.rb +21 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/ext/core.rb +25 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/ext/module.rb +2 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/ext/pathname.rb +25 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/ext/string.rb +173 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/ext/time.rb +16 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/file_creation_task.rb +24 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/file_list.rb +428 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/file_task.rb +46 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/file_utils.rb +128 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/file_utils_ext.rb +144 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/gempackagetask.rb +4 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/invocation_chain.rb +56 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/invocation_exception_mixin.rb +16 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/late_time.rb +17 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/linked_list.rb +103 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/loaders/makefile.rb +40 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/multi_task.rb +13 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/name_space.rb +38 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/packagetask.rb +199 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/pathmap.rb +3 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/phony.rb +15 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/private_reader.rb +20 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/promise.rb +99 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/pseudo_status.rb +29 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/rake_module.rb +38 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/rake_test_loader.rb +22 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/rdoctask.rb +4 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/ruby182_test_unit_fix.rb +29 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/rule_recursion_overflow_error.rb +20 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/runtest.rb +27 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/scope.rb +42 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/task.rb +383 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/task_argument_error.rb +7 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/task_arguments.rb +98 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/task_manager.rb +310 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/tasklib.rb +24 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/testtask.rb +212 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/thread_history_display.rb +48 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/thread_pool.rb +164 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/trace_output.rb +22 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/version.rb +7 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake/win32.rb +56 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/lib/rake.rb +79 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/rakelib/publish.rake +20 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/rakelib/test_times.rake +25 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/file_creation.rb +34 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/helper.rb +130 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/support/rakefile_definitions.rb +478 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/support/ruby_runner.rb +34 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_private_reader.rb +42 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake.rb +40 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_application.rb +643 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_application_options.rb +466 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_backtrace.rb +119 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_clean.rb +61 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_cpu_counter.rb +68 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_definitions.rb +84 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_directory_task.rb +76 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_dsl.rb +40 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_early_time.rb +31 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_extension.rb +59 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_file_creation_task.rb +56 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_file_list.rb +655 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_file_list_path_map.rb +8 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_file_task.rb +197 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_file_utils.rb +309 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_ftp_file.rb +74 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_functional.rb +482 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_invocation_chain.rb +64 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_late_time.rb +18 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_linked_list.rb +84 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_makefile_loader.rb +46 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_multi_task.rb +64 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_name_space.rb +57 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_package_task.rb +79 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_path_map.rb +168 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_path_map_explode.rb +34 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_path_map_partial.rb +18 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_pathname_extensions.rb +15 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_pseudo_status.rb +21 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_rake_test_loader.rb +20 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_reduce_compat.rb +26 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_require.rb +40 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_rules.rb +388 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_scope.rb +44 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_task.rb +393 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_task_argument_parsing.rb +119 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_task_arguments.rb +127 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_task_lib.rb +9 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_task_manager.rb +178 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_task_manager_argument_resolution.rb +19 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_task_with_arguments.rb +172 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_test_task.rb +146 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_thread_pool.rb +145 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_top_level_functions.rb +71 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_rake_win32.rb +72 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_thread_history_display.rb +101 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.4.2/test/test_trace_output.rb +52 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-3.3.0/License.txt +24 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-3.3.0/README.md +34 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-3.3.0/lib/rspec/version.rb +5 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-3.3.0/lib/rspec.rb +3 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/.document +5 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/.yardopts +8 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/Changelog.md +1856 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/License.txt +25 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/README.md +369 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/exe/rspec +4 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/autorun.rb +3 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/backtrace_formatter.rb +64 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/bisect/coordinator.rb +66 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/bisect/example_minimizer.rb +130 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/bisect/runner.rb +139 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/bisect/server.rb +61 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/bisect/subset_enumerator.rb +39 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/configuration.rb +1807 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/configuration_options.rb +191 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/drb.rb +111 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/dsl.rb +96 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/example.rb +573 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/example_group.rb +796 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/example_status_persister.rb +235 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/filter_manager.rb +231 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/flat_map.rb +20 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/formatters/base_formatter.rb +70 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/formatters/base_text_formatter.rb +77 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/formatters/bisect_formatter.rb +68 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/formatters/bisect_progress_formatter.rb +115 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/formatters/console_codes.rb +65 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/formatters/deprecation_formatter.rb +223 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/formatters/documentation_formatter.rb +70 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/formatters/exception_presenter.rb +393 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/formatters/fallback_message_formatter.rb +28 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/formatters/helpers.rb +109 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/formatters/html_formatter.rb +151 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/formatters/html_printer.rb +415 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/formatters/json_formatter.rb +96 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/formatters/profile_formatter.rb +68 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/formatters/progress_formatter.rb +28 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/formatters/protocol.rb +172 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/formatters/snippet_extractor.rb +116 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/formatters.rb +254 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/hooks.rb +638 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/memoized_helpers.rb +532 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/metadata.rb +490 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/metadata_filter.rb +235 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/minitest_assertions_adapter.rb +31 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/mocking_adapters/flexmock.rb +31 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/mocking_adapters/mocha.rb +57 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/mocking_adapters/null.rb +14 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/mocking_adapters/rr.rb +31 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/mocking_adapters/rspec.rb +32 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/mutex.rb +63 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/notifications.rb +498 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/option_parser.rb +301 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/ordering.rb +158 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/pending.rb +165 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/profiler.rb +32 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/project_initializer/.rspec +2 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/project_initializer/spec/spec_helper.rb +96 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/project_initializer.rb +48 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/rake_task.rb +158 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/reentrant_mutex.rb +52 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/reporter.rb +220 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/ruby_project.rb +53 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/runner.rb +179 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/sandbox.rb +37 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/set.rb +49 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/shared_context.rb +55 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/shared_example_group.rb +210 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/shell_escape.rb +49 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/test_unit_assertions_adapter.rb +30 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/version.rb +9 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/warnings.rb +40 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/world.rb +178 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core.rb +181 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/.document +5 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/.yardopts +6 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/Changelog.md +953 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/License.txt +24 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/README.md +289 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/expectations/configuration.rb +164 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/expectations/expectation_target.rb +113 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/expectations/fail_with.rb +31 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/expectations/failure_aggregator.rb +194 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/expectations/handler.rb +170 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/expectations/minitest_integration.rb +31 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/expectations/syntax.rb +132 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/expectations/version.rb +8 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/expectations.rb +81 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/aliased_matcher.rb +116 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/all.rb +85 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/base_matcher.rb +181 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/be.rb +285 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/be_between.rb +77 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/be_instance_of.rb +22 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/be_kind_of.rb +16 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/be_within.rb +72 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/change.rb +337 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/compound.rb +293 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/contain_exactly.rb +253 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/cover.rb +24 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/eq.rb +40 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/eql.rb +34 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/equal.rb +81 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/exist.rb +86 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/has.rb +103 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/have_attributes.rb +114 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/include.rb +130 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/match.rb +37 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/operators.rb +128 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/output.rb +200 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/raise_error.rb +216 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/respond_to.rb +90 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/satisfy.rb +37 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/start_or_end_with.rb +94 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/throw_symbol.rb +132 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/yield.rb +418 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in.rb +52 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/composable.rb +184 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/dsl.rb +453 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/english_phrasing.rb +42 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +73 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/fail_matchers.rb +42 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/generated_descriptions.rb +42 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/matcher_delegator.rb +35 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers/matcher_protocol.rb +99 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-expectations-3.3.1/lib/rspec/matchers.rb +1009 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/.document +5 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/.yardopts +6 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/Changelog.md +965 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/License.txt +24 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/README.md +430 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/chain.rb +110 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/error_generator.rb +31 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/expect_chain_chain.rb +35 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/expectation_chain.rb +48 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/message_chains.rb +83 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/proxy.rb +116 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/recorder.rb +264 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/stub_chain.rb +46 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/stub_chain_chain.rb +27 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance.rb +11 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/argument_list_matcher.rb +100 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/argument_matchers.rb +320 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/configuration.rb +188 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/error_generator.rb +362 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/example_methods.rb +421 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/instance_method_stasher.rb +135 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/marshal_extension.rb +41 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/matchers/expectation_customization.rb +20 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/matchers/have_received.rb +116 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/matchers/receive.rb +130 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/matchers/receive_message_chain.rb +80 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/matchers/receive_messages.rb +75 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/message_chain.rb +87 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/message_expectation.rb +717 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/method_double.rb +287 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/method_reference.rb +192 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/mutate_const.rb +335 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/mutex.rb +73 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/object_reference.rb +149 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/order_group.rb +81 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/proxy.rb +439 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/reentrant_mutex.rb +53 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/space.rb +238 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/standalone.rb +3 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/syntax.rb +325 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/targets.rb +97 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/test_double.rb +170 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/verifying_double.rb +129 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/verifying_message_expecation.rb +54 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/verifying_proxy.rb +213 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks/version.rb +9 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-mocks-3.3.2/lib/rspec/mocks.rb +126 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/Changelog.md +125 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/LICENSE.txt +22 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/README.md +26 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support/caller_filter.rb +83 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support/differ.rb +215 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support/directory_maker.rb +63 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support/encoded_string.rb +155 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support/fuzzy_matcher.rb +48 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support/hunk_generator.rb +47 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support/matcher_definition.rb +42 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support/method_signature_verifier.rb +273 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support/object_formatter.rb +93 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support/recursive_const_methods.rb +76 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support/ruby_features.rb +118 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support/spec/deprecation_helpers.rb +64 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support/spec/formatting_support.rb +9 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support/spec/in_sub_process.rb +52 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support/spec/library_wide_checks.rb +145 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support/spec/shell_out.rb +71 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support/spec/stderr_splitter.rb +63 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support/spec/string_matcher.rb +46 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support/spec/with_isolated_directory.rb +9 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support/spec/with_isolated_stderr.rb +13 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support/spec.rb +81 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support/version.rb +7 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support/version_checker.rb +53 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support/warnings.rb +39 -0
- data/vendor/bundle/ruby/2.0.0/gems/rspec-support-3.3.0/lib/rspec/support.rb +111 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/LICENSE +19 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/README.md +192 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/Rakefile +76 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/bin/tt +112 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/doc/contributing_and_planned_features.markdown +102 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/doc/grammar_composition.markdown +65 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/doc/index.markdown +88 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/doc/pitfalls_and_advanced_techniques.markdown +51 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/doc/semantic_interpretation.markdown +218 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/doc/site.rb +112 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/doc/sitegen.rb +65 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/doc/syntactic_recognition.markdown +220 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/doc/tt.1 +83 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/doc/using_in_ruby.markdown +105 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/examples/indented_blocks/indented_blocks.tt +73 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/examples/indented_blocks/indented_blocks_test.rb +24 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/examples/inner_outer.rb +51 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/examples/inner_outer.tt +14 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/examples/lambda_calculus/arithmetic.rb +551 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/examples/lambda_calculus/arithmetic.treetop +98 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/examples/lambda_calculus/arithmetic_node_classes.rb +9 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/examples/lambda_calculus/arithmetic_test.rb +58 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/examples/lambda_calculus/lambda_calculus.rb +718 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/examples/lambda_calculus/lambda_calculus.treetop +132 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/examples/lambda_calculus/lambda_calculus_node_classes.rb +5 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/examples/lambda_calculus/lambda_calculus_test.rb +89 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/examples/lambda_calculus/test_helper.rb +18 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/examples/numerals.rb +210 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/examples/numerals.tt +21 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/bootstrap_gen_1_metagrammar.rb +42 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/grammar_compiler.rb +49 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/lexical_address_space.rb +17 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/metagrammar.rb +4113 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/metagrammar.treetop +503 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/node_classes/anything_symbol.rb +26 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/node_classes/atomic_expression.rb +14 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/node_classes/character_class.rb +32 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/node_classes/choice.rb +37 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/node_classes/declaration_sequence.rb +24 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/node_classes/grammar.rb +28 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/node_classes/inline_module.rb +27 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/node_classes/nonterminal.rb +13 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/node_classes/optional.rb +19 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/node_classes/parenthesized_expression.rb +13 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/node_classes/parsing_expression.rb +150 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/node_classes/parsing_rule.rb +60 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/node_classes/predicate.rb +52 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/node_classes/predicate_block.rb +23 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/node_classes/repetition.rb +109 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/node_classes/sequence.rb +75 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/node_classes/terminal.rb +45 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/node_classes/transient_prefix.rb +9 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/node_classes/treetop_file.rb +9 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/node_classes.rb +19 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler/ruby_builder.rb +115 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/compiler.rb +7 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/polyglot.rb +9 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/ruby_extensions/string.rb +40 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/ruby_extensions.rb +1 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/runtime/compiled_parser.rb +126 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/runtime/interval_skip_list/head_node.rb +15 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/runtime/interval_skip_list/interval_skip_list.rb +200 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/runtime/interval_skip_list/node.rb +164 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/runtime/interval_skip_list.rb +3 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/runtime/syntax_node.rb +116 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/runtime/terminal_parse_failure.rb +17 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/runtime/terminal_syntax_node.rb +17 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/runtime.rb +6 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop/version.rb +9 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/lib/treetop.rb +3 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/and_predicate_spec.rb +36 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/anything_symbol_spec.rb +47 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/character_class_spec.rb +304 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/choice_spec.rb +80 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/circular_compilation_spec.rb +30 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/failure_propagation_functional_spec.rb +21 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/grammar_compiler_spec.rb +113 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/grammar_spec.rb +44 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/multibyte_chars_spec.rb +38 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/namespace_spec.rb +42 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/nonterminal_symbol_spec.rb +40 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/not_predicate_spec.rb +52 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/occurrence_range_spec.rb +186 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/one_or_more_spec.rb +35 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/optional_spec.rb +37 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/parenthesized_expression_spec.rb +22 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/parsing_rule_spec.rb +61 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/repeated_subrule_spec.rb +29 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/semantic_predicate_spec.rb +176 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/sequence_spec.rb +129 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/terminal_spec.rb +177 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/terminal_symbol_spec.rb +40 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/test_grammar.treetop +7 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/test_grammar.tt +7 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/test_grammar_do.treetop +7 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/test_grammar_magic_coding.treetop +8 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/test_grammar_magic_encoding.treetop +8 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/tt_compiler_spec.rb +224 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/compiler/zero_or_more_spec.rb +56 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/composition/a.treetop +11 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/composition/b.treetop +11 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/composition/c.treetop +10 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/composition/d.treetop +10 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/composition/f.treetop +17 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/composition/grammar_composition_spec.rb +40 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/composition/subfolder/e_includes_c.treetop +15 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/ruby_extensions/string_spec.rb +32 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/runtime/compiled_parser_spec.rb +153 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/runtime/interval_skip_list/delete_spec.rb +147 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/runtime/interval_skip_list/expire_range_spec.rb +349 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/runtime/interval_skip_list/insert_and_delete_node_spec.rb +385 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/runtime/interval_skip_list/insert_spec.rb +660 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/runtime/interval_skip_list/interval_skip_list_spec.graffle +6175 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/runtime/interval_skip_list/interval_skip_list_spec.rb +58 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/runtime/interval_skip_list/palindromic_fixture.rb +35 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/runtime/interval_skip_list/palindromic_fixture_spec.rb +163 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/runtime/interval_skip_list/spec_helper.rb +91 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/runtime/syntax_node_spec.rb +77 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/spec/spec_helper.rb +115 -0
- data/vendor/bundle/ruby/2.0.0/gems/treetop-1.6.3/treetop.gemspec +179 -0
- data/vendor/bundle/ruby/2.0.0/specifications/blankslate-3.1.3.gemspec +30 -0
- data/vendor/bundle/ruby/2.0.0/specifications/diff-lcs-1.2.5.gemspec +65 -0
- data/vendor/bundle/ruby/2.0.0/specifications/parslet-1.7.1.gemspec +31 -0
- data/vendor/bundle/ruby/2.0.0/specifications/polyglot-0.3.5.gemspec +19 -0
- data/vendor/bundle/ruby/2.0.0/specifications/rake-10.4.2.gemspec +40 -0
- data/vendor/bundle/ruby/2.0.0/specifications/rspec-3.3.0.gemspec +39 -0
- data/vendor/bundle/ruby/2.0.0/specifications/rspec-core-3.3.2.gemspec +65 -0
- data/vendor/bundle/ruby/2.0.0/specifications/rspec-expectations-3.3.1.gemspec +47 -0
- data/vendor/bundle/ruby/2.0.0/specifications/rspec-mocks-3.3.2.gemspec +50 -0
- data/vendor/bundle/ruby/2.0.0/specifications/rspec-support-3.3.0.gemspec +35 -0
- data/vendor/bundle/ruby/2.0.0/specifications/treetop-1.6.3.gemspec +50 -0
- metadata +869 -0
@@ -0,0 +1,97 @@
|
|
1
|
+
|
2
|
+
# Paints a graphviz graph of your parser.
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'ruby-graphviz'
|
6
|
+
rescue LoadError
|
7
|
+
puts "Please install the 'ruby-graphviz' gem first."
|
8
|
+
fail
|
9
|
+
end
|
10
|
+
|
11
|
+
require 'set'
|
12
|
+
require 'parslet/atoms/visitor'
|
13
|
+
|
14
|
+
module Parslet
|
15
|
+
class GraphvizVisitor
|
16
|
+
def initialize g
|
17
|
+
@graph = g
|
18
|
+
@known_links = Set.new
|
19
|
+
@visited = Set.new
|
20
|
+
end
|
21
|
+
|
22
|
+
attr_reader :parent
|
23
|
+
|
24
|
+
def visit_parser(root)
|
25
|
+
recurse root, node('parser')
|
26
|
+
end
|
27
|
+
def visit_entity(name, block)
|
28
|
+
s = node(name)
|
29
|
+
|
30
|
+
downwards s
|
31
|
+
|
32
|
+
return if @visited.include?(name)
|
33
|
+
@visited << name
|
34
|
+
|
35
|
+
recurse block.call, s
|
36
|
+
end
|
37
|
+
def visit_named(name, atom)
|
38
|
+
recurse atom, parent
|
39
|
+
end
|
40
|
+
def visit_repetition(tag, min, max, atom)
|
41
|
+
recurse atom, parent
|
42
|
+
end
|
43
|
+
def visit_alternative(alternatives)
|
44
|
+
p = parent
|
45
|
+
alternatives.each do |atom|
|
46
|
+
recurse atom, p
|
47
|
+
end
|
48
|
+
end
|
49
|
+
def visit_sequence(sequence)
|
50
|
+
p = parent
|
51
|
+
sequence.each do |atom|
|
52
|
+
recurse atom, p
|
53
|
+
end
|
54
|
+
end
|
55
|
+
def visit_lookahead(positive, atom)
|
56
|
+
recurse atom, parent
|
57
|
+
end
|
58
|
+
def visit_re(regexp)
|
59
|
+
# downwards node(regexp.object_id, label: escape("re(#{regexp.inspect})"))
|
60
|
+
end
|
61
|
+
def visit_str(str)
|
62
|
+
# downwards node(str.object_id, label: escape("#{str.inspect}"))
|
63
|
+
end
|
64
|
+
|
65
|
+
def escape str
|
66
|
+
str.gsub('"', "'")
|
67
|
+
end
|
68
|
+
def node name, opts={}
|
69
|
+
@graph.add_nodes name.to_s, opts
|
70
|
+
end
|
71
|
+
def downwards child
|
72
|
+
if @parent && !@known_links.include?([@parent, child])
|
73
|
+
@graph.add_edges(@parent, child)
|
74
|
+
@known_links << [@parent, child]
|
75
|
+
end
|
76
|
+
end
|
77
|
+
def recurse node, current
|
78
|
+
@parent = current
|
79
|
+
node.accept(self)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
module Graphable
|
84
|
+
def graph opts
|
85
|
+
g = GraphViz.new(:G, type: :digraph)
|
86
|
+
visitor = GraphvizVisitor.new(g)
|
87
|
+
|
88
|
+
new.accept(visitor)
|
89
|
+
|
90
|
+
g.output opts
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
class Parser # reopen for introducing the .graph method
|
95
|
+
extend Graphable
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
|
2
|
+
# The base class for all your parsers. Use as follows:
|
3
|
+
#
|
4
|
+
# require 'parslet'
|
5
|
+
#
|
6
|
+
# class MyParser < Parslet::Parser
|
7
|
+
# rule(:a) { str('a').repeat }
|
8
|
+
# root(:a)
|
9
|
+
# end
|
10
|
+
#
|
11
|
+
# pp MyParser.new.parse('aaaa') # => 'aaaa'
|
12
|
+
# pp MyParser.new.parse('bbbb') # => Parslet::Atoms::ParseFailed:
|
13
|
+
# # Don't know what to do with bbbb at line 1 char 1.
|
14
|
+
#
|
15
|
+
# Parslet::Parser is also a grammar atom. This means that you can mix full
|
16
|
+
# fledged parsers freely with small parts of a different parser.
|
17
|
+
#
|
18
|
+
# Example:
|
19
|
+
# class ParserA < Parslet::Parser
|
20
|
+
# root :aaa
|
21
|
+
# rule(:aaa) { str('a').repeat(3,3) }
|
22
|
+
# end
|
23
|
+
# class ParserB < Parslet::Parser
|
24
|
+
# root :expression
|
25
|
+
# rule(:expression) { str('b') >> ParserA.new >> str('b') }
|
26
|
+
# end
|
27
|
+
#
|
28
|
+
# In the above example, ParserB would parse something like 'baaab'.
|
29
|
+
#
|
30
|
+
class Parslet::Parser < Parslet::Atoms::Base
|
31
|
+
include Parslet
|
32
|
+
|
33
|
+
class << self # class methods
|
34
|
+
# Define the parsers #root function. This is the place where you start
|
35
|
+
# parsing; if you have a rule for 'file' that describes what should be
|
36
|
+
# in a file, this would be your root declaration:
|
37
|
+
#
|
38
|
+
# class Parser
|
39
|
+
# root :file
|
40
|
+
# rule(:file) { ... }
|
41
|
+
# end
|
42
|
+
#
|
43
|
+
# #root declares a 'parse' function that works just like the parse
|
44
|
+
# function that you can call on a simple parslet, taking a string as input
|
45
|
+
# and producing parse output.
|
46
|
+
#
|
47
|
+
# In a way, #root is a shorthand for:
|
48
|
+
#
|
49
|
+
# def parse(str)
|
50
|
+
# your_parser_root.parse(str)
|
51
|
+
# end
|
52
|
+
#
|
53
|
+
def root(name)
|
54
|
+
define_method(:root) do
|
55
|
+
self.send(name)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def try(source, context, consume_all)
|
61
|
+
root.try(source, context, consume_all)
|
62
|
+
end
|
63
|
+
|
64
|
+
def to_s_inner(prec)
|
65
|
+
root.to_s(prec)
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
|
2
|
+
# Used internally for representing a bind placeholder in a Parslet::Transform
|
3
|
+
# pattern. This is the superclass for all bindings.
|
4
|
+
#
|
5
|
+
# It defines the most permissive kind of bind, the one that matches any subtree
|
6
|
+
# whatever it looks like.
|
7
|
+
#
|
8
|
+
class Parslet::Pattern::SubtreeBind < Struct.new(:symbol)
|
9
|
+
def variable_name
|
10
|
+
symbol
|
11
|
+
end
|
12
|
+
|
13
|
+
def inspect
|
14
|
+
"#{bind_type_name}(#{symbol.inspect})"
|
15
|
+
end
|
16
|
+
|
17
|
+
def can_bind?(subtree)
|
18
|
+
true
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
def bind_type_name
|
23
|
+
if md=self.class.name.match(/(\w+)Bind/)
|
24
|
+
md.captures.first.downcase
|
25
|
+
else
|
26
|
+
# This path should never be used, but since this is for inspection only,
|
27
|
+
# let's not raise.
|
28
|
+
'unknown_bind'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
# Binds a symbol to a simple subtree, one that is not either a sequence of
|
34
|
+
# elements or a collection of attributes.
|
35
|
+
#
|
36
|
+
class Parslet::Pattern::SimpleBind < Parslet::Pattern::SubtreeBind
|
37
|
+
def can_bind?(subtree)
|
38
|
+
not [Hash, Array].include?(subtree.class)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# Binds a symbol to a sequence of simple leafs ([element1, element2, ...])
|
43
|
+
#
|
44
|
+
class Parslet::Pattern::SequenceBind < Parslet::Pattern::SubtreeBind
|
45
|
+
def can_bind?(subtree)
|
46
|
+
subtree.kind_of?(Array) &&
|
47
|
+
(not subtree.any? { |el| [Hash, Array].include?(el.class) })
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
# Matches trees against expressions. Trees are formed by arrays and hashes
|
2
|
+
# for expressing membership and sequence. The leafs of the tree are other
|
3
|
+
# classes.
|
4
|
+
#
|
5
|
+
# A tree issued by the parslet library might look like this:
|
6
|
+
#
|
7
|
+
# {
|
8
|
+
# :function_call => {
|
9
|
+
# :name => 'foobar',
|
10
|
+
# :args => [1, 2, 3]
|
11
|
+
# }
|
12
|
+
# }
|
13
|
+
#
|
14
|
+
# A pattern that would match against this tree would be:
|
15
|
+
#
|
16
|
+
# { :function_call => { :name => simple(:name), :args => sequence(:args) }}
|
17
|
+
#
|
18
|
+
# Note that Parslet::Pattern only matches at a given subtree; it wont try
|
19
|
+
# to match recursively. To do that, please use Parslet::Transform.
|
20
|
+
#
|
21
|
+
class Parslet::Pattern
|
22
|
+
def initialize(pattern)
|
23
|
+
@pattern = pattern
|
24
|
+
end
|
25
|
+
|
26
|
+
# Decides if the given subtree matches this pattern. Returns the bindings
|
27
|
+
# made on a successful match or nil if the match fails. If you specify
|
28
|
+
# bindings to be a hash, the mappings in it will be treated like bindings
|
29
|
+
# made during an attempted match.
|
30
|
+
#
|
31
|
+
# Pattern.new('a').match('a', :foo => 'bar') # => { :foo => 'bar' }
|
32
|
+
#
|
33
|
+
# @param subtree [String, Hash, Array] poro subtree returned by a parse
|
34
|
+
# @param bindings [Hash] variable bindings to be verified
|
35
|
+
# @return [Hash, nil] On success: variable bindings that allow a match. On
|
36
|
+
# failure: nil
|
37
|
+
#
|
38
|
+
def match(subtree, bindings=nil)
|
39
|
+
bindings = bindings && bindings.dup || Hash.new
|
40
|
+
return bindings if element_match(subtree, @pattern, bindings)
|
41
|
+
end
|
42
|
+
|
43
|
+
# Returns true if the tree element given by +tree+ matches the expression
|
44
|
+
# given by +exp+. This match must respect bindings already made in
|
45
|
+
# +bindings+. Note that bindings is carried along and modified.
|
46
|
+
#
|
47
|
+
# @api private
|
48
|
+
#
|
49
|
+
def element_match(tree, exp, bindings)
|
50
|
+
# p [:elm, tree, exp]
|
51
|
+
case [tree, exp].map { |e| e.class }
|
52
|
+
when [Hash,Hash]
|
53
|
+
return element_match_hash(tree, exp, bindings)
|
54
|
+
when [Array,Array]
|
55
|
+
return element_match_ary_single(tree, exp, bindings)
|
56
|
+
else
|
57
|
+
# If elements match exactly, then that is good enough in all cases
|
58
|
+
return true if exp === tree
|
59
|
+
|
60
|
+
# If exp is a bind variable: Check if the binding matches
|
61
|
+
if exp.respond_to?(:can_bind?) && exp.can_bind?(tree)
|
62
|
+
return element_match_binding(tree, exp, bindings)
|
63
|
+
end
|
64
|
+
|
65
|
+
# Otherwise: No match (we don't know anything about the element
|
66
|
+
# combination)
|
67
|
+
return false
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
# @api private
|
72
|
+
#
|
73
|
+
def element_match_binding(tree, exp, bindings)
|
74
|
+
var_name = exp.variable_name
|
75
|
+
|
76
|
+
# TODO test for the hidden :_ feature.
|
77
|
+
if var_name && bound_value = bindings[var_name]
|
78
|
+
return bound_value == tree
|
79
|
+
end
|
80
|
+
|
81
|
+
# New binding:
|
82
|
+
bindings.store var_name, tree
|
83
|
+
|
84
|
+
return true
|
85
|
+
end
|
86
|
+
|
87
|
+
# @api private
|
88
|
+
#
|
89
|
+
def element_match_ary_single(sequence, exp, bindings)
|
90
|
+
return false if sequence.size != exp.size
|
91
|
+
|
92
|
+
return sequence.zip(exp).all? { |elt, subexp|
|
93
|
+
element_match(elt, subexp, bindings) }
|
94
|
+
end
|
95
|
+
|
96
|
+
# @api private
|
97
|
+
#
|
98
|
+
def element_match_hash(tree, exp, bindings)
|
99
|
+
# Early failure when one hash is bigger than the other
|
100
|
+
return false unless exp.size == tree.size
|
101
|
+
|
102
|
+
# We iterate over expected pattern, since we demand that the keys that
|
103
|
+
# are there should be in tree as well.
|
104
|
+
exp.each do |expected_key, expected_value|
|
105
|
+
return false unless tree.has_key? expected_key
|
106
|
+
|
107
|
+
# Recurse into the value and stop early on failure
|
108
|
+
value = tree[expected_key]
|
109
|
+
return false unless element_match(value, expected_value, bindings)
|
110
|
+
end
|
111
|
+
|
112
|
+
return true
|
113
|
+
end
|
114
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
|
2
|
+
# Encapsules the concept of a position inside a string.
|
3
|
+
#
|
4
|
+
class Parslet::Position
|
5
|
+
attr_reader :bytepos
|
6
|
+
|
7
|
+
include Comparable
|
8
|
+
|
9
|
+
def initialize string, bytepos
|
10
|
+
@string = string
|
11
|
+
@bytepos = bytepos
|
12
|
+
end
|
13
|
+
|
14
|
+
def charpos
|
15
|
+
@string.byteslice(0, @bytepos).size
|
16
|
+
end
|
17
|
+
|
18
|
+
def <=> b
|
19
|
+
self.bytepos <=> b.bytepos
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
RSpec::Matchers.define(:parse) do |input, opts|
|
2
|
+
as = block = nil
|
3
|
+
result = trace = nil
|
4
|
+
|
5
|
+
unless self.respond_to? :failure_message # if RSpec 2.x
|
6
|
+
class << self
|
7
|
+
alias_method :failure_message, :failure_message_for_should
|
8
|
+
alias_method :failure_message_when_negated, :failure_message_for_should_not
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
match do |parser|
|
13
|
+
begin
|
14
|
+
result = parser.parse(input)
|
15
|
+
block ?
|
16
|
+
block.call(result) :
|
17
|
+
(as == result || as.nil?)
|
18
|
+
rescue Parslet::ParseFailed => ex
|
19
|
+
trace = ex.cause.ascii_tree if opts && opts[:trace]
|
20
|
+
false
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
failure_message do |is|
|
25
|
+
if block
|
26
|
+
"expected output of parsing #{input.inspect}" <<
|
27
|
+
" with #{is.inspect} to meet block conditions, but it didn't"
|
28
|
+
else
|
29
|
+
"expected " <<
|
30
|
+
(as ?
|
31
|
+
"output of parsing #{input.inspect}"<<
|
32
|
+
" with #{is.inspect} to equal #{as.inspect}, but was #{result.inspect}" :
|
33
|
+
"#{is.inspect} to be able to parse #{input.inspect}") <<
|
34
|
+
(trace ?
|
35
|
+
"\n"+trace :
|
36
|
+
'')
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
failure_message_when_negated do |is|
|
41
|
+
if block
|
42
|
+
"expected output of parsing #{input.inspect} with #{is.inspect} not to meet block conditions, but it did"
|
43
|
+
else
|
44
|
+
"expected " <<
|
45
|
+
(as ?
|
46
|
+
"output of parsing #{input.inspect}"<<
|
47
|
+
" with #{is.inspect} not to equal #{as.inspect}" :
|
48
|
+
|
49
|
+
"#{is.inspect} to not parse #{input.inspect}, but it did")
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
# NOTE: This has a nodoc tag since the rdoc parser puts this into
|
54
|
+
# Object, a thing I would never allow.
|
55
|
+
chain :as do |expected_output=nil, &block|
|
56
|
+
as = expected_output
|
57
|
+
block = block
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
class Parslet::Scope
|
2
|
+
# Raised when the accessed slot has never been assigned a value.
|
3
|
+
#
|
4
|
+
class NotFound < StandardError
|
5
|
+
end
|
6
|
+
|
7
|
+
class Binding
|
8
|
+
attr_reader :parent
|
9
|
+
|
10
|
+
def initialize(parent=nil)
|
11
|
+
@parent = parent
|
12
|
+
@hash = Hash.new
|
13
|
+
end
|
14
|
+
|
15
|
+
def [](k)
|
16
|
+
@hash.has_key?(k) && @hash[k] ||
|
17
|
+
parent && parent[k] or
|
18
|
+
raise NotFound
|
19
|
+
end
|
20
|
+
def []=(k,v)
|
21
|
+
@hash.store(k,v)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def [](k)
|
26
|
+
@current[k]
|
27
|
+
end
|
28
|
+
def []=(k,v)
|
29
|
+
@current[k] = v
|
30
|
+
end
|
31
|
+
|
32
|
+
def initialize
|
33
|
+
@current = Binding.new
|
34
|
+
end
|
35
|
+
|
36
|
+
def push
|
37
|
+
@current = Binding.new(@current)
|
38
|
+
end
|
39
|
+
def pop
|
40
|
+
@current = @current.parent
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
|
2
|
+
# A slice is a small part from the parse input. A slice mainly behaves like
|
3
|
+
# any other string, except that it remembers where it came from (offset in
|
4
|
+
# original input).
|
5
|
+
#
|
6
|
+
# == Extracting line and column
|
7
|
+
#
|
8
|
+
# Using the #line_and_column method, you can extract the line and column in
|
9
|
+
# the original input where this slice starts.
|
10
|
+
#
|
11
|
+
# Example:
|
12
|
+
# slice.line_and_column # => [1, 13]
|
13
|
+
# slice.offset # => 12
|
14
|
+
#
|
15
|
+
# == Likeness to strings
|
16
|
+
#
|
17
|
+
# Parslet::Slice behaves in many ways like a Ruby String. This likeness
|
18
|
+
# however is not complete - many of the myriad of operations String supports
|
19
|
+
# are not yet in Slice. You can always extract the internal string instance by
|
20
|
+
# calling #to_s.
|
21
|
+
#
|
22
|
+
# These omissions are somewhat intentional. Rather than maintaining a full
|
23
|
+
# delegation, we opt for a partial emulation that gets the job done.
|
24
|
+
#
|
25
|
+
class Parslet::Slice
|
26
|
+
attr_reader :str
|
27
|
+
attr_reader :position
|
28
|
+
attr_reader :line_cache
|
29
|
+
|
30
|
+
# Construct a slice using a string, an offset and an optional line cache.
|
31
|
+
# The line cache should be able to answer to the #line_and_column message.
|
32
|
+
#
|
33
|
+
def initialize(position, string, line_cache=nil)
|
34
|
+
@position = position
|
35
|
+
@str = string
|
36
|
+
@line_cache = line_cache
|
37
|
+
end
|
38
|
+
|
39
|
+
def offset
|
40
|
+
@position.charpos
|
41
|
+
end
|
42
|
+
|
43
|
+
# Compares slices to other slices or strings.
|
44
|
+
#
|
45
|
+
def == other
|
46
|
+
str == other
|
47
|
+
end
|
48
|
+
|
49
|
+
# Match regular expressions.
|
50
|
+
#
|
51
|
+
def match(regexp)
|
52
|
+
str.match(regexp)
|
53
|
+
end
|
54
|
+
|
55
|
+
# Returns the slices size in characters.
|
56
|
+
#
|
57
|
+
def size
|
58
|
+
str.size
|
59
|
+
end
|
60
|
+
|
61
|
+
alias length size
|
62
|
+
|
63
|
+
# Concatenate two slices; it is assumed that the second slice begins
|
64
|
+
# where the first one ends. The offset of the resulting slice is the same
|
65
|
+
# as the one of this slice.
|
66
|
+
#
|
67
|
+
def +(other)
|
68
|
+
self.class.new(@position, str + other.to_s, line_cache)
|
69
|
+
end
|
70
|
+
|
71
|
+
# Returns a <line, column> tuple referring to the original input.
|
72
|
+
#
|
73
|
+
def line_and_column
|
74
|
+
raise ArgumentError, "No line cache was given, cannot infer line and column." \
|
75
|
+
unless line_cache
|
76
|
+
|
77
|
+
line_cache.line_and_column(@position.bytepos)
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
# Conversion operators -----------------------------------------------------
|
82
|
+
def to_str
|
83
|
+
str
|
84
|
+
end
|
85
|
+
alias to_s to_str
|
86
|
+
|
87
|
+
def to_slice
|
88
|
+
self
|
89
|
+
end
|
90
|
+
def to_sym
|
91
|
+
str.to_sym
|
92
|
+
end
|
93
|
+
def to_int
|
94
|
+
Integer(str)
|
95
|
+
end
|
96
|
+
def to_i
|
97
|
+
str.to_i
|
98
|
+
end
|
99
|
+
def to_f
|
100
|
+
str.to_f
|
101
|
+
end
|
102
|
+
|
103
|
+
# Inspection & Debugging ---------------------------------------------------
|
104
|
+
|
105
|
+
# Prints the slice as <code>"string"@offset</code>.
|
106
|
+
def inspect
|
107
|
+
|
108
|
+
str.inspect << "@#{offset}"
|
109
|
+
end
|
110
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
class Parslet::Source
|
4
|
+
# A cache for line start positions.
|
5
|
+
#
|
6
|
+
class LineCache
|
7
|
+
def initialize
|
8
|
+
# Stores line endings as a simple position number. The first line always
|
9
|
+
# starts at 0; numbers beyond the biggest entry are on any line > size,
|
10
|
+
# but probably make a scan to that position neccessary.
|
11
|
+
@line_ends = []
|
12
|
+
@line_ends.extend RangeSearch
|
13
|
+
end
|
14
|
+
|
15
|
+
# Returns a <line, column> tuple for the given input position. Input
|
16
|
+
# position must be given as byte offset into original string.
|
17
|
+
#
|
18
|
+
def line_and_column(pos)
|
19
|
+
pos = pos.bytepos if pos.respond_to? :bytepos
|
20
|
+
eol_idx = @line_ends.lbound(pos)
|
21
|
+
|
22
|
+
if eol_idx
|
23
|
+
# eol_idx points to the offset that ends the current line.
|
24
|
+
# Let's try to find the offset that starts it:
|
25
|
+
offset = eol_idx>0 && @line_ends[eol_idx-1] || 0
|
26
|
+
return [eol_idx+1, pos-offset+1]
|
27
|
+
else
|
28
|
+
# eol_idx is nil, that means that we're beyond the last line end that
|
29
|
+
# we know about. Pretend for now that we're just on the last line.
|
30
|
+
offset = @line_ends.last || 0
|
31
|
+
return [@line_ends.size+1, pos-offset+1]
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def scan_for_line_endings(start_pos, buf)
|
36
|
+
return unless buf
|
37
|
+
|
38
|
+
buf = StringScanner.new(buf)
|
39
|
+
return unless buf.exist?(/\n/)
|
40
|
+
|
41
|
+
## If we have already read part or all of buf, we already know about
|
42
|
+
## line ends in that portion. remove it and correct cur (search index)
|
43
|
+
if @last_line_end && start_pos < @last_line_end
|
44
|
+
# Let's not search the range from start_pos to last_line_end again.
|
45
|
+
buf.pos = @last_line_end - start_pos
|
46
|
+
end
|
47
|
+
|
48
|
+
## Scan the string for line endings; store the positions of all endings
|
49
|
+
## in @line_ends.
|
50
|
+
while buf.skip_until(/\n/)
|
51
|
+
@last_line_end = start_pos + buf.pos
|
52
|
+
@line_ends << @last_line_end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
# Mixin for arrays that implicitly give a number of ranges, where one range
|
58
|
+
# begins where the other one ends.
|
59
|
+
#
|
60
|
+
# Example:
|
61
|
+
#
|
62
|
+
# [10, 20, 30]
|
63
|
+
# # would describe [0, 10], (10, 20], (20, 30]
|
64
|
+
#
|
65
|
+
module RangeSearch
|
66
|
+
def find_mid(left, right)
|
67
|
+
# NOTE: Jonathan Hinkle reported that when mathn is required, just
|
68
|
+
# dividing and relying on the integer truncation is not enough.
|
69
|
+
left + ((right - left) / 2).floor
|
70
|
+
end
|
71
|
+
|
72
|
+
# Scans the array for the first number that is > than bound. Returns the
|
73
|
+
# index of that number.
|
74
|
+
#
|
75
|
+
def lbound(bound)
|
76
|
+
return nil if empty?
|
77
|
+
return nil unless last > bound
|
78
|
+
|
79
|
+
left = 0
|
80
|
+
right = size - 1
|
81
|
+
|
82
|
+
loop do
|
83
|
+
mid = find_mid(left, right)
|
84
|
+
|
85
|
+
if self[mid] > bound
|
86
|
+
right = mid
|
87
|
+
else
|
88
|
+
# assert: self[mid] <= bound
|
89
|
+
left = mid+1
|
90
|
+
end
|
91
|
+
|
92
|
+
if right <= left
|
93
|
+
return right
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|