Пример #1
0
        public void New_Newline_Succeeds()
        {
            var result = ScanToken.Newline("\r\n", Start);

            using (new AssertionScope())
            {
                result.Type.Should().Be(ScanTokenType.Newline);
                result.Text.Should().Be("\r\n");
                result.Start.Should().BeEquivalentTo(Start);
                result.End.Should().BeEquivalentTo(new ScanPosition(Start.Absolute + 2, Start.Row + 1, 0));
                result.ToString().Should().Be("n(\\r\\n)");
            }
        }
Пример #2
0
            private IEnumerable <ScanToken> ReadWhitespace()
            {
                var position = CurrentPosition;

                var whitespace = string.Empty;
                var newline    = string.Empty;

                do
                {
                    switch (_candidate)
                    {
                    case '\r':
                        if (newline.Length > 0)
                        {
                            whitespace += '\r';
                        }
                        else
                        {
                            newline = "\r";
                        }
                        break;

                    case '\n':
                        if (whitespace.Length > 0)
                        {
                            yield return(ScanToken.Space(whitespace, position));
                        }
                        yield return(ScanToken.Newline(newline + "\n", position + (uint)whitespace.Length));

                        _column = -1;
                        _row++;
                        Next();
                        yield break;

                    default:
                        whitespace += newline + _candidate;
                        newline     = string.Empty;
                        break;
                    }
                } while (Next() && IsWhitespaceCharacter(_candidate));

                yield return(ScanToken.Space(whitespace + newline, position));
            }
Пример #3
0
 private static ScanToken Newline(string text, uint absolutePosition, uint row, uint column) =>
 ScanToken.Newline(text, new ScanPosition(absolutePosition, row, column));