Пример #1
0
        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));
            }
        }
Пример #2
0
        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));
            }
        }
Пример #3
0
 public virtual void Render(ResolvedStory story, string outPath, bool debug = false)
 {
     Story = story;
     GenerateHtml(story, outPath, debug);
 }
Пример #4
0
 public virtual void Render(ResolvedStory story, string outPath, bool debug = false)
 {
     Story = story;
     GenerateHtml(story, outPath, debug);
 }