summaryrefslogtreecommitdiff
path: root/ext/java/PsychLibrary.java
diff options
context:
space:
mode:
Diffstat (limited to 'ext/java/PsychLibrary.java')
-rw-r--r--ext/java/PsychLibrary.java39
1 files changed, 29 insertions, 10 deletions
diff --git a/ext/java/PsychLibrary.java b/ext/java/PsychLibrary.java
index 864a4f4..2d2141b 100644
--- a/ext/java/PsychLibrary.java
+++ b/ext/java/PsychLibrary.java
@@ -1,10 +1,10 @@
/***** BEGIN LICENSE BLOCK *****
- * Version: CPL 1.0/GPL 2.0/LGPL 2.1
+ * Version: EPL 1.0/GPL 2.0/LGPL 2.1
*
- * The contents of this file are subject to the Common Public
+ * The contents of this file are subject to the Eclipse Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
- * the License at http://www.eclipse.org/legal/cpl-v10.html
+ * the License at http://www.eclipse.org/legal/epl-v10.html
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
@@ -19,14 +19,18 @@
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the CPL, indicate your
+ * use your version of this file under the terms of the EPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
- * the terms of any one of the CPL, the GPL or the LGPL.
+ * the terms of any one of the EPL, the GPL or the LGPL.
***** END LICENSE BLOCK *****/
-package psych;
+package org.jruby.ext.psych;
+import org.jcodings.Encoding;
+import org.jcodings.specific.UTF16BEEncoding;
+import org.jcodings.specific.UTF16LEEncoding;
+import org.jcodings.specific.UTF8Encoding;
import org.jruby.Ruby;
import org.jruby.RubyArray;
import org.jruby.RubyModule;
@@ -38,16 +42,18 @@ import org.jruby.runtime.builtin.IRubyObject;
import org.jruby.runtime.load.Library;
public class PsychLibrary implements Library {
+ // NOTE: we add the last .0 for format compat with libyaml version numbers
+ // TODO: This should always reflect the SnakeYAML version
+ private static final String SNAKEYAML_VERSION = "1.13.0";
public void load(final Ruby runtime, boolean wrap) {
RubyModule psych = runtime.defineModule("Psych");
- RubyString version = runtime.newString("0.1.4");
+ RubyString version = runtime.newString(SNAKEYAML_VERSION);
version.setFrozen(true);
- final RubyArray versionElements = runtime.newArray(runtime.newFixnum(0), runtime.newFixnum(1), runtime.newFixnum(4));
+ final RubyArray versionElements = runtime.newArray(runtime.newFixnum(1), runtime.newFixnum(13), runtime.newFixnum(0));
versionElements.setFrozen(true);
-
- psych.setConstant("LIBYAML_VERSION", runtime.newString("0.1.4"));
+
psych.getSingletonClass().addMethod("libyaml_version", new JavaMethodZero(psych, Visibility.PUBLIC) {
@Override
public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name) {
@@ -60,4 +66,17 @@ public class PsychLibrary implements Library {
PsychToRuby.initPsychToRuby(runtime, psych);
PsychYamlTree.initPsychYamlTree(runtime, psych);
}
+
+ public enum YAMLEncoding {
+ YAML_ANY_ENCODING(UTF8Encoding.INSTANCE),
+ YAML_UTF8_ENCODING(UTF8Encoding.INSTANCE),
+ YAML_UTF16LE_ENCODING(UTF16LEEncoding.INSTANCE),
+ YAML_UTF16BE_ENCODING(UTF16BEEncoding.INSTANCE);
+
+ YAMLEncoding(Encoding encoding) {
+ this.encoding = encoding;
+ }
+
+ public final Encoding encoding;
+ }
}