summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Oliver Nutter <headius@headius.com>2023-01-13 09:50:17 -0600
committerCharles Oliver Nutter <headius@headius.com>2023-01-13 10:10:08 -0600
commit63428e345c6255a37a59c258dc0b7d1269ccf5f5 (patch)
tree944b1817bb509dde0d8e5c76fac18dbec5030983
parentd772d8a94d4400c88f06f757fc448d40755c09a3 (diff)
downloadpsych-63428e345c6255a37a59c258dc0b7d1269ccf5f5.tar.gz
Fix up spec version handling
-rw-r--r--ext/java/org/jruby/ext/psych/PsychEmitter.java11
-rw-r--r--ext/java/org/jruby/ext/psych/PsychParser.java9
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);