public ParserContext ParseUserInput(String input, ParserContext context = null) { var parts = input.Split(' '); var settings = Program.Settings; CurrentParserContext = context ?? CurrentParserContext; if (parts.Length == 0) return ParserContext.Empty; var firstCommand = parts[0]; if(firstCommand.StartsWith("@")) { return ParseTime(firstCommand); } var userAction = settings.GetActionForShortcut(firstCommand); if(userAction == null) { return ParserContext.Empty; } CurrentParserContext.ContextAction = userAction; var inputSansAction = parts.Skip(1).ToArray(); HandleAction(inputSansAction); HandleLocation(inputSansAction); HandleTime(inputSansAction); var returningContext = CurrentParserContext; CurrentParserContext = new ParserContext(); return returningContext; }
public ParserEngine() { CurrentParserContext = new ParserContext(); }