Files
spectre.console/src/Extensions/Spectre.Console.Json/JsonTokenReader.cs
Patrik Svensson 42fd801876 Preparations for the 1.0 release
* Less cluttered solution layout.
* Move examples to a repository of its own.
* Move Roslyn analyzer to a repository of its own.
* Enable central package management.
* Clean up csproj files.
* Add README file to NuGet packages.
2024-08-06 15:38:28 +02:00

56 lines
1.1 KiB
C#

namespace Spectre.Console.Json;
internal sealed class JsonTokenReader
{
private readonly List<JsonToken> _reader;
private readonly int _length;
public int Position { get; private set; }
public bool Eof => Position >= _length;
public JsonTokenReader(List<JsonToken> tokens)
{
_reader = tokens;
_length = tokens.Count;
Position = 0;
}
public JsonToken Consume(JsonTokenType type)
{
var read = Read();
if (read == null)
{
throw new InvalidOperationException("Could not read token");
}
if (read.Type != type)
{
throw new InvalidOperationException($"Expected '{type}' token, but found '{read.Type}'");
}
return read;
}
public JsonToken? Peek()
{
if (Eof)
{
return null;
}
return _reader[Position];
}
public JsonToken? Read()
{
if (Eof)
{
return null;
}
Position++;
return _reader[Position - 1];
}
}