using System.IO; using System.Text.RegularExpressions; if (args.Length != 1) { Console.WriteLine("Usage: [directory of .md.tpl files]"); return 1; } if (!Directory.Exists(args[0])) { Console.WriteLine("Directory does not exist"); return 1; } var files = Directory.GetFiles(args[0], "*.md.tpl"); var macroRegex = new Regex(@"\[(!doclinkclass ){1}([^]]+)\]"); var evaluator = new MatchEvaluator(GenerateFragment); foreach (var f in files) { var fileTgt = f.Replace(".md.tpl", ".md"); var sourceText = File.ReadAllText(f); var replacedText = macroRegex.Replace(sourceText, evaluator); File.WriteAllText(fileTgt, replacedText); Console.WriteLine($"Pre-processed: {f} -> {fileTgt}"); } return 0; static string GenerateFragment(Match match) { // Groups[2] contains the class name var relPrefix = "../"; // Currently assuming that we're processing everything under ../landing/topics return $"([.net]({relPrefix}dotnet_api/api/OSGeo.MapGuide.{match.Groups[2].Value}.html), [Java]({relPrefix}java_api/org/osgeo/mapguide/{match.Groups[2].Value}.html), [PHP](TODO.md))"; }