internal void SynchronizeToken(ParsedToken parsedToken, string remainingText) { if (parsedToken.QueryToken == null) { string tokenString = parsedToken.String; if (tokenString.StartsWith("$")) { string v = tokenString.TryBefore('.') ?? tokenString; if (!Variables.TryGetValue(v, out ValueProviderBase? prov)) { SafeConsole.WriteLineColor(ConsoleColor.Magenta, "Variable '{0}' not found!".FormatWith(v)); } var provToken = prov as TokenValueProvider; if (!(provToken is TokenValueProvider)) { SafeConsole.WriteLineColor(ConsoleColor.Magenta, "Variable '{0}' is not a Query Token"); } var part = provToken?.ParsedToken; if (part != null && part.QueryToken == null) { SafeConsole.WriteLineColor(ConsoleColor.Magenta, "Variable '{0}' is not fixed yet! currently: '{1}'".FormatWith(v, part.String)); } var after = tokenString.TryAfter('.'); tokenString = (part == null ? "Unknown" : part.QueryToken == null ? part.String : part.QueryToken.FullKey()) + (after == null ? null : ("." + after)); } SafeConsole.WriteColor(ConsoleColor.Red, " " + tokenString); Console.WriteLine(" " + remainingText); FixTokenResult result = QueryTokenSynchronizer.FixToken(Replacements, tokenString, out QueryToken? token, QueryDescription, SubTokensOptions.CanElement | SubTokensOptions.CanAnyAll /*not always*/, remainingText, allowRemoveToken: false, allowReGenerate: ModelType != null); switch (result) { case FixTokenResult.Nothing: case FixTokenResult.Fix: this.HasChanges = true; parsedToken.QueryToken = token; parsedToken.String = token !.FullKey(); break; case FixTokenResult.SkipEntity: case FixTokenResult.RemoveToken: case FixTokenResult.ReGenerateEntity: throw new TemplateSyncException(result); } } }
public void SynchronizeValue(Type type, ref string?value, bool isList) { string? val = value; FixTokenResult result = QueryTokenSynchronizer.FixValue(Replacements, type, ref val, allowRemoveToken: false, isList: isList); switch (result) { case FixTokenResult.Fix: case FixTokenResult.Nothing: value = val; break; case FixTokenResult.SkipEntity: case FixTokenResult.RemoveToken: throw new TemplateSyncException(result); } }
public static FixTokenResult FixToken(Replacements replacements, ref QueryTokenEmbedded token, QueryDescription qd, SubTokensOptions options, string remainingText, bool allowRemoveToken, bool allowReCreate) { SafeConsole.WriteColor(token.ParseException == null ? ConsoleColor.Gray : ConsoleColor.Red, " " + token.TokenString); Console.WriteLine(" " + remainingText); if (token.ParseException == null) { return(FixTokenResult.Nothing); } FixTokenResult result = FixToken(replacements, token.TokenString, out QueryToken resultToken, qd, options, remainingText, allowRemoveToken, allowReCreate); if (result == FixTokenResult.Fix) { token = new QueryTokenEmbedded(resultToken); } return(result); }
public TemplateSyncException(FixTokenResult result) { this.Result = result; }