private static void DoCompile(CompileOptions compileOptions) { var dictionary = new Dictionary <string, object>(); var serialisation = new SettingsSerialisation(dictionary); var store = new TemplateStore(serialisation); var inputFiles = GetInputFiles(compileOptions.InputFiles); var parser = new TemplateParser(); foreach (var inputFile in inputFiles) { if (inputFile.EndsWith("readme.md", StringComparison.InvariantCultureIgnoreCase)) { Console.WriteLine("Ignoring readme.md..."); continue; } var markdown = File.ReadAllText(inputFile); var template = parser.Parse(markdown); template.InputFile = Path.Combine(Directory.GetCurrentDirectory(), inputFile); store.AddTemplate(template); // TODO: Concatenate markdown to a readme.md } var stream = File.Open(compileOptions.OutputFile, FileMode.Create, FileAccess.Write); using (var streamWriter = new StreamWriter(stream)) SettingsSerialisation.SerialiseToXaml(streamWriter, serialisation); stream = File.Open(compileOptions.ReadMeFile, FileMode.Create, FileAccess.Write); using (var streamWriter = new StreamWriter(stream)) { var readme = new ReadmeFormatter(streamWriter, Path.GetDirectoryName(Path.GetFullPath(compileOptions.ReadMeFile))); readme.FormatTemplates(store); } }
public void FormatTemplates(TemplateStore templates) { var templatesByCategory = new MultiValueDictionary <string, Template>(); foreach (var template in templates.Templates) { foreach (var category in template.Categories) { templatesByCategory.Add(category, template); } } writer.WriteLine("# Templates"); writer.WriteLine(); if (templatesByCategory.Count > 0) { writer.WriteLine("Categorised:"); writer.WriteLine(); foreach (var category in templatesByCategory.Keys.OrderBy(c => c)) { writer.WriteLine("* [{0}](#{1})", category, category.Replace(' ', '_')); } writer.WriteLine(); } writer.WriteLine("## All"); FormatTemplates(templates.Templates); foreach (var category in templatesByCategory.Keys.OrderBy(s => s)) { writer.WriteLine("<a name=\"{0}\"></a>", category.Replace(' ', '_')); writer.WriteLine("## Category: {0}", category); FormatTemplates(templatesByCategory[category]); } }