protected void GenerateHtml(ResolvedStory story, string outPath, bool debug) { _logger.Debug("Generating HTML..."); var index = FillTemplate(IndexTemplate ?? Template.Index, new Dictionary <string, string> { { "Language", _language }, { "Title", story.Name }, { "Description", Markdown.ToHtml(story.Description) }, { "FirstScene", string.Format("{0}.html", story.FirstPage) } }); File.WriteAllText(Path.Combine(outPath, "index.html"), index); foreach (var page in story.Pages) { File.WriteAllText(Path.Combine(outPath, "styles.css"), StylesTemplate ?? Template.Styles); var content = page.Content; foreach (var anchor in Utilities.GetInstance(Warnings, page.Name).ParseAnchors(page.Content)) { var newAnchor = string.Format("[{0}]({1}.html)", anchor.Text, anchor.Href.Target); content = content.Replace(anchor.Original, newAnchor); } if (debug) { content += string.Format("\n\n### State Debug\n\n{0}", string.Join("\n", page.ActiveToggles.Select(t => string.Format("- {0}", t)).ToArray())); } var scene = FillTemplate(SceneTemplate ?? Template.Scene, new Dictionary <string, string> { { "Language", _language }, { "Title", story.Name }, { "Content", Markdown.ToHtml(content) } }); File.WriteAllText(Path.Combine(outPath, string.Format("{0}.html", page.Name)), scene); } if (!string.IsNullOrWhiteSpace(ImageDir)) { var dirname = ImageDir.Substring(ImageDir.LastIndexOf(Path.DirectorySeparatorChar) + 1); Directory.CreateDirectory(Path.Combine(outPath, dirname)); CopyFilesRecursively(ImageDir, Path.Combine(outPath, dirname)); } }
protected void GenerateHtml(ResolvedStory story, string outPath, bool debug) { var index = FillTemplate(IndexTemplate ?? Template.Index, new Dictionary<string, string> { {"Title", story.Name}, {"Description", Markdown.Transform(story.Description)}, {"FirstScene", string.Format("{0}.html", story.FirstPage)} }); File.WriteAllText(Path.Combine(outPath, "index.html"), index); foreach (var page in story.Pages) { File.WriteAllText(Path.Combine(outPath, "styles.css"), StylesTemplate ?? Template.Styles); var content = page.Content; foreach (var anchor in Utilities.GetInstance(page.Name).ParseAnchors(page.Content)) { var newAnchor = string.Format("[{0}]({1}.html)", anchor.Text, anchor.Href.Target); content = content.Replace(anchor.Original, newAnchor); } if (debug) { content += string.Format("\n\n### State Debug\n\n{0}", string.Join("\n", page.ActiveToggles.Select(t => string.Format("- {0}", t)).ToArray())); } var scene = FillTemplate(SceneTemplate ?? Template.Scene, new Dictionary<string, string> { {"Title", story.Name}, {"Content", Markdown.Transform(content)} }); File.WriteAllText(Path.Combine(outPath, string.Format("{0}.html", page.Name)), scene); } if (!string.IsNullOrWhiteSpace(ImageDir)) { var dirname = ImageDir.Substring(ImageDir.LastIndexOf(Path.DirectorySeparatorChar) + 1); Directory.CreateDirectory(Path.Combine(outPath, dirname)); CopyFilesRecursively(ImageDir, Path.Combine(outPath, dirname)); } }
public virtual void Render(ResolvedStory story, string outPath, bool debug = false) { Story = story; GenerateHtml(story, outPath, debug); }