diff --git a/yaml/README.md b/yaml/README.md
new file mode 100644
index 0000000000..ebf403eb57
--- /dev/null
+++ b/yaml/README.md
@@ -0,0 +1,7 @@
+## YAML
+
+This module contains articles about YAML
+
+### Relevant articles
+
+
diff --git a/yaml/pom.xml b/yaml/pom.xml
new file mode 100644
index 0000000000..c801505c6a
--- /dev/null
+++ b/yaml/pom.xml
@@ -0,0 +1,29 @@
+
+
+
+ 4.0.0
+ yaml
+ 1.0-SNAPSHOT
+
+
+ com.baeldung
+ parent-modules
+ 1.0.0-SNAPSHOT
+
+
+
+
+ org.yaml
+ snakeyaml
+ 1.21
+
+
+
+
+ 1.8
+ 1.21
+
+
+
\ No newline at end of file
diff --git a/yaml/src/test/java/com/baeldung/multiline/MultiLineStringsUnitTest.java b/yaml/src/test/java/com/baeldung/multiline/MultiLineStringsUnitTest.java
new file mode 100644
index 0000000000..c97faa355a
--- /dev/null
+++ b/yaml/src/test/java/com/baeldung/multiline/MultiLineStringsUnitTest.java
@@ -0,0 +1,90 @@
+package com.baeldung.multiline;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.yaml.snakeyaml.Yaml;
+
+import java.io.File;
+import java.io.InputStream;
+import java.util.Map;
+
+import static org.junit.Assert.assertEquals;
+
+public class MultiLineStringsUnitTest {
+
+ private Yaml yaml;
+
+ @Before
+ public void setup() {
+ yaml = new Yaml();
+ }
+
+ @Test
+ public void whenLiteral_ThenLineBreaksArePresent() {
+ String key = parseYamlKey("literal.yaml");
+ assertEquals("Line1\nLine2\nLine3", key);
+ }
+
+ @Test
+ public void whenLiteral_ThenEndingBreaksAreReducedToOne() {
+ String key = parseYamlKey("literal2.yaml");
+ assertEquals("\n\nLine1\n\nLine2\n\nLine3\n", key);
+ }
+
+ @Test
+ public void whenFolded_ThenLineBreaksAreReplaced() {
+ String key = parseYamlKey("folded.yaml");
+ assertEquals("Line1 Line2 Line3", key);
+ }
+
+ @Test
+ public void whenFolded_ThenEmptyLinesAreReducedToOne() {
+ String key = parseYamlKey("folded2.yaml");
+ assertEquals("Line1\nLine2\n\nLine3\n", key);
+ }
+
+ @Test
+ public void whenLiteralKeep_ThenLastEmptyLinesArePresent() {
+ String key = parseYamlKey("literal_keep.yaml");
+ assertEquals("Line1\nLine2\nLine3\n\n", key);
+ }
+
+ @Test
+ public void whenLiteralStrip_ThenLastEmptyLinesAreRemoved() {
+ String key = parseYamlKey("literal_strip.yaml");
+ assertEquals("Line1\nLine2\nLine3", key);
+ }
+
+ @Test
+ public void whenFoldedKeep_ThenLastEmptyLinesArePresent() {
+ String key = parseYamlKey("folded_keep.yaml");
+ assertEquals("Line1 Line2 Line3\n\n\n", key);
+ }
+
+ @Test
+ public void whenFoldedStrip_ThenLastEmptyLinesAreRemoved() {
+ String key = parseYamlKey("folded_strip.yaml");
+ assertEquals("Line1 Line2 Line3", key);
+ }
+
+ @Test
+ public void whenDoubleQuotes_ThenExplicitBreaksArePreserved() {
+ String key = parseYamlKey("plain_double_quotes.yaml");
+ assertEquals("Line1\nLine2\nLine3", key);
+ }
+
+ @Test
+ public void whenSingleQuotes_ThenExplicitBreaksAreIgnored() {
+ String key = parseYamlKey("plain_single_quotes.yaml");
+ assertEquals("Line1\\nLine2\nLine3", key);
+ }
+
+ private String parseYamlKey(String fileName) {
+ InputStream inputStream = this.getClass()
+ .getClassLoader()
+ .getResourceAsStream("multi-line" + File.separator + fileName);
+ Map parsed = yaml.load(inputStream);
+ return parsed.get("key");
+ }
+
+}
diff --git a/yaml/src/test/resources/multi-line/folded.yaml b/yaml/src/test/resources/multi-line/folded.yaml
new file mode 100644
index 0000000000..c5fa743a08
--- /dev/null
+++ b/yaml/src/test/resources/multi-line/folded.yaml
@@ -0,0 +1,4 @@
+key: >
+ Line1
+ Line2
+ Line3
\ No newline at end of file
diff --git a/yaml/src/test/resources/multi-line/folded2.yaml b/yaml/src/test/resources/multi-line/folded2.yaml
new file mode 100644
index 0000000000..a7f244994a
--- /dev/null
+++ b/yaml/src/test/resources/multi-line/folded2.yaml
@@ -0,0 +1,9 @@
+key: >
+ Line1
+
+ Line2
+
+
+ Line3
+
+
diff --git a/yaml/src/test/resources/multi-line/folded_keep.yaml b/yaml/src/test/resources/multi-line/folded_keep.yaml
new file mode 100644
index 0000000000..555291fd26
--- /dev/null
+++ b/yaml/src/test/resources/multi-line/folded_keep.yaml
@@ -0,0 +1,6 @@
+key: >+
+ Line1
+ Line2
+ Line3
+
+
diff --git a/yaml/src/test/resources/multi-line/folded_strip.yaml b/yaml/src/test/resources/multi-line/folded_strip.yaml
new file mode 100644
index 0000000000..0a3a246dc2
--- /dev/null
+++ b/yaml/src/test/resources/multi-line/folded_strip.yaml
@@ -0,0 +1,7 @@
+key: >-
+ Line1
+ Line2
+ Line3
+
+
+
diff --git a/yaml/src/test/resources/multi-line/literal.yaml b/yaml/src/test/resources/multi-line/literal.yaml
new file mode 100644
index 0000000000..7e02501a33
--- /dev/null
+++ b/yaml/src/test/resources/multi-line/literal.yaml
@@ -0,0 +1,4 @@
+key: |
+ Line1
+ Line2
+ Line3
\ No newline at end of file
diff --git a/yaml/src/test/resources/multi-line/literal2.yaml b/yaml/src/test/resources/multi-line/literal2.yaml
new file mode 100644
index 0000000000..7c7fed0163
--- /dev/null
+++ b/yaml/src/test/resources/multi-line/literal2.yaml
@@ -0,0 +1,10 @@
+key: |
+
+
+ Line1
+
+ Line2
+
+ Line3
+
+
diff --git a/yaml/src/test/resources/multi-line/literal_keep.yaml b/yaml/src/test/resources/multi-line/literal_keep.yaml
new file mode 100644
index 0000000000..37f22684dd
--- /dev/null
+++ b/yaml/src/test/resources/multi-line/literal_keep.yaml
@@ -0,0 +1,5 @@
+key: |+
+ Line1
+ Line2
+ Line3
+
diff --git a/yaml/src/test/resources/multi-line/literal_strip.yaml b/yaml/src/test/resources/multi-line/literal_strip.yaml
new file mode 100644
index 0000000000..0791e13d5d
--- /dev/null
+++ b/yaml/src/test/resources/multi-line/literal_strip.yaml
@@ -0,0 +1,5 @@
+key: |-
+ Line1
+ Line2
+ Line3
+
diff --git a/yaml/src/test/resources/multi-line/plain_double_quotes.yaml b/yaml/src/test/resources/multi-line/plain_double_quotes.yaml
new file mode 100644
index 0000000000..ccab040a27
--- /dev/null
+++ b/yaml/src/test/resources/multi-line/plain_double_quotes.yaml
@@ -0,0 +1 @@
+key: "Line1\nLine2\nLine3"
\ No newline at end of file
diff --git a/yaml/src/test/resources/multi-line/plain_single_quotes.yaml b/yaml/src/test/resources/multi-line/plain_single_quotes.yaml
new file mode 100644
index 0000000000..acbf35a462
--- /dev/null
+++ b/yaml/src/test/resources/multi-line/plain_single_quotes.yaml
@@ -0,0 +1,3 @@
+key: 'Line1\nLine2
+
+ Line3'
\ No newline at end of file