@@ -13,45 +13,39 @@ public static class CharIteratorHelper
1313 {
1414 public static bool TrimStartAndCountNewLines < T > ( ref T iterator , out int countNewLines ) where T : ICharIterator
1515 {
16- countNewLines = 0 ;
17- var c = iterator . CurrentChar ;
18- bool hasWhitespaces = false ;
19- while ( c . IsWhitespace ( ) )
20- {
21- if ( c == '\n ' )
22- {
23- countNewLines ++ ;
24- }
25- hasWhitespaces = true ;
26- c = iterator . NextChar ( ) ;
27- }
28- return hasWhitespaces ;
16+ return TrimStartAndCountNewLines ( ref iterator , out countNewLines , out _ ) ;
2917 }
3018
31- public static bool TrimStartAndCountNewLines < T > ( ref T iterator , out int countNewLines , out NewLine firstNewline ) where T : ICharIterator
19+ public static bool TrimStartAndCountNewLines < T > ( ref T iterator , out int countNewLines , out NewLine lastLine ) where T : ICharIterator
3220 {
3321 countNewLines = 0 ;
3422 var c = iterator . CurrentChar ;
3523 bool hasWhitespaces = false ;
36- firstNewline = NewLine . None ;
37- while ( c . IsWhitespace ( ) )
24+ lastLine = NewLine . None ;
25+ while ( c != ' \0 ' && c . IsWhitespace ( ) )
3826 {
3927 if ( c == '\n ' || c == '\r ' )
4028 {
41- if ( c == '\r ' && iterator . PeekChar ( ) == '\n ' && firstNewline != NewLine . None )
29+ if ( c == '\r ' && iterator . PeekChar ( ) == '\n ' )
4230 {
43- firstNewline = NewLine . CarriageReturnLineFeed ;
31+ lastLine = NewLine . CarriageReturnLineFeed ;
32+ iterator . SkipChar ( ) ; // skip \n
4433 }
45- else if ( c == '\n ' && firstNewline != NewLine . None )
34+ else if ( c == '\n ' )
4635 {
47- firstNewline = NewLine . LineFeed ;
36+ lastLine = NewLine . LineFeed ;
4837 }
49- else if ( c == '\r ' && firstNewline != NewLine . None )
38+ else if ( c == '\r ' )
5039 {
51- firstNewline = NewLine . CarriageReturn ;
40+ lastLine = NewLine . CarriageReturn ;
5241 }
5342 countNewLines ++ ;
5443 }
44+ else
45+ {
46+ // reset last line if if have a whitespace after
47+ lastLine = NewLine . None ;
48+ }
5549 hasWhitespaces = true ;
5650 c = iterator . NextChar ( ) ;
5751 }
0 commit comments