static void StartProcess(CmdArgs args) { var file = new GFile(args.InFile, args.OutFile); var xOffset = new OffsetController(args.OffsetX); var yOffset = new OffsetController(args.OffsetY); file.Reset(); foreach (var line in file.ReadLines()) { if (RegexHelper.TryParse(line, XPattern, out double x)) { xOffset.Approve(x); } if (RegexHelper.TryParse(line, YPattern, out double y)) { yOffset.Approve(y); } } string output; foreach (var line in file.ReadLines()) { output = line; output = RegexHelper.Replace(output, XPattern, xOffset); output = RegexHelper.Replace(output, YPattern, yOffset); file.WriteLine(output); } Console.WriteLine($"Created file: {args.OutFile}"); Console.WriteLine(xOffset.PrintInfo("X")); Console.WriteLine(yOffset.PrintInfo("Y")); }
public static string Replace(string line, string pattern, OffsetController offset) { var format = new DoubleFormatter(); Func <Match, string> evaluate = (match) => { if (TryParse(match, out double value)) { return(string.Format(format, "{0}{1}", match.Value[0], offset.Adjust(value))); } return(line); }; var evaluator = new MatchEvaluator(evaluate); return(Regex.Replace(line, pattern, evaluator)); }