public ReadResults Parse(IStringReader reader, DispatcherResources resources, out Message result) { result = default; string message = reader.GetRemaining(); Dictionary <int, EntitySelector> selectors = new Dictionary <int, EntitySelector>(); while (reader.CanRead()) { if (reader.Peek() == '@') { if (reader.CanRead(2) && "parse".Contains(reader.Peek(1))) { int start = reader.GetCursor(); ReadResults readResults = new EntitySelectorParser(reader, resources, UseBedrock).Parse(out EntitySelector entitySelector); if (!readResults.Successful) { return(readResults); } selectors.Add(start, entitySelector); } else { reader.Skip(2); } continue; } reader.Skip(); } result = new Message(message, selectors); return(ReadResults.Success()); }
public ReadResults Parse(IStringReader reader, DispatcherResources resources, out string result) { if (Type == StringType.GREEDY) { result = reader.GetRemaining(); reader.SetCursor(reader.GetLength()); return(ReadResults.Success()); } else if (Type == StringType.WORD) { return(reader.ReadUnquotedString(out result)); } else { return(reader.ReadString(out result)); } }