From 0340c562d35272c33da8b26600b6791f3a418844 Mon Sep 17 00:00:00 2001 From: elfen Date: Tue, 17 Mar 2015 11:11:22 +0100 Subject: [PATCH 1/7] Fixed problem about extra '|' at the start #41 --- Spyc.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Spyc.php b/Spyc.php index 1e161f7..2b5e08b 100644 --- a/Spyc.php +++ b/Spyc.php @@ -371,7 +371,12 @@ private function _doLiteralBlock($value,$indent) { } $exploded = explode("\n",$value); $newValue = '|'; - $indent += $this->_dumpIndent; + if (isset($exploded[0]) && ($exploded[0] == "|" || $exploded[0] == "|-")) { + $newValue = $exploded[0]; + unset($exploded[0]); + } else { + $indent += $this->_dumpIndent; + } $spaces = str_repeat(' ',$indent); foreach ($exploded as $line) { $newValue .= "\n" . $spaces . ($line); From 4fb1467ecfe7251a773dcb9433f4bcbb7ef9ab1d Mon Sep 17 00:00:00 2001 From: elfen Date: Tue, 17 Mar 2015 11:11:34 +0100 Subject: [PATCH 2/7] Added unit test about extra '|' at the start #41 --- tests/DumpTest.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/DumpTest.php b/tests/DumpTest.php index 9c31e92..23ebbca 100644 --- a/tests/DumpTest.php +++ b/tests/DumpTest.php @@ -133,4 +133,16 @@ public function testHashesInKeys() { $this->assertEquals ($awaiting, $dump); } + public function testParagraph() { + $dump = Spyc::YAMLDump(array ('key' => "|\n value")); + $awaiting = "---\nkey: |\n value\n"; + $this->assertEquals ($awaiting, $dump); + } + + public function testParagraphBig() { + $dump = Spyc::YAMLDump(array ('key' => "|-\n value_first\n\n value")); + $awaiting = "---\nkey: |-\n value_first\n\n value\n"; + $this->assertEquals ($awaiting, $dump); + } + } From 24dd99cc8e2699598d8aa90c0931eba5d0b671b6 Mon Sep 17 00:00:00 2001 From: elfen Date: Tue, 17 Mar 2015 11:11:49 +0100 Subject: [PATCH 3/7] Added require-dev and phpunit. --- composer.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/composer.json b/composer.json index 9105de5..e5ab776 100644 --- a/composer.json +++ b/composer.json @@ -19,6 +19,9 @@ "autoload": { "files": [ "Spyc.php" ] }, + "require-dev": { + "phpunit/phpunit": "4.3.*@dev" + }, "extra": { "branch-alias": { "dev-master": "0.5.x-dev" From 92fa609c92a53f9e6f68bc3ac4fd8420565df507 Mon Sep 17 00:00:00 2001 From: elfen Date: Wed, 18 Mar 2015 16:34:57 +0100 Subject: [PATCH 4/7] Fixed bad indentation. --- Spyc.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Spyc.php b/Spyc.php index 2b5e08b..be12cf4 100644 --- a/Spyc.php +++ b/Spyc.php @@ -371,15 +371,14 @@ private function _doLiteralBlock($value,$indent) { } $exploded = explode("\n",$value); $newValue = '|'; - if (isset($exploded[0]) && ($exploded[0] == "|" || $exploded[0] == "|-")) { + if (isset($exploded[0]) && ($exploded[0] == "|" || $exploded[0] == "|-" || $exploded[0] == ">")) { $newValue = $exploded[0]; unset($exploded[0]); - } else { - $indent += $this->_dumpIndent; } + $indent += $this->_dumpIndent; $spaces = str_repeat(' ',$indent); foreach ($exploded as $line) { - $newValue .= "\n" . $spaces . ($line); + $newValue .= "\n" . $spaces . (trim($line)); } return $newValue; } From 6143cbef616fe62deba6d3a0fe33f980985b2104 Mon Sep 17 00:00:00 2001 From: elfen Date: Wed, 18 Mar 2015 16:35:46 +0100 Subject: [PATCH 5/7] Added unit test for bad indentation. --- tests/DumpTest.php | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/tests/DumpTest.php b/tests/DumpTest.php index 23ebbca..94b4ad0 100644 --- a/tests/DumpTest.php +++ b/tests/DumpTest.php @@ -139,9 +139,33 @@ public function testParagraph() { $this->assertEquals ($awaiting, $dump); } - public function testParagraphBig() { - $dump = Spyc::YAMLDump(array ('key' => "|-\n value_first\n\n value")); - $awaiting = "---\nkey: |-\n value_first\n\n value\n"; + public function testParagraphTwo() { + $dump = Spyc::YAMLDump(array ('key' => 'Congrats, pimpt bedrijventerreinen pimpt bedrijventerreinen pimpt bedrijventerreinen!')); + $awaiting = "---\nkey: >\n Congrats, pimpt bedrijventerreinen pimpt\n bedrijventerreinen pimpt\n bedrijventerreinen!\n"; + $this->assertEquals ($awaiting, $dump); + } + + public function testString() { + $dump = Spyc::YAMLDump(array ('key' => array('key_one' => 'Congrats, pimpt bedrijventerreinen!'))); + $awaiting = "---\nkey:\n key_one: Congrats, pimpt bedrijventerreinen!\n"; + $this->assertEquals ($awaiting, $dump); + } + + public function testStringLong() { + $dump = Spyc::YAMLDump(array ('key' => array('key_one' => 'Congrats, pimpt bedrijventerreinen pimpt bedrijventerreinen pimpt bedrijventerreinen!'))); + $awaiting = "---\nkey:\n key_one: >\n Congrats, pimpt bedrijventerreinen pimpt\n bedrijventerreinen pimpt\n bedrijventerreinen!\n"; + $this->assertEquals ($awaiting, $dump); + } + + public function testStringDoubleQuote() { + $dump = Spyc::YAMLDump(array ('key' => array('key_one' => array('key_two' => '"Système d\'e-réservation"')))); + $awaiting = "---\nkey:\n key_one:\n key_two: |\n \"Système d'e-réservation\"\n"; + $this->assertEquals ($awaiting, $dump); + } + + public function testStringStartingWithSpace() { + $dump = Spyc::YAMLDump(array ('key' => array('key_one' => " Congrats, pimpt bedrijventerreinen \n pimpt bedrijventerreinen pimpt bedrijventerreinen!"))); + $awaiting = "---\nkey:\n key_one: |\n Congrats, pimpt bedrijventerreinen\n pimpt bedrijventerreinen pimpt bedrijventerreinen!\n"; $this->assertEquals ($awaiting, $dump); } From 2cf269c09f4f3452f79e35ab00776415a8dc6352 Mon Sep 17 00:00:00 2001 From: elfen Date: Fri, 20 Mar 2015 09:15:29 +0100 Subject: [PATCH 6/7] Fixed adding double quote but not need. --- Spyc.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Spyc.php b/Spyc.php index be12cf4..899672b 100644 --- a/Spyc.php +++ b/Spyc.php @@ -315,7 +315,7 @@ private function _yamlizeArray($array,$indent) { private function _dumpNode($key, $value, $indent, $previous_key = -1, $first_key = 0, $source_array = null) { // do some folding here, for blocks if (is_string ($value) && ((strpos($value,"\n") !== false || strpos($value,": ") !== false || strpos($value,"- ") !== false || - strpos($value,"*") !== false || strpos($value,"#") !== false || strpos($value,"<") !== false || strpos($value,">") !== false || strpos ($value, ' ') !== false || + strpos($value,"*") !== false || strpos($value,"#") !== false || strpos($value,"<") !== false || strpos($value,">") !== false || strpos ($value, '%') !== false || strpos ($value, ' ') !== false || strpos($value,"[") !== false || strpos($value,"]") !== false || strpos($value,"{") !== false || strpos($value,"}") !== false) || strpos($value,"&") !== false || strpos($value, "'") !== false || strpos($value, "!") === 0 || substr ($value, -1, 1) == ':') ) { @@ -378,7 +378,11 @@ private function _doLiteralBlock($value,$indent) { $indent += $this->_dumpIndent; $spaces = str_repeat(' ',$indent); foreach ($exploded as $line) { - $newValue .= "\n" . $spaces . (trim($line)); + $line = trim($line); + if (strpos($line, '"') === 0 && strrpos($line, '"') == (strlen($line)-1) || strpos($line, "'") === 0 && strrpos($line, "'") == (strlen($line)-1)) { + $line = substr($line, 1, -1); + } + $newValue .= "\n" . $spaces . ($line); } return $newValue; } From 4fe15f49926f295cd8966f23c46a1f9bb89d09fc Mon Sep 17 00:00:00 2001 From: elfen Date: Fri, 20 Mar 2015 09:17:44 +0100 Subject: [PATCH 7/7] Add unittest adding double quote but not need. --- tests/DumpTest.php | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/tests/DumpTest.php b/tests/DumpTest.php index 94b4ad0..ac7774f 100644 --- a/tests/DumpTest.php +++ b/tests/DumpTest.php @@ -159,7 +159,13 @@ public function testStringLong() { public function testStringDoubleQuote() { $dump = Spyc::YAMLDump(array ('key' => array('key_one' => array('key_two' => '"Système d\'e-réservation"')))); - $awaiting = "---\nkey:\n key_one:\n key_two: |\n \"Système d'e-réservation\"\n"; + $awaiting = "---\nkey:\n key_one:\n key_two: |\n Système d'e-réservation\n"; + $this->assertEquals ($awaiting, $dump); + } + + public function testLongStringDoubleQuote() { + $dump = Spyc::YAMLDump(array ('key' => array('key_one' => array('key_two' => '"Système d\'e-réservation bedrijventerreinen pimpt" bedrijventerreinen!')))); + $awaiting = "---\nkey:\n key_one:\n key_two: |\n \"Système d'e-réservation bedrijventerreinen pimpt\" bedrijventerreinen!\n"; $this->assertEquals ($awaiting, $dump); } @@ -169,4 +175,22 @@ public function testStringStartingWithSpace() { $this->assertEquals ($awaiting, $dump); } + public function testPerCentOne() { + $dump = Spyc::YAMLDump(array ('key' => "%name%, pimpts bedrijventerreinen!")); + $awaiting = "---\nkey: '%name%, pimpts bedrijventerreinen!'\n"; + $this->assertEquals ($awaiting, $dump); + } + + public function testPerCentAndSimpleQuote() { + $dump = Spyc::YAMLDump(array ('key' => "%name%, pimpt's bedrijventerreinen!")); + $awaiting = "---\nkey: \"%name%, pimpt's bedrijventerreinen!\"\n"; + $this->assertEquals ($awaiting, $dump); + } + + public function testPerCentAndDoubleQuote() { + $dump = Spyc::YAMLDump(array ('key' => '%name%, pimpt\'s "bed"rijventerreinen!')); + $awaiting = "---\nkey: |\n %name%, pimpt's \"bed\"rijventerreinen!\n"; + $this->assertEquals ($awaiting, $dump); + } + }