Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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]);
            }
        }