plyom_user 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/plyom_user/version.rb +1 -1
- data/lib/plyom_user.rb +4 -3
- data/vendor/bundle/ruby/2.0.0/bin/httparty +23 -0
- data/vendor/bundle/ruby/2.0.0/bin/rake +23 -0
- data/vendor/bundle/ruby/2.0.0/build_info/httparty-0.11.0.info +1 -0
- data/vendor/bundle/ruby/2.0.0/build_info/multi_json-1.8.2.info +1 -0
- data/vendor/bundle/ruby/2.0.0/build_info/multi_xml-0.5.5.info +1 -0
- data/vendor/bundle/ruby/2.0.0/build_info/rake-10.1.1.info +1 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/.gitignore +10 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/.travis.yml +9 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/Gemfile +15 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/Guardfile +16 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/History +303 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/MIT-LICENSE +20 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/README.md +79 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/Rakefile +15 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/bin/httparty +114 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/cucumber.yml +1 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/examples/aaws.rb +32 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/examples/basic.rb +32 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/examples/crack.rb +19 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/examples/custom_parsers.rb +67 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/examples/delicious.rb +37 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/examples/google.rb +16 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/examples/headers_and_user_agents.rb +6 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/examples/nokogiri_html_parser.rb +22 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/examples/rubyurl.rb +14 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/examples/tripit_sign_in.rb +33 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/examples/twitter.rb +31 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/examples/whoismyrep.rb +10 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/features/basic_authentication.feature +20 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/features/command_line.feature +7 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/features/deals_with_http_error_codes.feature +26 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/features/digest_authentication.feature +20 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/features/handles_compressed_responses.feature +19 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/features/handles_multiple_formats.feature +34 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/features/steps/env.rb +22 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/features/steps/httparty_response_steps.rb +40 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/features/steps/httparty_steps.rb +27 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/features/steps/mongrel_helper.rb +94 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/features/steps/remote_service_steps.rb +69 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/features/supports_redirection.feature +22 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/features/supports_timeout_option.feature +13 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/httparty.gemspec +24 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/lib/httparty/connection_adapter.rb +134 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/lib/httparty/cookie_hash.rb +22 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/lib/httparty/core_extensions.rb +32 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/lib/httparty/exceptions.rb +26 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/lib/httparty/hash_conversions.rb +51 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/lib/httparty/module_inheritable_attributes.rb +56 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/lib/httparty/net_digest_auth.rb +84 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/lib/httparty/parser.rb +139 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/lib/httparty/request.rb +250 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/lib/httparty/response/headers.rb +31 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/lib/httparty/response.rb +67 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/lib/httparty/version.rb +3 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/lib/httparty.rb +534 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/fixtures/delicious.xml +23 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/fixtures/empty.xml +0 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/fixtures/google.html +3 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/fixtures/ssl/generate.sh +29 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/fixtures/ssl/generated/1fe462c2.0 +16 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/fixtures/ssl/generated/bogushost.crt +13 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/fixtures/ssl/generated/ca.crt +16 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/fixtures/ssl/generated/ca.key +15 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/fixtures/ssl/generated/selfsigned.crt +14 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/fixtures/ssl/generated/server.crt +13 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/fixtures/ssl/generated/server.key +15 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/fixtures/ssl/openssl-exts.cnf +9 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/fixtures/twitter.json +1 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/fixtures/twitter.xml +403 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/fixtures/undefined_method_add_node_for_nil.xml +2 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/httparty/connection_adapter_spec.rb +223 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/httparty/cookie_hash_spec.rb +76 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/httparty/net_digest_auth_spec.rb +115 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/httparty/parser_spec.rb +166 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/httparty/request_spec.rb +514 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/httparty/response_spec.rb +221 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/httparty/ssl_spec.rb +62 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/httparty_spec.rb +733 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/spec.opts +2 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/spec_helper.rb +30 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/support/ssl_test_helper.rb +47 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/support/ssl_test_server.rb +80 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/spec/support/stub_response.rb +43 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/website/css/common.css +47 -0
- data/vendor/bundle/ruby/2.0.0/gems/httparty-0.11.0/website/index.html +73 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/.document +5 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/.rspec +2 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/.travis.yml +16 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/.yardopts +6 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/CHANGELOG.md +185 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/CONTRIBUTING.md +46 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/Gemfile +30 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/LICENSE.md +20 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/README.md +108 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/Rakefile +25 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/lib/multi_json/adapter.rb +57 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/lib/multi_json/adapters/gson.rb +19 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/lib/multi_json/adapters/jr_jackson.rb +19 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/lib/multi_json/adapters/json_common.rb +25 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/lib/multi_json/adapters/json_gem.rb +11 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/lib/multi_json/adapters/json_pure.rb +11 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/lib/multi_json/adapters/nsjsonserialization.rb +34 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/lib/multi_json/adapters/oj.rb +24 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/lib/multi_json/adapters/ok_json.rb +24 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/lib/multi_json/adapters/yajl.rb +19 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/lib/multi_json/convertible_hash_keys.rb +43 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/lib/multi_json/load_error.rb +11 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/lib/multi_json/options.rb +48 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/lib/multi_json/vendor/okjson.rb +606 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/lib/multi_json/version.rb +20 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/lib/multi_json.rb +159 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/multi_json.gemspec +22 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/spec/gson_adapter_spec.rb +10 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/spec/jr_jackson_adapter_spec.rb +10 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/spec/json_gem_adapter_spec.rb +9 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/spec/json_pure_adapter_spec.rb +9 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/spec/multi_json_spec.rb +193 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/spec/nsjsonserialization_adapter_spec.rb +10 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/spec/oj_adapter_spec.rb +10 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/spec/ok_json_adapter_spec.rb +7 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/spec/shared/adapter.rb +230 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/spec/shared/json_common_adapter.rb +30 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/spec/shared/options.rb +119 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/spec/spec_helper.rb +73 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_json-1.8.2/spec/yajl_adapter_spec.rb +10 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_xml-0.5.5/.yardopts +8 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_xml-0.5.5/CHANGELOG.md +93 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_xml-0.5.5/CONTRIBUTING.md +49 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_xml-0.5.5/LICENSE.md +20 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_xml-0.5.5/README.md +97 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_xml-0.5.5/Rakefile +21 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_xml-0.5.5/lib/multi_xml/parsers/libxml.rb +30 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_xml-0.5.5/lib/multi_xml/parsers/libxml2_parser.rb +74 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_xml-0.5.5/lib/multi_xml/parsers/nokogiri.rb +32 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_xml-0.5.5/lib/multi_xml/parsers/ox.rb +97 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_xml-0.5.5/lib/multi_xml/parsers/rexml.rb +113 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_xml-0.5.5/lib/multi_xml/version.rb +3 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_xml-0.5.5/lib/multi_xml.rb +296 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_xml-0.5.5/multi_xml.gemspec +24 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_xml-0.5.5/spec/helper.rb +17 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_xml-0.5.5/spec/multi_xml_spec.rb +43 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_xml-0.5.5/spec/parser_shared_example.rb +694 -0
- data/vendor/bundle/ruby/2.0.0/gems/multi_xml-0.5.5/spec/speed.rb +63 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/.gemtest +0 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/CHANGES +530 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/MIT-LICENSE +21 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/README.rdoc +187 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/Rakefile +374 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/TODO +21 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/bin/rake +33 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/install.rb +80 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/alt_system.rb +108 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/application.rb +728 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/backtrace.rb +20 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/clean.rb +55 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/cloneable.rb +16 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/contrib/compositepublisher.rb +21 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/contrib/ftptools.rb +139 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/contrib/publisher.rb +73 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/contrib/rubyforgepublisher.rb +16 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/contrib/sshpublisher.rb +50 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/contrib/sys.rb +2 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/default_loader.rb +10 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/dsl_definition.rb +157 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/early_time.rb +18 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/ext/core.rb +28 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/ext/module.rb +0 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/ext/string.rb +166 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/ext/time.rb +15 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/file_creation_task.rb +24 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/file_list.rb +416 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/file_task.rb +46 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/file_utils.rb +116 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/file_utils_ext.rb +144 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/gempackagetask.rb +2 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/invocation_chain.rb +57 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/invocation_exception_mixin.rb +16 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/linked_list.rb +103 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/loaders/makefile.rb +40 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/multi_task.rb +13 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/name_space.rb +25 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/packagetask.rb +190 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/pathmap.rb +1 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/phony.rb +15 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/private_reader.rb +20 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/promise.rb +99 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/pseudo_status.rb +29 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/rake_module.rb +37 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/rake_test_loader.rb +22 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/rdoctask.rb +2 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/ruby182_test_unit_fix.rb +27 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/rule_recursion_overflow_error.rb +20 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/runtest.rb +22 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/scope.rb +42 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/task.rb +378 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/task_argument_error.rb +7 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/task_arguments.rb +89 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/task_manager.rb +297 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/tasklib.rb +22 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/testtask.rb +201 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/thread_history_display.rb +48 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/thread_pool.rb +161 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/trace_output.rb +22 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/version.rb +9 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake/win32.rb +56 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/lib/rake.rb +73 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/file_creation.rb +34 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/helper.rb +128 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/support/rakefile_definitions.rb +444 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/support/ruby_runner.rb +33 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_private_reader.rb +42 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake.rb +40 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_application.rb +517 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_application_options.rb +457 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_backtrace.rb +113 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_clean.rb +46 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_definitions.rb +79 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_directory_task.rb +57 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_dsl.rb +40 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_early_time.rb +31 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_extension.rb +59 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_file_creation_task.rb +56 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_file_list.rb +627 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_file_list_path_map.rb +8 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_file_task.rb +122 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_file_utils.rb +309 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_ftp_file.rb +74 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_functional.rb +466 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_invocation_chain.rb +64 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_linked_list.rb +84 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_makefile_loader.rb +46 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_multi_task.rb +58 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_name_space.rb +43 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_package_task.rb +79 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_path_map.rb +168 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_path_map_explode.rb +34 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_path_map_partial.rb +18 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_pseudo_status.rb +21 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_rake_test_loader.rb +20 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_reduce_compat.rb +26 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_require.rb +40 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_rules.rb +362 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_scope.rb +44 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_task.rb +376 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_task_argument_parsing.rb +103 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_task_arguments.rb +121 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_task_lib.rb +9 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_task_manager.rb +158 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_task_manager_argument_resolution.rb +19 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_task_with_arguments.rb +171 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_test_task.rb +119 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_thread_pool.rb +142 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_top_level_functions.rb +71 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_rake_win32.rb +72 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_thread_history_display.rb +101 -0
- data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.1/test/test_trace_output.rb +52 -0
- data/vendor/bundle/ruby/2.0.0/specifications/httparty-0.11.0.gemspec +34 -0
- data/vendor/bundle/ruby/2.0.0/specifications/multi_json-1.8.2.gemspec +30 -0
- data/vendor/bundle/ruby/2.0.0/specifications/multi_xml-0.5.5.gemspec +30 -0
- data/vendor/bundle/ruby/2.0.0/specifications/rake-10.1.1.gemspec +34 -0
- metadata +262 -2
@@ -0,0 +1,159 @@
|
|
1
|
+
require 'multi_json/options'
|
2
|
+
require 'multi_json/version'
|
3
|
+
require 'multi_json/load_error'
|
4
|
+
|
5
|
+
module MultiJson
|
6
|
+
include Options
|
7
|
+
extend self
|
8
|
+
|
9
|
+
class << self
|
10
|
+
def cached_options
|
11
|
+
@cached_options ||= {}
|
12
|
+
end
|
13
|
+
|
14
|
+
def reset_cached_options!
|
15
|
+
@cached_options = {}
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# Since `default_options` is deprecated, the
|
20
|
+
# reader is aliased to `dump_options` and the
|
21
|
+
# writer sets both `dump_options` and `load_options`
|
22
|
+
alias default_options dump_options
|
23
|
+
|
24
|
+
def default_options=(value)
|
25
|
+
Kernel.warn "MultiJson.default_options setter is deprecated\n" +
|
26
|
+
"Use MultiJson.load_options and MultiJson.dump_options instead"
|
27
|
+
|
28
|
+
self.load_options = self.dump_options = value
|
29
|
+
end
|
30
|
+
|
31
|
+
ALIASES = { 'jrjackson' => :jr_jackson }
|
32
|
+
|
33
|
+
REQUIREMENT_MAP = [
|
34
|
+
['oj', :oj],
|
35
|
+
['yajl', :yajl],
|
36
|
+
['jrjackson', :jr_jackson],
|
37
|
+
['json/ext', :json_gem],
|
38
|
+
['gson', :gson],
|
39
|
+
['json/pure', :json_pure]
|
40
|
+
]
|
41
|
+
|
42
|
+
# The default adapter based on what you currently
|
43
|
+
# have loaded and installed. First checks to see
|
44
|
+
# if any adapters are already loaded, then checks
|
45
|
+
# to see which are installed if none are loaded.
|
46
|
+
def default_adapter
|
47
|
+
return :oj if defined?(::Oj)
|
48
|
+
return :yajl if defined?(::Yajl)
|
49
|
+
return :jr_jackson if defined?(::JrJackson)
|
50
|
+
return :json_gem if defined?(::JSON::JSON_LOADED)
|
51
|
+
return :gson if defined?(::Gson)
|
52
|
+
|
53
|
+
REQUIREMENT_MAP.each do |library, adapter|
|
54
|
+
begin
|
55
|
+
require library
|
56
|
+
return adapter
|
57
|
+
rescue ::LoadError
|
58
|
+
next
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
Kernel.warn '[WARNING] MultiJson is using the default adapter (ok_json).' +
|
63
|
+
'We recommend loading a different JSON library to improve performance.'
|
64
|
+
|
65
|
+
:ok_json
|
66
|
+
end
|
67
|
+
alias default_engine default_adapter
|
68
|
+
|
69
|
+
# Get the current adapter class.
|
70
|
+
def adapter
|
71
|
+
return @adapter if defined?(@adapter) && @adapter
|
72
|
+
|
73
|
+
self.use nil # load default adapter
|
74
|
+
|
75
|
+
@adapter
|
76
|
+
end
|
77
|
+
alias engine adapter
|
78
|
+
|
79
|
+
# Set the JSON parser utilizing a symbol, string, or class.
|
80
|
+
# Supported by default are:
|
81
|
+
#
|
82
|
+
# * <tt>:oj</tt>
|
83
|
+
# * <tt>:json_gem</tt>
|
84
|
+
# * <tt>:json_pure</tt>
|
85
|
+
# * <tt>:ok_json</tt>
|
86
|
+
# * <tt>:yajl</tt>
|
87
|
+
# * <tt>:nsjsonserialization</tt> (MacRuby only)
|
88
|
+
# * <tt>:gson</tt> (JRuby only)
|
89
|
+
# * <tt>:jr_jackson</tt> (JRuby only)
|
90
|
+
def use(new_adapter)
|
91
|
+
@adapter = load_adapter(new_adapter)
|
92
|
+
end
|
93
|
+
alias adapter= use
|
94
|
+
alias engine= use
|
95
|
+
|
96
|
+
def load_adapter(new_adapter)
|
97
|
+
case new_adapter
|
98
|
+
when String, Symbol
|
99
|
+
load_adapter_from_string_name new_adapter.to_s
|
100
|
+
when NilClass, FalseClass
|
101
|
+
load_adapter default_adapter
|
102
|
+
when Class, Module
|
103
|
+
new_adapter
|
104
|
+
else
|
105
|
+
raise ::LoadError
|
106
|
+
end
|
107
|
+
rescue ::LoadError
|
108
|
+
raise ArgumentError, 'Did not recognize your adapter specification.'
|
109
|
+
end
|
110
|
+
|
111
|
+
# Decode a JSON string into Ruby.
|
112
|
+
#
|
113
|
+
# <b>Options</b>
|
114
|
+
#
|
115
|
+
# <tt>:symbolize_keys</tt> :: If true, will use symbols instead of strings for the keys.
|
116
|
+
# <tt>:adapter</tt> :: If set, the selected adapter will be used for this call.
|
117
|
+
def load(string, options={})
|
118
|
+
adapter = current_adapter(options)
|
119
|
+
begin
|
120
|
+
adapter.load(string, options)
|
121
|
+
rescue adapter::ParseError => exception
|
122
|
+
raise LoadError.new(exception.message, exception.backtrace, string)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
alias decode load
|
126
|
+
|
127
|
+
def current_adapter(options={})
|
128
|
+
if new_adapter = options[:adapter]
|
129
|
+
load_adapter(new_adapter)
|
130
|
+
else
|
131
|
+
adapter
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
# Encodes a Ruby object as JSON.
|
136
|
+
def dump(object, options={})
|
137
|
+
current_adapter(options).dump(object, options)
|
138
|
+
end
|
139
|
+
alias encode dump
|
140
|
+
|
141
|
+
# Executes passed block using specified adapter.
|
142
|
+
def with_adapter(new_adapter)
|
143
|
+
old_adapter, self.adapter = adapter, new_adapter
|
144
|
+
yield
|
145
|
+
ensure
|
146
|
+
self.adapter = old_adapter
|
147
|
+
end
|
148
|
+
alias with_engine with_adapter
|
149
|
+
|
150
|
+
private
|
151
|
+
|
152
|
+
def load_adapter_from_string_name(name)
|
153
|
+
name = ALIASES.fetch(name, name)
|
154
|
+
require "multi_json/adapters/#{name.downcase}"
|
155
|
+
klass_name = name.to_s.split('_').map(&:capitalize) * ''
|
156
|
+
MultiJson::Adapters.const_get(klass_name)
|
157
|
+
end
|
158
|
+
|
159
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'multi_json/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.add_development_dependency 'bundler', '~> 1.0'
|
8
|
+
spec.authors = ["Michael Bleigh", "Josh Kalderimis", "Erik Michaels-Ober", "Pavel Pravosud"]
|
9
|
+
spec.cert_chain = %w(certs/rwz.pem)
|
10
|
+
spec.description = %q{A common interface to multiple JSON libraries, including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem, NSJSONSerialization, gson.rb, JrJackson, and OkJson.}
|
11
|
+
spec.email = ['michael@intridea.com', 'josh.kalderimis@gmail.com', 'sferik@gmail.com']
|
12
|
+
spec.files = Dir['.yardopts', 'CHANGELOG.md', 'CONTRIBUTING.md', 'LICENSE.md', 'README.md', 'Rakefile', 'multi_json.gemspec', 'Gemfile', '.document', '.rspec', '.travis.yml' ,'spec/**/*', 'lib/**/*']
|
13
|
+
spec.homepage = 'http://github.com/intridea/multi_json'
|
14
|
+
spec.licenses = ['MIT']
|
15
|
+
spec.name = 'multi_json'
|
16
|
+
spec.require_paths = ['lib']
|
17
|
+
spec.required_rubygems_version = '>= 1.3.5'
|
18
|
+
spec.signing_key = File.expand_path("~/.gem/private_key.pem") if $0 =~ /gem\z/
|
19
|
+
spec.summary = %q{A common interface to multiple JSON libraries.}
|
20
|
+
spec.test_files = Dir['spec/**/*']
|
21
|
+
spec.version = MultiJson::Version
|
22
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'shared/adapter'
|
3
|
+
require 'shared/json_common_adapter'
|
4
|
+
require 'multi_json/adapters/json_gem'
|
5
|
+
|
6
|
+
describe MultiJson::Adapters::JsonGem do
|
7
|
+
it_behaves_like 'an adapter', described_class
|
8
|
+
it_behaves_like 'JSON-like adapter', described_class
|
9
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'shared/adapter'
|
3
|
+
require 'shared/json_common_adapter'
|
4
|
+
require 'multi_json/adapters/json_pure'
|
5
|
+
|
6
|
+
describe MultiJson::Adapters::JsonPure do
|
7
|
+
it_behaves_like 'an adapter', described_class
|
8
|
+
it_behaves_like 'JSON-like adapter', described_class
|
9
|
+
end
|
@@ -0,0 +1,193 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'shared/options'
|
3
|
+
|
4
|
+
describe MultiJson do
|
5
|
+
before(:all) do
|
6
|
+
# make sure all available libs are required
|
7
|
+
MultiJson::REQUIREMENT_MAP.each do |library, adapter|
|
8
|
+
begin
|
9
|
+
require library
|
10
|
+
rescue ::LoadError
|
11
|
+
next
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'when no other json implementations are available' do
|
17
|
+
around do |example|
|
18
|
+
simulate_no_adapters{ example.call }
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'defaults to ok_json if no other json implementions are available' do
|
22
|
+
silence_warnings do
|
23
|
+
expect(MultiJson.default_adapter).to eq(:ok_json)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'prints a warning' do
|
28
|
+
expect(Kernel).to receive(:warn).with(/warning/i)
|
29
|
+
MultiJson.default_adapter
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'caching' do
|
34
|
+
before{ MultiJson.use adapter }
|
35
|
+
let(:adapter){ MultiJson::Adapters::JsonGem }
|
36
|
+
let(:json_string){ '{"abc":"def"}' }
|
37
|
+
|
38
|
+
it 'busts caches on global options change' do
|
39
|
+
MultiJson.load_options = { :symbolize_keys => true }
|
40
|
+
expect(MultiJson.load(json_string)).to eq(:abc => 'def')
|
41
|
+
MultiJson.load_options = nil
|
42
|
+
expect(MultiJson.load(json_string)).to eq('abc' => 'def')
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'busts caches on per-adapter options change' do
|
46
|
+
adapter.load_options = { :symbolize_keys => true }
|
47
|
+
expect(MultiJson.load(json_string)).to eq(:abc => 'def')
|
48
|
+
adapter.load_options = nil
|
49
|
+
expect(MultiJson.load(json_string)).to eq('abc' => 'def')
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'defaults to the best available gem' do
|
54
|
+
# Clear cache variable already set by previous tests
|
55
|
+
MultiJson.send(:remove_instance_variable, :@adapter) if MultiJson.instance_variable_defined?(:@adapter)
|
56
|
+
|
57
|
+
if jruby?
|
58
|
+
expect(MultiJson.adapter.to_s).to eq('MultiJson::Adapters::JrJackson')
|
59
|
+
else
|
60
|
+
expect(MultiJson.adapter.to_s).to eq('MultiJson::Adapters::Oj')
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'looks for adapter even if @adapter variable is nil' do
|
65
|
+
MultiJson.send(:instance_variable_set, :@adapter, nil)
|
66
|
+
expect(MultiJson).to receive(:default_adapter).and_return(:ok_json)
|
67
|
+
expect(MultiJson.adapter).to eq(MultiJson::Adapters::OkJson)
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'is settable via a symbol' do
|
71
|
+
MultiJson.use :json_gem
|
72
|
+
expect(MultiJson.adapter).to eq(MultiJson::Adapters::JsonGem)
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'is settable via a case-insensitive string' do
|
76
|
+
MultiJson.use 'Json_Gem'
|
77
|
+
expect(MultiJson.adapter).to eq(MultiJson::Adapters::JsonGem)
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'is settable via a class' do
|
81
|
+
adapter = Class.new
|
82
|
+
MultiJson.use adapter
|
83
|
+
expect(MultiJson.adapter).to eq(adapter)
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'is settable via a module' do
|
87
|
+
adapter = Module.new
|
88
|
+
MultiJson.use adapter
|
89
|
+
expect(MultiJson.adapter).to eq(adapter)
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'throws ArgumentError on bad input' do
|
93
|
+
expect{ MultiJson.use 'bad adapter' }.to raise_error(ArgumentError)
|
94
|
+
end
|
95
|
+
|
96
|
+
context 'using one-shot parser' do
|
97
|
+
before do
|
98
|
+
expect(MultiJson::Adapters::JsonPure).to receive(:dump).once.and_return('dump_something')
|
99
|
+
expect(MultiJson::Adapters::JsonPure).to receive(:load).once.and_return('load_something')
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'should use the defined parser just for the call' do
|
103
|
+
MultiJson.use :json_gem
|
104
|
+
expect(MultiJson.dump('', :adapter => :json_pure)).to eq('dump_something')
|
105
|
+
expect(MultiJson.load('', :adapter => :json_pure)).to eq('load_something')
|
106
|
+
expect(MultiJson.adapter).to eq(MultiJson::Adapters::JsonGem)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
it 'can set adapter for a block' do
|
111
|
+
MultiJson.use :ok_json
|
112
|
+
MultiJson.with_adapter(:json_pure) do
|
113
|
+
MultiJson.with_engine(:json_gem) do
|
114
|
+
expect(MultiJson.adapter).to eq(MultiJson::Adapters::JsonGem)
|
115
|
+
end
|
116
|
+
expect(MultiJson.adapter).to eq(MultiJson::Adapters::JsonPure)
|
117
|
+
end
|
118
|
+
expect(MultiJson.adapter).to eq(MultiJson::Adapters::OkJson)
|
119
|
+
end
|
120
|
+
|
121
|
+
it 'JSON gem does not create symbols on parse' do
|
122
|
+
MultiJson.with_engine(:json_gem) do
|
123
|
+
MultiJson.load('{"json_class":"ZOMG"}') rescue nil
|
124
|
+
|
125
|
+
expect{
|
126
|
+
MultiJson.load('{"json_class":"OMG"}') rescue nil
|
127
|
+
}.to_not change{Symbol.all_symbols.count}
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
unless jruby?
|
132
|
+
it 'Oj does not create symbols on parse' do
|
133
|
+
MultiJson.with_engine(:oj) do
|
134
|
+
MultiJson.load('{"json_class":"ZOMG"}') rescue nil
|
135
|
+
|
136
|
+
expect{
|
137
|
+
MultiJson.load('{"json_class":"OMG"}') rescue nil
|
138
|
+
}.to_not change{Symbol.all_symbols.count}
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
context 'with Oj.default_settings' do
|
143
|
+
around do |example|
|
144
|
+
options = Oj.default_options
|
145
|
+
Oj.default_options = { :symbol_keys => true }
|
146
|
+
MultiJson.with_engine(:oj){ example.call }
|
147
|
+
Oj.default_options = options
|
148
|
+
end
|
149
|
+
|
150
|
+
it 'ignores global settings' do
|
151
|
+
MultiJson.with_engine(:oj) do
|
152
|
+
example = '{"a": 1, "b": 2}'
|
153
|
+
expected = { 'a' => 1, 'b' => 2 }
|
154
|
+
expect(MultiJson.load(example)).to eq(expected)
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
describe 'default options' do
|
161
|
+
after(:all){ MultiJson.load_options = MultiJson.dump_options = nil }
|
162
|
+
|
163
|
+
it 'is deprecated' do
|
164
|
+
expect(Kernel).to receive(:warn).with(/deprecated/i)
|
165
|
+
silence_warnings{ MultiJson.default_options = {:foo => 'bar'} }
|
166
|
+
end
|
167
|
+
|
168
|
+
it 'sets both load and dump options' do
|
169
|
+
expect(MultiJson).to receive(:dump_options=).with(:foo => 'bar')
|
170
|
+
expect(MultiJson).to receive(:load_options=).with(:foo => 'bar')
|
171
|
+
silence_warnings{ MultiJson.default_options = {:foo => 'bar'} }
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
it_behaves_like 'has options', MultiJson
|
176
|
+
|
177
|
+
describe 'aliases' do
|
178
|
+
if jruby?
|
179
|
+
describe 'jrjackson' do
|
180
|
+
after{ expect(MultiJson.adapter).to eq(MultiJson::Adapters::JrJackson) }
|
181
|
+
|
182
|
+
it 'allows jrjackson alias as symbol' do
|
183
|
+
expect{ MultiJson.use :jrjackson }.not_to raise_error
|
184
|
+
end
|
185
|
+
|
186
|
+
it 'allows jrjackson alias as string' do
|
187
|
+
expect{ MultiJson.use 'jrjackson' }.not_to raise_error
|
188
|
+
end
|
189
|
+
|
190
|
+
end
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
@@ -0,0 +1,230 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'shared/options'
|
4
|
+
|
5
|
+
shared_examples_for 'an adapter' do |adapter|
|
6
|
+
|
7
|
+
before{ MultiJson.use adapter }
|
8
|
+
|
9
|
+
it_behaves_like 'has options', adapter
|
10
|
+
|
11
|
+
it 'does not modify argument hashes' do
|
12
|
+
options = { :symbolize_keys => true, :pretty => false, :adapter => :ok_json }
|
13
|
+
expect{MultiJson.load('{}', options)}.to_not change{options}
|
14
|
+
expect{MultiJson.dump([42], options)}.to_not change{options}
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '.dump' do
|
18
|
+
describe '#dump_options' do
|
19
|
+
before{ MultiJson.dump_options = MultiJson.adapter.dump_options = {} }
|
20
|
+
|
21
|
+
after do
|
22
|
+
expect(MultiJson.adapter.instance).to receive(:dump).with(1, :foo => 'bar', :fizz => 'buzz')
|
23
|
+
MultiJson.dump(1, :fizz => 'buzz')
|
24
|
+
MultiJson.dump_options = MultiJson.adapter.dump_options = nil
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'respects global dump options' do
|
28
|
+
MultiJson.dump_options = {:foo => 'bar'}
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'respects per-adapter dump options' do
|
32
|
+
MultiJson.adapter.dump_options = {:foo => 'bar'}
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'adapter-specific are overridden by global options' do
|
36
|
+
MultiJson.adapter.dump_options = {:foo => 'foo'}
|
37
|
+
MultiJson.dump_options = {:foo => 'bar'}
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'writes decodable JSON' do
|
42
|
+
[
|
43
|
+
{'abc' => 'def'},
|
44
|
+
[1, 2, 3, '4', true, false, nil]
|
45
|
+
].each do |example|
|
46
|
+
expect(MultiJson.load(MultiJson.dump(example))).to eq example
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
unless 'json_pure' == adapter || 'json_gem' == adapter
|
51
|
+
it 'dumps time in correct format' do
|
52
|
+
time = Time.at(1355218745).utc
|
53
|
+
|
54
|
+
dumped_json = MultiJson.dump(time)
|
55
|
+
expected = if RUBY_VERSION > '1.9'
|
56
|
+
'2012-12-11 09:39:05 UTC'
|
57
|
+
else
|
58
|
+
'Tue Dec 11 09:39:05 UTC 2012'
|
59
|
+
end
|
60
|
+
expect(MultiJson.load(dumped_json)).to eq expected
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'dumps symbol and fixnum keys as strings' do
|
65
|
+
[
|
66
|
+
[
|
67
|
+
{:foo => {:bar => 'baz'}},
|
68
|
+
{'foo' => {'bar' => 'baz'}},
|
69
|
+
],
|
70
|
+
[
|
71
|
+
[{:foo => {:bar => 'baz'}}],
|
72
|
+
[{'foo' => {'bar' => 'baz'}}],
|
73
|
+
],
|
74
|
+
[
|
75
|
+
{:foo => [{:bar => 'baz'}]},
|
76
|
+
{'foo' => [{'bar' => 'baz'}]},
|
77
|
+
],
|
78
|
+
[
|
79
|
+
{1 => {2 => {3 => 'bar'}}},
|
80
|
+
{'1' => {'2' => {'3' => 'bar'}}}
|
81
|
+
]
|
82
|
+
].each do |example, expected|
|
83
|
+
dumped_json = MultiJson.dump(example)
|
84
|
+
expect(MultiJson.load(dumped_json)).to eq expected
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'dumps rootless JSON' do
|
89
|
+
expect(MultiJson.dump('random rootless string')).to eq '"random rootless string"'
|
90
|
+
expect(MultiJson.dump(123)).to eq '123'
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'passes options to the adapter' do
|
94
|
+
expect(MultiJson.adapter).to receive(:dump).with('foo', {:bar => :baz})
|
95
|
+
MultiJson.dump('foo', :bar => :baz)
|
96
|
+
end
|
97
|
+
|
98
|
+
# This behavior is currently not supported by gson.rb
|
99
|
+
# See discussion at https://github.com/intridea/multi_json/pull/71
|
100
|
+
unless adapter.name == 'MultiJson::Adapters::Gson'
|
101
|
+
it 'dumps custom objects that implement to_json' do
|
102
|
+
klass = Class.new do
|
103
|
+
def to_json(*)
|
104
|
+
'"foobar"'
|
105
|
+
end
|
106
|
+
end
|
107
|
+
expect(MultiJson.dump(klass.new)).to eq '"foobar"'
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
it 'allows to dump JSON values' do
|
112
|
+
expect(MultiJson.dump(42)).to eq '42'
|
113
|
+
end
|
114
|
+
|
115
|
+
it 'allows to dump JSON with UTF-8 characters' do
|
116
|
+
expect(MultiJson.dump('color' => 'żółć')).to eq('{"color":"żółć"}')
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
describe '.load' do
|
121
|
+
describe '#load_options' do
|
122
|
+
before{ MultiJson.load_options = MultiJson.adapter.load_options = {} }
|
123
|
+
|
124
|
+
after do
|
125
|
+
expect(MultiJson.adapter.instance).to receive(:load).with('1', :foo => 'bar', :fizz => 'buzz')
|
126
|
+
MultiJson.load('1', :fizz => 'buzz')
|
127
|
+
MultiJson.load_options = MultiJson.adapter.load_options = nil
|
128
|
+
end
|
129
|
+
|
130
|
+
it 'respects global load options' do
|
131
|
+
MultiJson.load_options = {:foo => 'bar'}
|
132
|
+
end
|
133
|
+
|
134
|
+
it 'respects per-adapter load options' do
|
135
|
+
MultiJson.adapter.load_options = {:foo => 'bar'}
|
136
|
+
end
|
137
|
+
|
138
|
+
it 'adapter-specific are overridden by global options' do
|
139
|
+
MultiJson.adapter.load_options = {:foo => 'foo'}
|
140
|
+
MultiJson.load_options = {:foo => 'bar'}
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
it 'does not modify input' do
|
145
|
+
input = %Q{\n\n {"foo":"bar"} \n\n\t}
|
146
|
+
expect{
|
147
|
+
MultiJson.load(input)
|
148
|
+
}.to_not change{ input }
|
149
|
+
end
|
150
|
+
|
151
|
+
# Ruby 1.8 doesn't support String encodings
|
152
|
+
if RUBY_VERSION > '1.9'
|
153
|
+
it 'does not modify input encoding' do
|
154
|
+
|
155
|
+
input = '[123]'
|
156
|
+
input.force_encoding('iso-8859-1')
|
157
|
+
|
158
|
+
expect{
|
159
|
+
MultiJson.load(input)
|
160
|
+
}.to_not change{ input.encoding }
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
it 'properly loads valid JSON' do
|
165
|
+
expect(MultiJson.load('{"abc":"def"}')).to eq('abc' => 'def')
|
166
|
+
end
|
167
|
+
|
168
|
+
it 'raises MultiJson::LoadError on blank input or invalid input' do
|
169
|
+
[nil, '{"abc"}', ' ', "\t\t\t", "\n", "\x82\xAC\xEF"].each do |input|
|
170
|
+
expect{MultiJson.load(input)}.to raise_error(MultiJson::LoadError)
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
it 'raises MultiJson::LoadError with data on invalid JSON' do
|
175
|
+
data = '{invalid}'
|
176
|
+
begin
|
177
|
+
MultiJson.load(data)
|
178
|
+
rescue MultiJson::LoadError => le
|
179
|
+
expect(le.data).to eq data
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
it 'catches MultiJson::DecodeError for legacy support' do
|
184
|
+
data = '{invalid}'
|
185
|
+
begin
|
186
|
+
MultiJson.load(data)
|
187
|
+
rescue MultiJson::DecodeError => de
|
188
|
+
expect(de.data).to eq data
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
it 'stringifys symbol keys when encoding' do
|
193
|
+
dumped_json = MultiJson.dump(:a => 1, :b => {:c => 2})
|
194
|
+
loaded_json = MultiJson.load(dumped_json)
|
195
|
+
expect(loaded_json).to eq('a' => 1, 'b' => {'c' => 2})
|
196
|
+
end
|
197
|
+
|
198
|
+
it 'properly loads valid JSON in StringIOs' do
|
199
|
+
json = StringIO.new('{"abc":"def"}')
|
200
|
+
expect(MultiJson.load(json)).to eq('abc' => 'def')
|
201
|
+
end
|
202
|
+
|
203
|
+
it 'allows for symbolization of keys' do
|
204
|
+
[
|
205
|
+
[
|
206
|
+
'{"abc":{"def":"hgi"}}',
|
207
|
+
{:abc => {:def => 'hgi'}},
|
208
|
+
],
|
209
|
+
[
|
210
|
+
'[{"abc":{"def":"hgi"}}]',
|
211
|
+
[{:abc => {:def => 'hgi'}}],
|
212
|
+
],
|
213
|
+
[
|
214
|
+
'{"abc":[{"def":"hgi"}]}',
|
215
|
+
{:abc => [{:def => 'hgi'}]},
|
216
|
+
],
|
217
|
+
].each do |example, expected|
|
218
|
+
expect(MultiJson.load(example, :symbolize_keys => true)).to eq expected
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
222
|
+
it 'allows to load JSON values' do
|
223
|
+
expect(MultiJson.load('42')).to eq 42
|
224
|
+
end
|
225
|
+
|
226
|
+
it 'allows to load JSON with UTF-8 characters' do
|
227
|
+
expect(MultiJson.load('{"color":"żółć"}')).to eq('color' => 'żółć')
|
228
|
+
end
|
229
|
+
end
|
230
|
+
end
|