public static bool TrySeparateSimplePart(this IEnumerable <Token> tokens, out TokenTuple result) { result = new TokenTuple(); var enumerable = tokens as Token[] ?? tokens.ToArray(); switch (enumerable.First().Type) { case TokenType.SimpleWord: result = new TokenTuple(new[] { enumerable.First() }, enumerable.Skip(1)); return(true); case TokenType.EscapingDelimiter: if (enumerable.Count() < 2) { result = new TokenTuple(new[] { enumerable.First() }, enumerable.Skip(1)); return(true); } else { result = new TokenTuple(enumerable.Skip(1).Take(1), enumerable.Skip(2)); return(true); } } result = null; return(false); }
public static bool TrySeparateStylePart(this IEnumerable <Token> tokens, out TokenTuple tuple) { tuple = new TokenTuple(); if (TryCollectTokenToNextDelimiter(tokens, out var collectedTokens)) { tuple = new TokenTuple(collectedTokens, tokens.Skip(collectedTokens.Count())); return(true); } return(false); }