diff options
author | Florian Frank <flori@ping.de> | 2011-01-02 23:46:25 +0100 |
---|---|---|
committer | Florian Frank <flori@ping.de> | 2011-01-02 23:46:25 +0100 |
commit | 19bf4b3ea8869e7f1391f8c9de2a5fd4e3ddbc0b (patch) | |
tree | 1bce6e88780fec52afadb60135e4a12f7f8b5456 /java/src/json/ext/OptionsReader.java | |
parent | 3f97501c35f00dec5dbafad8389154c67b1e4542 (diff) | |
parent | 6dc725aee27ddf514593ffafc9a98e3b20e698d3 (diff) | |
download | json-19bf4b3ea8869e7f1391f8c9de2a5fd4e3ddbc0b.tar.gz |
Merge branch 'string-matching'
Conflicts:
.gitignore
Rakefile
tests/test_json_encoding.rb
Diffstat (limited to 'java/src/json/ext/OptionsReader.java')
-rw-r--r-- | java/src/json/ext/OptionsReader.java | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/java/src/json/ext/OptionsReader.java b/java/src/json/ext/OptionsReader.java index 3bc8d5f..018ace4 100644 --- a/java/src/json/ext/OptionsReader.java +++ b/java/src/json/ext/OptionsReader.java @@ -74,15 +74,20 @@ final class OptionsReader { * converted to string */ ByteList getString(String key) { + RubyString str = getString(key, null); + return str == null ? null : str.getByteList().dup(); + } + + RubyString getString(String key, RubyString defaultValue) { IRubyObject value = get(key); - if (value == null || !value.isTrue()) return null; + if (value == null || !value.isTrue()) return defaultValue; RubyString str = value.convertToString(); RuntimeInfo info = getRuntimeInfo(); if (info.encodingsSupported() && str.encoding(context) != info.utf8) { str = (RubyString)str.encode(context, info.utf8); } - return str.getByteList().dup(); + return str; } /** @@ -105,4 +110,10 @@ final class OptionsReader { throw runtime.newTypeError(key + " option must be a subclass of " + defaultValue); } + + public RubyHash getHash(String key) { + IRubyObject value = get(key); + if (value == null || value.isNil()) return new RubyHash(runtime); + return (RubyHash) value; + } } |