An example added: how to dump multiline literal scalars
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 89f8d14..a5fd89b 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -8,10 +8,13 @@
<body>
<release version="1.10-SNAPSHOT" date="in Mercurial" description="Development">
<action dev="py4fun" type="add">
- Added example how to dump recursive object for issue 133 (2011-09-14)
+ An example added: how to dump multiline literal scalars (2011-10-04)
</action>
<action dev="py4fun" type="add">
- Added a test for issue 132 (2011-09-13)
+ An example added: how to dump recursive object for issue 133 (2011-09-14)
+ </action>
+ <action dev="py4fun" type="add">
+ A test added for issue 132 (2011-09-13)
</action>
<action dev="py4fun" type="update">
Finish 1.9 release (2011-08-15)
diff --git a/src/test/java/org/yaml/snakeyaml/emitter/EmitterMultiLineTest.java b/src/test/java/org/yaml/snakeyaml/emitter/EmitterMultiLineTest.java
index 3bc3662..1e42317 100644
--- a/src/test/java/org/yaml/snakeyaml/emitter/EmitterMultiLineTest.java
+++ b/src/test/java/org/yaml/snakeyaml/emitter/EmitterMultiLineTest.java
@@ -20,6 +20,8 @@
import junit.framework.TestCase;
+import org.yaml.snakeyaml.DumperOptions;
+import org.yaml.snakeyaml.DumperOptions.FlowStyle;
import org.yaml.snakeyaml.Yaml;
public class EmitterMultiLineTest extends TestCase {
@@ -35,14 +37,62 @@
assertEquals(plain, parsed);
}
- public void testWriteMultiLineLiteral() {
- String source = "a: 1\nb: |-\n mama\n mila\n ramu\n";
+ public void testWriteMultiLineLiteralNoChomping() {
+ String source = "a: 1\nb: |\n mama\n mila\n ramu\n";
// System.out.println("Source:\n" + source);
- Yaml yaml = new Yaml();
+ DumperOptions options = new MyOptions();
+ Yaml yaml = new Yaml(options);
+ @SuppressWarnings("unchecked")
+ Map<String, Object> parsed = (Map<String, Object>) yaml.load(source);
+ String value = (String) parsed.get("b");
+ // System.out.println(value);
+ assertEquals("mama\nmila\nramu\n", value);
+ String dumped = yaml.dump(parsed);
+ // System.out.println(dumped);
+ assertEquals("{a: 1, b: |\n mama\n mila\n ramu\n}\n", dumped);
+ }
+
+ public void testWriteMultiLineSingleQuotedInFlowContext() {
+ String source = "{a: 1, b: 'mama\n\n mila\n\n ramu'}\n";
+ // System.out.println("Source:\n" + source);
+ DumperOptions options = new DumperOptions();
+ options.setDefaultFlowStyle(FlowStyle.FLOW);
+ Yaml yaml = new Yaml(options);
@SuppressWarnings("unchecked")
Map<String, Object> parsed = (Map<String, Object>) yaml.load(source);
String value = (String) parsed.get("b");
// System.out.println(value);
assertEquals("mama\nmila\nramu", value);
+ String dumped = yaml.dump(parsed);
+ // System.out.println(dumped);
+ assertEquals(source, dumped);
+ }
+
+ public void testWriteMultiLineLiteralWithStripChomping() {
+ String source = "a: 1\nb: |-\n mama\n mila\n ramu\n";
+ // System.out.println("Source:\n" + source);
+ DumperOptions options = new MyOptions();
+ options.setDefaultFlowStyle(FlowStyle.BLOCK);
+ Yaml yaml = new Yaml(options);
+ @SuppressWarnings("unchecked")
+ Map<String, Object> parsed = (Map<String, Object>) yaml.load(source);
+ String value = (String) parsed.get("b");
+ // System.out.println(value);
+ assertEquals("mama\nmila\nramu", value);
+ String dumped = yaml.dump(parsed);
+ // System.out.println(dumped);
+ assertEquals(source, dumped);
+ }
+
+ private class MyOptions extends DumperOptions {
+ @Override
+ public DumperOptions.ScalarStyle calculateScalarStyle(ScalarAnalysis analysis,
+ DumperOptions.ScalarStyle style) {
+ if (analysis.scalar.length() > 8) {
+ return ScalarStyle.LITERAL;
+ } else {
+ return super.calculateScalarStyle(analysis, style);
+ }
+ }
}
}