diff options
Diffstat (limited to 'ext')
-rw-r--r-- | ext/java/org/jruby/ext/psych/PsychEmitter.java | 11 | ||||
-rw-r--r-- | ext/java/org/jruby/ext/psych/PsychParser.java | 9 |
2 files changed, 13 insertions, 7 deletions
diff --git a/ext/java/org/jruby/ext/psych/PsychEmitter.java b/ext/java/org/jruby/ext/psych/PsychEmitter.java index 2ad1251..9180dcc 100644 --- a/ext/java/org/jruby/ext/psych/PsychEmitter.java +++ b/ext/java/org/jruby/ext/psych/PsychEmitter.java @@ -140,13 +140,18 @@ public class PsychEmitter extends RubyObject { TypeConverter.checkType(context, _version, arrayClass); RubyArray versionAry = _version.convertToArray(); + Optional<SpecVersion> specVersion; if (versionAry.size() == 2) { int versionInt0 = versionAry.eltInternal(0).convertToInteger().getIntValue(); int versionInt1 = versionAry.eltInternal(1).convertToInteger().getIntValue(); - if (versionInt0 != 1 || versionInt1 != 2) { -// throw runtime.newArgumentError("invalid YAML version: " + versionAry); + if (versionInt0 != 1) { + throw runtime.newArgumentError("invalid YAML version: " + versionAry); } + + specVersion = Optional.of(new SpecVersion(versionInt0, versionInt1)); + } else { + specVersion = Optional.empty(); } Map<String, String> tagsMap = new HashMap<>(); @@ -171,7 +176,7 @@ public class PsychEmitter extends RubyObject { } } - DocumentStartEvent event = new DocumentStartEvent(!implicitBool, Optional.empty(), tagsMap, NULL_MARK, NULL_MARK); + DocumentStartEvent event = new DocumentStartEvent(!implicitBool, specVersion, tagsMap, NULL_MARK, NULL_MARK); emit(context, event); return this; } diff --git a/ext/java/org/jruby/ext/psych/PsychParser.java b/ext/java/org/jruby/ext/psych/PsychParser.java index ccd843b..fd5e19c 100644 --- a/ext/java/org/jruby/ext/psych/PsychParser.java +++ b/ext/java/org/jruby/ext/psych/PsychParser.java @@ -305,10 +305,11 @@ public class PsychParser extends RubyObject { private void handleDocumentStart(ThreadContext context, DocumentStartEvent dse, IRubyObject handler) { Ruby runtime = context.runtime; - SpecVersion _version = dse.getSpecVersion().orElse(new SpecVersion(1, 2)); - IRubyObject version = _version == null ? - RubyArray.newArray(runtime) : - RubyArray.newArray(runtime, runtime.newFixnum(_version.getMajor()), runtime.newFixnum(_version.getMinor())); + + Optional<SpecVersion> specVersion = dse.getSpecVersion(); + IRubyObject version = specVersion.isPresent() ? + RubyArray.newArray(runtime, runtime.newFixnum(specVersion.get().getMajor()), runtime.newFixnum(specVersion.get().getMinor())) : + RubyArray.newEmptyArray(runtime); Map<String, String> tagsMap = dse.getTags(); RubyArray tags = RubyArray.newArray(runtime); |