begin removing fastcharsearch

This commit is contained in:
Cameron Ross 2018-04-20 20:44:24 -03:00
parent 1dac1f39f3
commit 04e2c3baab
No known key found for this signature in database
GPG key ID: 777897D98DC91C54

View file

@ -61,8 +61,7 @@ struct ScalarAnalysis
"allowSingleQuoted", "allowDoubleQuoted", "allowBlock", "isNull") flags; "allowSingleQuoted", "allowDoubleQuoted", "allowBlock", "isNull") flags;
} }
///Quickly determines if a character is a newline. private alias isNewLine = among!('\n', '\u0085', '\u2028', '\u2029');
private mixin FastCharSearch!"\n\u0085\u2028\u2029"d newlineSearch_;
// override the canFind added by the FastCharSearch mixins // override the canFind added by the FastCharSearch mixins
private alias canFind = std.algorithm.canFind; private alias canFind = std.algorithm.canFind;
@ -1070,7 +1069,7 @@ struct Emitter
} }
//Check for line breaks, special, and unicode characters. //Check for line breaks, special, and unicode characters.
if(newlineSearch_.canFind(c)){lineBreaks = true;} if(c.isNewLine){lineBreaks = true;}
if(!(c == '\n' || (c >= '\x20' && c <= '\x7E')) && if(!(c == '\n' || (c >= '\x20' && c <= '\x7E')) &&
!((c == '\u0085' || (c >= '\xA0' && c <= '\uD7FF') || !((c == '\u0085' || (c >= '\xA0' && c <= '\uD7FF') ||
(c >= '\uE000' && c <= '\uFFFD')) && c != '\uFEFF')) (c >= '\uE000' && c <= '\uFFFD')) && c != '\uFEFF'))
@ -1087,7 +1086,7 @@ struct Emitter
previousSpace = true; previousSpace = true;
previousBreak = false; previousBreak = false;
} }
else if(newlineSearch_.canFind(c)) else if(c.isNewLine)
{ {
if(index == 0){leadingBreak = true;} if(index == 0){leadingBreak = true;}
if(index == scalar.length - 1){trailingBreak = true;} if(index == scalar.length - 1){trailingBreak = true;}
@ -1328,14 +1327,14 @@ struct ScalarWriter
} }
else if(breaks_) else if(breaks_)
{ {
if(!newlineSearch_.canFind(c)) if(!c.isNewLine)
{ {
writeStartLineBreak(); writeStartLineBreak();
writeLineBreaks(); writeLineBreaks();
emitter_.writeIndent(); emitter_.writeIndent();
} }
} }
else if((c == dcharNone || c == '\'' || c == ' ' || newlineSearch_.canFind(c)) else if((c == dcharNone || c == '\'' || c == ' ' || c.isNewLine)
&& startChar_ < endChar_) && startChar_ < endChar_)
{ {
writeCurrentRange(Flag!"UpdateColumn".yes); writeCurrentRange(Flag!"UpdateColumn".yes);
@ -1429,7 +1428,7 @@ struct ScalarWriter
const dchar c = nextChar(); const dchar c = nextChar();
if(breaks_) if(breaks_)
{ {
if(!newlineSearch_.canFind(c)) if(!c.isNewLine)
{ {
if(!leadingSpace && c != dcharNone && c != ' ') if(!leadingSpace && c != dcharNone && c != ' ')
{ {
@ -1452,7 +1451,7 @@ struct ScalarWriter
writeCurrentRange(Flag!"UpdateColumn".yes); writeCurrentRange(Flag!"UpdateColumn".yes);
} }
} }
else if(c == dcharNone || newlineSearch_.canFind(c) || c == ' ') else if(c == dcharNone || c.isNewLine || c == ' ')
{ {
writeCurrentRange(Flag!"UpdateColumn".yes); writeCurrentRange(Flag!"UpdateColumn".yes);
if(c == dcharNone){emitter_.writeLineBreak();} if(c == dcharNone){emitter_.writeLineBreak();}
@ -1473,13 +1472,13 @@ struct ScalarWriter
const dchar c = nextChar(); const dchar c = nextChar();
if(breaks_) if(breaks_)
{ {
if(!newlineSearch_.canFind(c)) if(!c.isNewLine)
{ {
writeLineBreaks(); writeLineBreaks();
if(c != dcharNone){emitter_.writeIndent();} if(c != dcharNone){emitter_.writeIndent();}
} }
} }
else if(c == dcharNone || newlineSearch_.canFind(c)) else if(c == dcharNone || c.isNewLine)
{ {
writeCurrentRange(Flag!"UpdateColumn".no); writeCurrentRange(Flag!"UpdateColumn".no);
if(c == dcharNone){emitter_.writeLineBreak();} if(c == dcharNone){emitter_.writeLineBreak();}
@ -1519,14 +1518,14 @@ struct ScalarWriter
} }
else if(breaks_) else if(breaks_)
{ {
if(!newlineSearch_.canFind(c)) if(!c.isNewLine)
{ {
writeStartLineBreak(); writeStartLineBreak();
writeLineBreaks(); writeLineBreaks();
writeIndent(Flag!"ResetSpace".yes); writeIndent(Flag!"ResetSpace".yes);
} }
} }
else if(c == dcharNone || newlineSearch_.canFind(c) || c == ' ') else if(c == dcharNone || c.isNewLine || c == ' ')
{ {
writeCurrentRange(Flag!"UpdateColumn".yes); writeCurrentRange(Flag!"UpdateColumn".yes);
} }
@ -1581,15 +1580,15 @@ struct ScalarWriter
const last = lastChar(text_, end); const last = lastChar(text_, end);
const secondLast = end > 0 ? lastChar(text_, end) : 0; const secondLast = end > 0 ? lastChar(text_, end) : 0;
if(newlineSearch_.canFind(text_[0]) || text_[0] == ' ') if(text_[0].isNewLine || text_[0] == ' ')
{ {
hints[hintsIdx++] = cast(char)('0' + bestIndent); hints[hintsIdx++] = cast(char)('0' + bestIndent);
} }
if(!newlineSearch_.canFind(last)) if(!last.isNewLine)
{ {
hints[hintsIdx++] = '-'; hints[hintsIdx++] = '-';
} }
else if(std.utf.count(text_) == 1 || newlineSearch_.canFind(secondLast)) else if(std.utf.count(text_) == 1 || secondLast.isNewLine)
{ {
hints[hintsIdx++] = '+'; hints[hintsIdx++] = '+';
} }
@ -1661,7 +1660,7 @@ struct ScalarWriter
void updateBreaks(in dchar c, const Flag!"UpdateSpaces" updateSpaces) pure @safe void updateBreaks(in dchar c, const Flag!"UpdateSpaces" updateSpaces) pure @safe
{ {
if(c == dcharNone){return;} if(c == dcharNone){return;}
breaks_ = newlineSearch_.canFind(c); breaks_ = (c.isNewLine != 0);
if(updateSpaces){spaces_ = c == ' ';} if(updateSpaces){spaces_ = c == ' ';}
} }