private void InitializeThreeTokens(IReadOnlyList <TokenCollector.TokenInfo> tokens) { //Debug.Assert(tokens.Count == 3); // subMapping '- key :' TokenCollector.TokenInfo secondToken = tokens[1]; TokenCollector.TokenInfo thirdToken = tokens[2]; if (secondToken.tokenType != ETokenType.StringValue) { throw new InvalidDataException($"Unexpected Token: {secondToken}"); } if (thirdToken.tokenType != ETokenType.Assignment) { throw new InvalidDataException($"Unexpected Token: {thirdToken}"); } Key = secondToken.value; }
private void InitializeFourTokens(IReadOnlyList <TokenCollector.TokenInfo> tokens) { //Debug.Assert(tokens.Count == 4); // keyValuePair '- key = value' TokenCollector.TokenInfo secondToken = tokens[1]; TokenCollector.TokenInfo thirdToken = tokens[2]; TokenCollector.TokenInfo fourthToken = tokens[3]; if (secondToken.tokenType != ETokenType.StringValue) { throw new InvalidDataException($"Unexpected Token: {secondToken}"); } if (thirdToken.tokenType != ETokenType.Assignment) { throw new InvalidDataException($"Unexpected Token: {thirdToken}"); } if (fourthToken.tokenType != ETokenType.StringValue) { throw new InvalidDataException($"Unexpected Token: {thirdToken}"); } Key = secondToken.value; Value = fourthToken.value; }
private void InitializeTwoTokens(IReadOnlyList <TokenCollector.TokenInfo> tokens) { //Debug.Assert(tokens.Count == 2); // raw value '- value' // list mapping '- :' TokenCollector.TokenInfo secondToken = tokens[1]; switch (secondToken.tokenType) { case ETokenType.StringValue: // value only Value = secondToken.value; break; case ETokenType.Assignment: // no key, no value break; case ETokenType.ObjectDepth: default: throw new InvalidDataException($"Unexpected Token: {secondToken}"); } }
public ConfigNode(IReadOnlyList <TokenCollector.TokenInfo> tokens) { int tokenCount = tokens.Count; if (tokenCount > 0) { TokenCollector.TokenInfo firstToken = tokens[0]; if (firstToken.tokenType == ETokenType.ObjectDepth) { LineNumber = firstToken.lineNumber; ObjectDepth = firstToken.value.Length; } else { throw new InvalidDataException($"Expected DepthToken, but got {firstToken}"); } } if (tokenCount == 2) { InitializeTwoTokens(tokens); } else if (tokenCount == 3) { InitializeThreeTokens(tokens); } else if (tokenCount == 4) { InitializeFourTokens(tokens); } else { int lineNumber2 = tokenCount > 0 ? tokens[0].lineNumber : -1; throw new InvalidDataException($"Config Node at line {lineNumber2} had unexpected amount of tokens: {tokenCount} ({string.Join(", ", tokens)})"); } }