Removed the -8 suffixes from Scanner methods.
This commit is contained in:
parent
e5561285c3
commit
eb266b4e27
|
@ -816,7 +816,7 @@ final class Scanner
|
||||||
/// characters into that slice.
|
/// characters into that slice.
|
||||||
///
|
///
|
||||||
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
||||||
void scanAlphaNumericToSlice8(string name)(const Mark startMark)
|
void scanAlphaNumericToSlice(string name)(const Mark startMark)
|
||||||
@system pure nothrow @nogc
|
@system pure nothrow @nogc
|
||||||
{
|
{
|
||||||
size_t length = 0;
|
size_t length = 0;
|
||||||
|
@ -847,7 +847,7 @@ final class Scanner
|
||||||
///
|
///
|
||||||
/// Assumes that the caller is building a slice in Reader, and puts the scanned
|
/// Assumes that the caller is building a slice in Reader, and puts the scanned
|
||||||
/// characters into that slice.
|
/// characters into that slice.
|
||||||
void scanToNextBreakToSlice8() @system pure nothrow @nogc
|
void scanToNextBreakToSlice() @system pure nothrow @nogc
|
||||||
{
|
{
|
||||||
uint length = 0;
|
uint length = 0;
|
||||||
while(!"\0\n\r\u0085\u2028\u2029"d.canFind(reader_.peek(length)))
|
while(!"\0\n\r\u0085\u2028\u2029"d.canFind(reader_.peek(length)))
|
||||||
|
@ -885,7 +885,7 @@ final class Scanner
|
||||||
findNextNonSpace();
|
findNextNonSpace();
|
||||||
|
|
||||||
if(reader_.peek() == '#') { scanToNextBreak(); }
|
if(reader_.peek() == '#') { scanToNextBreak(); }
|
||||||
if(scanLineBreak8() != '\0')
|
if(scanLineBreak() != '\0')
|
||||||
{
|
{
|
||||||
if(flowLevel_ == 0) { allowSimpleKey_ = true; }
|
if(flowLevel_ == 0) { allowSimpleKey_ = true; }
|
||||||
}
|
}
|
||||||
|
@ -905,7 +905,7 @@ final class Scanner
|
||||||
|
|
||||||
// Scan directive name
|
// Scan directive name
|
||||||
reader_.sliceBuilder8.begin();
|
reader_.sliceBuilder8.begin();
|
||||||
scanDirectiveNameToSlice8(startMark);
|
scanDirectiveNameToSlice(startMark);
|
||||||
if(error_) { return Token.init; }
|
if(error_) { return Token.init; }
|
||||||
const name = reader_.sliceBuilder8.finish();
|
const name = reader_.sliceBuilder8.finish();
|
||||||
|
|
||||||
|
@ -913,8 +913,8 @@ final class Scanner
|
||||||
|
|
||||||
// Index where tag handle ends and suffix starts in a tag directive value.
|
// Index where tag handle ends and suffix starts in a tag directive value.
|
||||||
uint tagHandleEnd = uint.max;
|
uint tagHandleEnd = uint.max;
|
||||||
if(name == "YAML") { scanYAMLDirectiveValueToSlice8(startMark); }
|
if(name == "YAML") { scanYAMLDirectiveValueToSlice(startMark); }
|
||||||
else if(name == "TAG") { tagHandleEnd = scanTagDirectiveValueToSlice8(startMark); }
|
else if(name == "TAG") { tagHandleEnd = scanTagDirectiveValueToSlice(startMark); }
|
||||||
if(error_) { return Token.init; }
|
if(error_) { return Token.init; }
|
||||||
const value = reader_.sliceBuilder8.finish();
|
const value = reader_.sliceBuilder8.finish();
|
||||||
|
|
||||||
|
@ -929,7 +929,7 @@ final class Scanner
|
||||||
scanToNextBreak();
|
scanToNextBreak();
|
||||||
}
|
}
|
||||||
|
|
||||||
scanDirectiveIgnoredLine8(startMark);
|
scanDirectiveIgnoredLine(startMark);
|
||||||
if(error_) { return Token.init; }
|
if(error_) { return Token.init; }
|
||||||
|
|
||||||
return directiveToken(startMark, endMark, value, directive, tagHandleEnd);
|
return directiveToken(startMark, endMark, value, directive, tagHandleEnd);
|
||||||
|
@ -941,10 +941,10 @@ final class Scanner
|
||||||
/// characters into that slice.
|
/// characters into that slice.
|
||||||
///
|
///
|
||||||
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
||||||
void scanDirectiveNameToSlice8(const Mark startMark) @system pure nothrow @nogc
|
void scanDirectiveNameToSlice(const Mark startMark) @system pure nothrow @nogc
|
||||||
{
|
{
|
||||||
// Scan directive name.
|
// Scan directive name.
|
||||||
scanAlphaNumericToSlice8!"a directive"(startMark);
|
scanAlphaNumericToSlice!"a directive"(startMark);
|
||||||
if(error_) { return; }
|
if(error_) { return; }
|
||||||
|
|
||||||
if(" \0\n\r\u0085\u2028\u2029"d.canFind(reader_.peek())) { return; }
|
if(" \0\n\r\u0085\u2028\u2029"d.canFind(reader_.peek())) { return; }
|
||||||
|
@ -958,12 +958,12 @@ final class Scanner
|
||||||
/// characters into that slice.
|
/// characters into that slice.
|
||||||
///
|
///
|
||||||
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
||||||
void scanYAMLDirectiveValueToSlice8(const Mark startMark)
|
void scanYAMLDirectiveValueToSlice(const Mark startMark)
|
||||||
@system pure nothrow @nogc
|
@system pure nothrow @nogc
|
||||||
{
|
{
|
||||||
findNextNonSpace();
|
findNextNonSpace();
|
||||||
|
|
||||||
scanYAMLDirectiveNumberToSlice8(startMark);
|
scanYAMLDirectiveNumberToSlice(startMark);
|
||||||
if(error_) { return; }
|
if(error_) { return; }
|
||||||
|
|
||||||
if(reader_.peek() != '.')
|
if(reader_.peek() != '.')
|
||||||
|
@ -976,7 +976,7 @@ final class Scanner
|
||||||
reader_.forward();
|
reader_.forward();
|
||||||
|
|
||||||
reader_.sliceBuilder8.write('.');
|
reader_.sliceBuilder8.write('.');
|
||||||
scanYAMLDirectiveNumberToSlice8(startMark);
|
scanYAMLDirectiveNumberToSlice(startMark);
|
||||||
if(error_) { return; }
|
if(error_) { return; }
|
||||||
|
|
||||||
if(!" \0\n\r\u0085\u2028\u2029"d.canFind(reader_.peek()))
|
if(!" \0\n\r\u0085\u2028\u2029"d.canFind(reader_.peek()))
|
||||||
|
@ -992,7 +992,7 @@ final class Scanner
|
||||||
/// characters into that slice.
|
/// characters into that slice.
|
||||||
///
|
///
|
||||||
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
||||||
void scanYAMLDirectiveNumberToSlice8(const Mark startMark)
|
void scanYAMLDirectiveNumberToSlice(const Mark startMark)
|
||||||
@system pure nothrow @nogc
|
@system pure nothrow @nogc
|
||||||
{
|
{
|
||||||
if(!isDigit(reader_.peek()))
|
if(!isDigit(reader_.peek()))
|
||||||
|
@ -1017,16 +1017,16 @@ final class Scanner
|
||||||
/// Returns: Length of tag handle (which is before tag prefix) in scanned data
|
/// Returns: Length of tag handle (which is before tag prefix) in scanned data
|
||||||
///
|
///
|
||||||
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
||||||
uint scanTagDirectiveValueToSlice8(const Mark startMark)
|
uint scanTagDirectiveValueToSlice(const Mark startMark)
|
||||||
@system pure nothrow
|
@system pure nothrow
|
||||||
{
|
{
|
||||||
findNextNonSpace();
|
findNextNonSpace();
|
||||||
const startLength = reader_.sliceBuilder8.length;
|
const startLength = reader_.sliceBuilder8.length;
|
||||||
scanTagDirectiveHandleToSlice8(startMark);
|
scanTagDirectiveHandleToSlice(startMark);
|
||||||
if(error_) { return uint.max; }
|
if(error_) { return uint.max; }
|
||||||
const handleLength = cast(uint)(reader_.sliceBuilder8.length - startLength);
|
const handleLength = cast(uint)(reader_.sliceBuilder8.length - startLength);
|
||||||
findNextNonSpace();
|
findNextNonSpace();
|
||||||
scanTagDirectivePrefixToSlice8(startMark);
|
scanTagDirectivePrefixToSlice(startMark);
|
||||||
|
|
||||||
return handleLength;
|
return handleLength;
|
||||||
}
|
}
|
||||||
|
@ -1037,10 +1037,10 @@ final class Scanner
|
||||||
/// characters into that slice.
|
/// characters into that slice.
|
||||||
///
|
///
|
||||||
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
||||||
void scanTagDirectiveHandleToSlice8(const Mark startMark)
|
void scanTagDirectiveHandleToSlice(const Mark startMark)
|
||||||
@system pure nothrow @nogc
|
@system pure nothrow @nogc
|
||||||
{
|
{
|
||||||
scanTagHandleToSlice8!"directive"(startMark);
|
scanTagHandleToSlice!"directive"(startMark);
|
||||||
if(error_) { return; }
|
if(error_) { return; }
|
||||||
if(reader_.peek() == ' ') { return; }
|
if(reader_.peek() == ' ') { return; }
|
||||||
error("While scanning a directive handle", startMark,
|
error("While scanning a directive handle", startMark,
|
||||||
|
@ -1053,9 +1053,9 @@ final class Scanner
|
||||||
/// characters into that slice.
|
/// characters into that slice.
|
||||||
///
|
///
|
||||||
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
||||||
void scanTagDirectivePrefixToSlice8(const Mark startMark) @system pure nothrow
|
void scanTagDirectivePrefixToSlice(const Mark startMark) @system pure nothrow
|
||||||
{
|
{
|
||||||
scanTagURIToSlice8!"directive"(startMark);
|
scanTagURIToSlice!"directive"(startMark);
|
||||||
if(" \0\n\r\u0085\u2028\u2029"d.canFind(reader_.peek())) { return; }
|
if(" \0\n\r\u0085\u2028\u2029"d.canFind(reader_.peek())) { return; }
|
||||||
error("While scanning a directive prefix", startMark,
|
error("While scanning a directive prefix", startMark,
|
||||||
expected("' '", reader_.peek()), reader_.mark);
|
expected("' '", reader_.peek()), reader_.mark);
|
||||||
|
@ -1064,13 +1064,13 @@ final class Scanner
|
||||||
/// Scan (and ignore) ignored line after a directive.
|
/// Scan (and ignore) ignored line after a directive.
|
||||||
///
|
///
|
||||||
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
||||||
void scanDirectiveIgnoredLine8(const Mark startMark) @safe pure nothrow @nogc
|
void scanDirectiveIgnoredLine(const Mark startMark) @safe pure nothrow @nogc
|
||||||
{
|
{
|
||||||
findNextNonSpace();
|
findNextNonSpace();
|
||||||
if(reader_.peek() == '#') { scanToNextBreak(); }
|
if(reader_.peek() == '#') { scanToNextBreak(); }
|
||||||
if("\0\n\r\u0085\u2028\u2029"d.canFind(reader_.peek()))
|
if("\0\n\r\u0085\u2028\u2029"d.canFind(reader_.peek()))
|
||||||
{
|
{
|
||||||
scanLineBreak8();
|
scanLineBreak();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
error("While scanning a directive", startMark,
|
error("While scanning a directive", startMark,
|
||||||
|
@ -1096,8 +1096,8 @@ final class Scanner
|
||||||
const dchar i = reader_.get();
|
const dchar i = reader_.get();
|
||||||
|
|
||||||
reader_.sliceBuilder8.begin();
|
reader_.sliceBuilder8.begin();
|
||||||
if(i == '*') { scanAlphaNumericToSlice8!"an alias"(startMark); }
|
if(i == '*') { scanAlphaNumericToSlice!"an alias"(startMark); }
|
||||||
else { scanAlphaNumericToSlice8!"an anchor"(startMark); }
|
else { scanAlphaNumericToSlice!"an anchor"(startMark); }
|
||||||
// On error, value is discarded as we return immediately
|
// On error, value is discarded as we return immediately
|
||||||
const value = reader_.sliceBuilder8.finish();
|
const value = reader_.sliceBuilder8.finish();
|
||||||
if(error_) { return Token.init; }
|
if(error_) { return Token.init; }
|
||||||
|
@ -1142,7 +1142,7 @@ final class Scanner
|
||||||
reader_.forward(2);
|
reader_.forward(2);
|
||||||
|
|
||||||
handleEnd = 0;
|
handleEnd = 0;
|
||||||
scanTagURIToSlice8!"tag"(startMark);
|
scanTagURIToSlice!"tag"(startMark);
|
||||||
if(error_) { return Token.init; }
|
if(error_) { return Token.init; }
|
||||||
if(reader_.peek() != '>')
|
if(reader_.peek() != '>')
|
||||||
{
|
{
|
||||||
|
@ -1176,7 +1176,7 @@ final class Scanner
|
||||||
|
|
||||||
if(useHandle)
|
if(useHandle)
|
||||||
{
|
{
|
||||||
scanTagHandleToSlice8!"tag"(startMark);
|
scanTagHandleToSlice!"tag"(startMark);
|
||||||
handleEnd = cast(uint)reader_.sliceBuilder8.length;
|
handleEnd = cast(uint)reader_.sliceBuilder8.length;
|
||||||
if(error_) { return Token.init; }
|
if(error_) { return Token.init; }
|
||||||
}
|
}
|
||||||
|
@ -1187,7 +1187,7 @@ final class Scanner
|
||||||
handleEnd = cast(uint)reader_.sliceBuilder8.length;
|
handleEnd = cast(uint)reader_.sliceBuilder8.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
scanTagURIToSlice8!"tag"(startMark);
|
scanTagURIToSlice!"tag"(startMark);
|
||||||
if(error_) { return Token.init; }
|
if(error_) { return Token.init; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1233,14 +1233,14 @@ final class Scanner
|
||||||
size_t startLen = reader_.sliceBuilder8.length;
|
size_t startLen = reader_.sliceBuilder8.length;
|
||||||
if(increment == int.min)
|
if(increment == int.min)
|
||||||
{
|
{
|
||||||
auto indentation = scanBlockScalarIndentationToSlice8();
|
auto indentation = scanBlockScalarIndentationToSlice();
|
||||||
endMark = indentation[1];
|
endMark = indentation[1];
|
||||||
indent = max(indent, indentation[0]);
|
indent = max(indent, indentation[0]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
indent += increment - 1;
|
indent += increment - 1;
|
||||||
endMark = scanBlockScalarBreaksToSlice8(indent);
|
endMark = scanBlockScalarBreaksToSlice(indent);
|
||||||
}
|
}
|
||||||
|
|
||||||
// int.max means there's no line break (int.max is outside UTF-32).
|
// int.max means there's no line break (int.max is outside UTF-32).
|
||||||
|
@ -1252,8 +1252,8 @@ final class Scanner
|
||||||
breaksTransaction.commit();
|
breaksTransaction.commit();
|
||||||
const bool leadingNonSpace = !" \t"d.canFind(reader_.peek());
|
const bool leadingNonSpace = !" \t"d.canFind(reader_.peek());
|
||||||
// This is where the 'interesting' non-whitespace data gets read.
|
// This is where the 'interesting' non-whitespace data gets read.
|
||||||
scanToNextBreakToSlice8();
|
scanToNextBreakToSlice();
|
||||||
lineBreak = scanLineBreak8();
|
lineBreak = scanLineBreak();
|
||||||
|
|
||||||
|
|
||||||
// This transaction serves to rollback data read in the
|
// This transaction serves to rollback data read in the
|
||||||
|
@ -1262,7 +1262,7 @@ final class Scanner
|
||||||
startLen = reader_.sliceBuilder8.length;
|
startLen = reader_.sliceBuilder8.length;
|
||||||
// The line breaks should actually be written _after_ the if() block
|
// The line breaks should actually be written _after_ the if() block
|
||||||
// below. We work around that by inserting
|
// below. We work around that by inserting
|
||||||
endMark = scanBlockScalarBreaksToSlice8(indent);
|
endMark = scanBlockScalarBreaksToSlice(indent);
|
||||||
|
|
||||||
// This will not run during the last iteration (see the if() vs the
|
// This will not run during the last iteration (see the if() vs the
|
||||||
// while()), hence breaksTransaction rollback (which happens after this
|
// while()), hence breaksTransaction rollback (which happens after this
|
||||||
|
@ -1434,7 +1434,7 @@ final class Scanner
|
||||||
|
|
||||||
if("\0\n\r\u0085\u2028\u2029"d.canFind(reader_.peek()))
|
if("\0\n\r\u0085\u2028\u2029"d.canFind(reader_.peek()))
|
||||||
{
|
{
|
||||||
scanLineBreak8();
|
scanLineBreak();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
error("While scanning a block scalar", startMark,
|
error("While scanning a block scalar", startMark,
|
||||||
|
@ -1445,7 +1445,7 @@ final class Scanner
|
||||||
///
|
///
|
||||||
/// Assumes that the caller is building a slice in Reader, and puts the scanned
|
/// Assumes that the caller is building a slice in Reader, and puts the scanned
|
||||||
/// characters into that slice.
|
/// characters into that slice.
|
||||||
Tuple!(uint, Mark) scanBlockScalarIndentationToSlice8()
|
Tuple!(uint, Mark) scanBlockScalarIndentationToSlice()
|
||||||
@system pure nothrow @nogc
|
@system pure nothrow @nogc
|
||||||
{
|
{
|
||||||
uint maxIndent;
|
uint maxIndent;
|
||||||
|
@ -1455,7 +1455,7 @@ final class Scanner
|
||||||
{
|
{
|
||||||
if(reader_.peek() != ' ')
|
if(reader_.peek() != ' ')
|
||||||
{
|
{
|
||||||
reader_.sliceBuilder8.write(scanLineBreak8());
|
reader_.sliceBuilder8.write(scanLineBreak());
|
||||||
endMark = reader_.mark;
|
endMark = reader_.mark;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -1470,7 +1470,7 @@ final class Scanner
|
||||||
///
|
///
|
||||||
/// Assumes that the caller is building a slice in Reader, and puts the scanned
|
/// Assumes that the caller is building a slice in Reader, and puts the scanned
|
||||||
/// characters into that slice.
|
/// characters into that slice.
|
||||||
Mark scanBlockScalarBreaksToSlice8(const uint indent) @trusted pure nothrow @nogc
|
Mark scanBlockScalarBreaksToSlice(const uint indent) @trusted pure nothrow @nogc
|
||||||
{
|
{
|
||||||
Mark endMark = reader_.mark;
|
Mark endMark = reader_.mark;
|
||||||
|
|
||||||
|
@ -1478,7 +1478,7 @@ final class Scanner
|
||||||
{
|
{
|
||||||
while(reader_.column < indent && reader_.peek() == ' ') { reader_.forward(); }
|
while(reader_.column < indent && reader_.peek() == ' ') { reader_.forward(); }
|
||||||
if(!"\n\r\u0085\u2028\u2029"d.canFind(reader_.peek())) { break; }
|
if(!"\n\r\u0085\u2028\u2029"d.canFind(reader_.peek())) { break; }
|
||||||
reader_.sliceBuilder8.write(scanLineBreak8());
|
reader_.sliceBuilder8.write(scanLineBreak());
|
||||||
endMark = reader_.mark;
|
endMark = reader_.mark;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1496,14 +1496,14 @@ final class Scanner
|
||||||
reader_.sliceBuilder8.begin();
|
reader_.sliceBuilder8.begin();
|
||||||
scope(exit) if(error_) { reader_.sliceBuilder8.finish(); }
|
scope(exit) if(error_) { reader_.sliceBuilder8.finish(); }
|
||||||
|
|
||||||
scanFlowScalarNonSpacesToSlice8(quotes, startMark);
|
scanFlowScalarNonSpacesToSlice(quotes, startMark);
|
||||||
if(error_) { return Token.init; }
|
if(error_) { return Token.init; }
|
||||||
|
|
||||||
while(reader_.peek() != quote)
|
while(reader_.peek() != quote)
|
||||||
{
|
{
|
||||||
scanFlowScalarSpacesToSlice8(startMark);
|
scanFlowScalarSpacesToSlice(startMark);
|
||||||
if(error_) { return Token.init; }
|
if(error_) { return Token.init; }
|
||||||
scanFlowScalarNonSpacesToSlice8(quotes, startMark);
|
scanFlowScalarNonSpacesToSlice(quotes, startMark);
|
||||||
if(error_) { return Token.init; }
|
if(error_) { return Token.init; }
|
||||||
}
|
}
|
||||||
reader_.forward();
|
reader_.forward();
|
||||||
|
@ -1518,7 +1518,7 @@ final class Scanner
|
||||||
/// characters into that slice.
|
/// characters into that slice.
|
||||||
///
|
///
|
||||||
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
||||||
void scanFlowScalarNonSpacesToSlice8(const ScalarStyle quotes, const Mark startMark)
|
void scanFlowScalarNonSpacesToSlice(const ScalarStyle quotes, const Mark startMark)
|
||||||
@system pure nothrow @nogc
|
@system pure nothrow @nogc
|
||||||
{
|
{
|
||||||
for(;;) with(ScalarStyle)
|
for(;;) with(ScalarStyle)
|
||||||
|
@ -1608,8 +1608,8 @@ final class Scanner
|
||||||
}
|
}
|
||||||
else if("\n\r\u0085\u2028\u2029"d.canFind(c))
|
else if("\n\r\u0085\u2028\u2029"d.canFind(c))
|
||||||
{
|
{
|
||||||
scanLineBreak8();
|
scanLineBreak();
|
||||||
scanFlowScalarBreaksToSlice8(startMark);
|
scanFlowScalarBreaksToSlice(startMark);
|
||||||
if(error_) { return; }
|
if(error_) { return; }
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1630,7 +1630,7 @@ final class Scanner
|
||||||
/// spaces into that slice.
|
/// spaces into that slice.
|
||||||
///
|
///
|
||||||
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
||||||
void scanFlowScalarSpacesToSlice8(const Mark startMark)
|
void scanFlowScalarSpacesToSlice(const Mark startMark)
|
||||||
@system pure nothrow @nogc
|
@system pure nothrow @nogc
|
||||||
{
|
{
|
||||||
// Increase length as long as we see whitespace.
|
// Increase length as long as we see whitespace.
|
||||||
|
@ -1657,13 +1657,13 @@ final class Scanner
|
||||||
|
|
||||||
// There's a line break after the spaces.
|
// There's a line break after the spaces.
|
||||||
reader_.forward(length);
|
reader_.forward(length);
|
||||||
const lineBreak = scanLineBreak8();
|
const lineBreak = scanLineBreak();
|
||||||
|
|
||||||
if(lineBreak != '\n') { reader_.sliceBuilder8.write(lineBreak); }
|
if(lineBreak != '\n') { reader_.sliceBuilder8.write(lineBreak); }
|
||||||
|
|
||||||
// If we have extra line breaks after the first, scan them into the
|
// If we have extra line breaks after the first, scan them into the
|
||||||
// slice.
|
// slice.
|
||||||
const bool extraBreaks = scanFlowScalarBreaksToSlice8(startMark);
|
const bool extraBreaks = scanFlowScalarBreaksToSlice(startMark);
|
||||||
if(error_) { return; }
|
if(error_) { return; }
|
||||||
|
|
||||||
// No extra breaks, one normal line break. Replace it with a space.
|
// No extra breaks, one normal line break. Replace it with a space.
|
||||||
|
@ -1676,7 +1676,7 @@ final class Scanner
|
||||||
/// line breaks into that slice.
|
/// line breaks into that slice.
|
||||||
///
|
///
|
||||||
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
||||||
bool scanFlowScalarBreaksToSlice8(const Mark startMark)
|
bool scanFlowScalarBreaksToSlice(const Mark startMark)
|
||||||
@system pure nothrow @nogc
|
@system pure nothrow @nogc
|
||||||
{
|
{
|
||||||
// True if at least one line break was found.
|
// True if at least one line break was found.
|
||||||
|
@ -1699,7 +1699,7 @@ final class Scanner
|
||||||
// Encountered a non-whitespace non-linebreak character, so we're done.
|
// Encountered a non-whitespace non-linebreak character, so we're done.
|
||||||
if(!"\n\r\u0085\u2028\u2029"d.canFind(reader_.peek())) { break; }
|
if(!"\n\r\u0085\u2028\u2029"d.canFind(reader_.peek())) { break; }
|
||||||
|
|
||||||
const lineBreak = scanLineBreak8();
|
const lineBreak = scanLineBreak();
|
||||||
anyBreaks = true;
|
anyBreaks = true;
|
||||||
reader_.sliceBuilder8.write(lineBreak);
|
reader_.sliceBuilder8.write(lineBreak);
|
||||||
}
|
}
|
||||||
|
@ -1771,7 +1771,7 @@ final class Scanner
|
||||||
spacesTransaction = Transaction(reader_.sliceBuilder8);
|
spacesTransaction = Transaction(reader_.sliceBuilder8);
|
||||||
|
|
||||||
const startLength = reader_.sliceBuilder8.length;
|
const startLength = reader_.sliceBuilder8.length;
|
||||||
scanPlainSpacesToSlice8(startMark);
|
scanPlainSpacesToSlice(startMark);
|
||||||
if(startLength == reader_.sliceBuilder8.length ||
|
if(startLength == reader_.sliceBuilder8.length ||
|
||||||
(flowLevel_ == 0 && reader_.column < indent))
|
(flowLevel_ == 0 && reader_.column < indent))
|
||||||
{
|
{
|
||||||
|
@ -1789,7 +1789,7 @@ final class Scanner
|
||||||
///
|
///
|
||||||
/// Assumes that the caller is building a slice in Reader, and puts the spaces
|
/// Assumes that the caller is building a slice in Reader, and puts the spaces
|
||||||
/// into that slice.
|
/// into that slice.
|
||||||
void scanPlainSpacesToSlice8(const Mark startMark) @system pure nothrow @nogc
|
void scanPlainSpacesToSlice(const Mark startMark) @system pure nothrow @nogc
|
||||||
{
|
{
|
||||||
// The specification is really confusing about tabs in plain scalars.
|
// The specification is really confusing about tabs in plain scalars.
|
||||||
// We just forbid them completely. Do not use tabs in YAML!
|
// We just forbid them completely. Do not use tabs in YAML!
|
||||||
|
@ -1809,7 +1809,7 @@ final class Scanner
|
||||||
}
|
}
|
||||||
|
|
||||||
// Newline after the spaces (if any)
|
// Newline after the spaces (if any)
|
||||||
const lineBreak = scanLineBreak8();
|
const lineBreak = scanLineBreak();
|
||||||
allowSimpleKey_ = true;
|
allowSimpleKey_ = true;
|
||||||
|
|
||||||
static bool end(Reader reader_) @safe pure nothrow @nogc
|
static bool end(Reader reader_) @safe pure nothrow @nogc
|
||||||
|
@ -1830,7 +1830,7 @@ final class Scanner
|
||||||
if(reader_.peek() == ' ') { reader_.forward(); }
|
if(reader_.peek() == ' ') { reader_.forward(); }
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const lBreak = scanLineBreak8();
|
const lBreak = scanLineBreak();
|
||||||
extraBreaks = true;
|
extraBreaks = true;
|
||||||
reader_.sliceBuilder8.write(lBreak);
|
reader_.sliceBuilder8.write(lBreak);
|
||||||
|
|
||||||
|
@ -1849,7 +1849,7 @@ final class Scanner
|
||||||
/// characters into that slice.
|
/// characters into that slice.
|
||||||
///
|
///
|
||||||
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
||||||
void scanTagHandleToSlice8(string name)(const Mark startMark)
|
void scanTagHandleToSlice(string name)(const Mark startMark)
|
||||||
@system pure nothrow @nogc
|
@system pure nothrow @nogc
|
||||||
{
|
{
|
||||||
dchar c = reader_.peek();
|
dchar c = reader_.peek();
|
||||||
|
@ -1887,7 +1887,7 @@ final class Scanner
|
||||||
/// characters into that slice.
|
/// characters into that slice.
|
||||||
///
|
///
|
||||||
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
||||||
void scanTagURIToSlice8(string name)(const Mark startMark)
|
void scanTagURIToSlice(string name)(const Mark startMark)
|
||||||
@trusted pure nothrow // @nogc
|
@trusted pure nothrow // @nogc
|
||||||
{
|
{
|
||||||
// Note: we do not check if URI is well-formed.
|
// Note: we do not check if URI is well-formed.
|
||||||
|
@ -1902,7 +1902,7 @@ final class Scanner
|
||||||
auto chars = reader_.get8(length);
|
auto chars = reader_.get8(length);
|
||||||
reader_.sliceBuilder8.write(chars);
|
reader_.sliceBuilder8.write(chars);
|
||||||
length = 0;
|
length = 0;
|
||||||
scanURIEscapesToSlice8!name(startMark);
|
scanURIEscapesToSlice!name(startMark);
|
||||||
if(error_) { return; }
|
if(error_) { return; }
|
||||||
}
|
}
|
||||||
else { ++length; }
|
else { ++length; }
|
||||||
|
@ -1929,7 +1929,7 @@ final class Scanner
|
||||||
/// characters into that slice.
|
/// characters into that slice.
|
||||||
///
|
///
|
||||||
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
/// In case of an error, error_ is set. Use throwIfError() to handle this.
|
||||||
void scanURIEscapesToSlice8(string name)(const Mark startMark)
|
void scanURIEscapesToSlice(string name)(const Mark startMark)
|
||||||
@system pure nothrow // @nogc
|
@system pure nothrow // @nogc
|
||||||
{
|
{
|
||||||
// URI escapes encode a UTF-8 string. We store UTF-8 code units here for
|
// URI escapes encode a UTF-8 string. We store UTF-8 code units here for
|
||||||
|
@ -2018,7 +2018,7 @@ final class Scanner
|
||||||
/// '\u2028' : '\u2028'
|
/// '\u2028' : '\u2028'
|
||||||
/// '\u2029 : '\u2029'
|
/// '\u2029 : '\u2029'
|
||||||
/// no break : '\0'
|
/// no break : '\0'
|
||||||
dchar scanLineBreak8() @safe pure nothrow @nogc
|
dchar scanLineBreak() @safe pure nothrow @nogc
|
||||||
{
|
{
|
||||||
const c = reader_.peek();
|
const c = reader_.peek();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue