mirror of
https://github.com/jbeder/yaml-cpp.git
synced 2025-09-09 12:41:17 +00:00
Fixed last newline of folded scalar bug
This commit is contained in:
@@ -111,13 +111,8 @@ namespace YAML
|
|||||||
bool nextMoreIndented = (INPUT.peek() == ' ');
|
bool nextMoreIndented = (INPUT.peek() == ' ');
|
||||||
|
|
||||||
// for block scalars, we always start with a newline, so we should ignore it (not fold or keep)
|
// for block scalars, we always start with a newline, so we should ignore it (not fold or keep)
|
||||||
bool useNewLine = pastOpeningBreak;
|
if(pastOpeningBreak) {
|
||||||
// and for folded scalars, we don't fold the very last newline to a space
|
if(params.fold && !emptyLine && !nextEmptyLine && !moreIndented && !nextMoreIndented && INPUT.column() >= params.indent)
|
||||||
if(params.fold && !emptyLine && INPUT.column() < params.indent)
|
|
||||||
useNewLine = false;
|
|
||||||
|
|
||||||
if(useNewLine) {
|
|
||||||
if(params.fold && !emptyLine && !nextEmptyLine && !moreIndented && !nextMoreIndented)
|
|
||||||
scalar += " ";
|
scalar += " ";
|
||||||
else
|
else
|
||||||
scalar += "\n";
|
scalar += "\n";
|
||||||
|
@@ -368,6 +368,7 @@ namespace YAML
|
|||||||
params.fold = (indicator == Keys::FoldedScalar);
|
params.fold = (indicator == Keys::FoldedScalar);
|
||||||
|
|
||||||
// eat chomping/indentation indicators
|
// eat chomping/indentation indicators
|
||||||
|
params.chomp = CLIP;
|
||||||
int n = Exp::Chomp.Match(INPUT);
|
int n = Exp::Chomp.Match(INPUT);
|
||||||
for(int i=0;i<n;i++) {
|
for(int i=0;i<n;i++) {
|
||||||
char ch = INPUT.get();
|
char ch = INPUT.get();
|
||||||
|
@@ -446,7 +446,7 @@ namespace Test {
|
|||||||
" home run record in 1998.\n"
|
" home run record in 1998.\n"
|
||||||
"stats: |\n"
|
"stats: |\n"
|
||||||
" 65 Home Runs\n"
|
" 65 Home Runs\n"
|
||||||
" 0.278 Batting Average";
|
" 0.278 Batting Average\n";
|
||||||
std::stringstream stream(input);
|
std::stringstream stream(input);
|
||||||
YAML::Parser parser(stream);
|
YAML::Parser parser(stream);
|
||||||
YAML::Node doc;
|
YAML::Node doc;
|
||||||
@@ -454,8 +454,8 @@ namespace Test {
|
|||||||
|
|
||||||
YAML_ASSERT(doc.size() == 3);
|
YAML_ASSERT(doc.size() == 3);
|
||||||
YAML_ASSERT(doc["name"] == "Mark McGwire");
|
YAML_ASSERT(doc["name"] == "Mark McGwire");
|
||||||
YAML_ASSERT(doc["accomplishment"] == "Mark set a major league home run record in 1998.");
|
YAML_ASSERT(doc["accomplishment"] == "Mark set a major league home run record in 1998.\n");
|
||||||
YAML_ASSERT(doc["stats"] == "65 Home Runs\n0.278 Batting Average");
|
YAML_ASSERT(doc["stats"] == "65 Home Runs\n0.278 Batting Average\n");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user