private static object?ReturnIfElse(FilterState pkg) { if (pkg.Data == null || pkg.SourcePath == null || pkg.SourcePath.Length < 1) { return(null); } var param = pkg.Params; object?GetMappedData(string s) => string.IsNullOrWhiteSpace(s) ? null : GetDataAtPath(pkg.NewPath(s.Split('.'))); // Get the params. // Get the data // If data == expected return recurse success path, else recurse fail path var target = GetDataAtPath(pkg); var expectKey = nameof(IfElseMappingParams.ExpectedValue); var expected = param.ContainsKey(expectKey) ? param[expectKey] : ""; var sameKey = nameof(IfElseMappingParams.Same); var samePath = param.ContainsKey(sameKey) ? param[sameKey] : ""; var differentKey = nameof(IfElseMappingParams.Different); var differentPath = param.ContainsKey(differentKey) ? param[differentKey] : ""; if (target == null) { return(GetMappedData(string.IsNullOrEmpty(expected) ? samePath : differentPath)); } return(GetMappedData(target.ToString() == expected ? samePath : differentPath)); }
private static object?JoinValues(FilterState pkg) { if (pkg.Data == null || pkg.SourcePath == null || pkg.SourcePath.Length < 1) { return(null); } var param = pkg.Params; object?GetMappedData(string s) => string.IsNullOrWhiteSpace(s) ? null : GetDataAtPath(pkg.NewPath(s.Split('.') ?? Array.Empty <string>())); // Get the params. // Get the data // If data == expected return recurse success path, else recurse fail path var target = GetDataAtPath(pkg); var infixKey = nameof(JoinPathsMappingParams.Infix); var infix = param.ContainsKey(infixKey) ? param[infixKey] ?? "" : ""; var extraDataKey = nameof(JoinPathsMappingParams.ExtraData); var extraDataPath = param.ContainsKey(extraDataKey) ? param[extraDataKey] : ""; if (string.IsNullOrWhiteSpace(extraDataPath !)) { return(target); } var extraData = GetMappedData(extraDataPath)?.ToString(); if (string.IsNullOrWhiteSpace(extraData !)) { return(target); } return(target + infix + extraData); }