add an example for custom int resolver
diff --git a/src/test/java/examples/resolver/CustomIntResolver.java b/src/test/java/examples/resolver/CustomIntResolver.java
new file mode 100644
index 0000000..9a15fda
--- /dev/null
+++ b/src/test/java/examples/resolver/CustomIntResolver.java
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) 2008-2010 Andrey Somov
+ *
+ * Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package examples.resolver;
+
+import java.util.regex.Pattern;
+
+import org.yaml.snakeyaml.nodes.Tag;
+import org.yaml.snakeyaml.resolver.Resolver;
+
+public class CustomIntResolver extends Resolver {
+ public static final Pattern PURE_INT = Pattern.compile("^[0-9]+$");
+
+ /*
+ * do not resolve int if it has underscores
+ */
+ protected void addImplicitResolvers() {
+ addImplicitResolver(Tag.BOOL, BOOL, "yYnNtTfFoO");
+ addImplicitResolver(Tag.FLOAT, FLOAT, "-+0123456789.");
+ // define simple int pattern
+ addImplicitResolver(Tag.INT, PURE_INT, "0123456789");
+ addImplicitResolver(Tag.MERGE, MERGE, "<");
+ addImplicitResolver(Tag.NULL, NULL, "~nN\0");
+ addImplicitResolver(Tag.NULL, EMPTY, null);
+ addImplicitResolver(Tag.TIMESTAMP, TIMESTAMP, "0123456789");
+ addImplicitResolver(Tag.VALUE, VALUE, "=");
+ }
+}
diff --git a/src/test/java/examples/resolver/CustomResolverTest.java b/src/test/java/examples/resolver/CustomResolverTest.java
index 868dd54..3211ee3 100644
--- a/src/test/java/examples/resolver/CustomResolverTest.java
+++ b/src/test/java/examples/resolver/CustomResolverTest.java
@@ -51,4 +51,18 @@
assertTrue(map2.toString(), map2.containsKey(new Double(1.0)));
}
+ public void testResolverSimpleInt() {
+ Map<Object, Object> map = new HashMap<Object, Object>();
+ map.put("run_ID", "2010_03_31_101");
+ Yaml yaml = new Yaml(new Loader(), new Dumper(new DumperOptions()), new CustomIntResolver());
+ String output = yaml.dump(map);
+ // load
+ assertEquals("{run_ID: 2010_03_31_101}\n", output);
+ Map<Object, Object> parsed = (Map<Object, Object>) yaml.load(output);
+ assertEquals(map, parsed);
+ // check standard resolver
+ assertEquals("Standard resolver should quote the string", "{run_ID: '2010_03_31_101'}\n",
+ new Yaml().dump(map));
+ }
+
}