Example #1
0
        static void Main(string[] args)
        {
            var rootDirName = DocumentationRoot();
            Console.WriteLine("RootDirName: "+rootDirName);
            var inputdir = rootDirName + "/content/english/book/";
            var pages = new List<BookPage>();

            var tocBuilder = new TOCBuilder(File.ReadAllText(inputdir+"/toc.yaml"));

            foreach(var file in Directory.GetFiles(inputdir,"*.md"))
            {
                var page = new BookPage(file);
                var outputfile = OutputDir() + Path.GetFileName(Path.GetFileNameWithoutExtension(file))+".html";
                pages.Add(page);
                page.WriteAsHtml(outputfile, tocBuilder);
            }

            foreach (var file in Directory.GetFiles(inputdir, "*").Where(file => Path.GetExtension(file).ToLower()!=".md"))
            {
                var outputfile = Path.Combine(OutputDir(), Path.GetFileName(file));
                Console.WriteLine("outputfile: "+outputfile);
                PathTools.EnsureDirectoryExists(Path.GetDirectoryName(outputfile));
                File.Copy(file, outputfile,true);
            }

            File.Copy(DocumentationRoot() + "/layout/book.css", OutputDir() + "/book.css", true);
        }
Example #2
0
        private string PostProcessHtml(string html, TOCBuilder tocBuilder, string outputfile)
        {
            var regex = new Regex(@"<pre><code>(.*?)</code></pre>", RegexOptions.Singleline);

            var postprocessed = regex.Replace(html, match => ExampleHtmlGenerator.ExamleHtmlFor(match.Groups[1].ToString()));

            postprocessed = postprocessed.Replace(".md", ".html");

            var prefixmessage = _usingEnglishAsFallback
                                        ? "<p>This page has not been translated into this language yet.  You'll find the english version of this document below.</p>"
                                        : "";

            var final = String.Format(@"<!DOCTYPE html>
<html>
  <head>
    <meta charset='utf-8' />
    <link href='book.css' rel='stylesheet' type='text/css' />
    <link href='http://fonts.googleapis.com/css?family=Droid+Sans+Mono' rel='stylesheet' type='text/css'>
  </head>
  <body>
  <div class='languagebar'>
  Choose language:
{0}
</div>
  <div style=""float:left; width=350px;"" class='toc'>
  {1}  
</div>
<div class='text'>
{2}
{3}
</div></body></html>", LanguageSelector(outputfile), tocBuilder.Build(), prefixmessage, postprocessed);

            return(final);
        }
Example #3
0
        static void Main(string[] args)
        {
            var rootDirName = DocumentationRoot();
            Console.WriteLine("RootDirName: "+rootDirName);

            var englishinputdir = rootDirName + "/content/english/book";

            foreach (var lang in AvailableLanguages.Get())
            {
                var inputdir = rootDirName + "/content/"+lang+"/book/";
                var pages = new List<BookPage>();

                var tocBuilder = new TOCBuilder(File.ReadAllText(rootDirName + "/content/toc.yaml"));

                var outputDir = OutputDir(lang);
                foreach (var file in Directory.GetFiles(englishinputdir, "*.md"))
                {
                    var languagefile = inputdir + "/" + Path.GetFileName(file);
                    string filecontents;
                    bool usingEnglishAsFallback = !File.Exists(languagefile);

                    string filetouse = usingEnglishAsFallback ? file : languagefile;

                    var page = new BookPage(filetouse, lang, usingEnglishAsFallback);
                    var outputfile = outputDir + Path.GetFileName(Path.GetFileNameWithoutExtension(file)) + ".html";
                    pages.Add(page);
                    page.WriteAsHtml(outputfile, tocBuilder);
                }

                CopyNonMDFilesFrom(englishinputdir, outputDir);
                CopyNonMDFilesFrom(inputdir, outputDir);

                File.Copy(DocumentationRoot() + "/layout/book.css", outputDir + "/book.css", true);
            }
        }
Example #4
0
 private static void ProduceHtmlFromMarkdown(string file, string outputfile, TOCBuilder tocBuilder)
 {
     string input = File.ReadAllText(file);
     var output = new Markdown().Transform(input);
     output = PostProcessHtml(output, tocBuilder);
     PathTools.EnsureDirectoryExists(Path.GetDirectoryName(outputfile));
     File.WriteAllText(outputfile, output);
 }
Example #5
0
        private void ProduceHtmlFromMarkdown(string file, string outputfile, TOCBuilder tocBuilder)
        {
            string input  = File.ReadAllText(file);
            var    output = new Markdown().Transform(input);

            output = PostProcessHtml(output, tocBuilder, outputfile);
            PathTools.EnsureDirectoryExists(Path.GetDirectoryName(outputfile));
            File.WriteAllText(outputfile, output);
        }
Example #6
0
        private static string PostProcessHtml(string html, TOCBuilder tocBuilder)
        {
            var regex = new Regex(@"<pre><code>(.*?)</code></pre>", RegexOptions.Singleline);

            var postprocessed = regex.Replace(html, match => ExampleHtmlGenerator.ExamleHtmlFor(match.Groups[1].ToString()));

            var final = String.Format(@"<!DOCTYPE html>
            <html>
              <head>
            <meta charset='utf-8' />
            <link href='book.css' rel='stylesheet' type='text/css' />
            <link href='http://fonts.googleapis.com/css?family=Droid+Sans+Mono' rel='stylesheet' type='text/css'>
              </head>
              <body>
              <div style=""float:left; width=350px;"" class='toc'>
              {0}
            </div>
            <div class='text'>
            {1}
            </div></body></html>", tocBuilder.Build(), postprocessed);

            return final;
        }
Example #7
0
        static void Main(string[] args)
        {
            var rootDirName = DocumentationRoot();

            Console.WriteLine("RootDirName: " + rootDirName);

            var englishinputdir = rootDirName + "/content/english/book";

            foreach (var lang in AvailableLanguages.Get())
            {
                var inputdir = rootDirName + "/content/" + lang + "/book/";
                var pages    = new List <BookPage>();

                var tocBuilder = new TOCBuilder(File.ReadAllText(rootDirName + "/content/toc.yaml"));

                var outputDir = OutputDir(lang);
                foreach (var file in Directory.GetFiles(englishinputdir, "*.md"))
                {
                    var    languagefile = inputdir + "/" + Path.GetFileName(file);
                    string filecontents;
                    bool   usingEnglishAsFallback = !File.Exists(languagefile);

                    string filetouse = usingEnglishAsFallback ? file : languagefile;

                    var page       = new BookPage(filetouse, lang, usingEnglishAsFallback);
                    var outputfile = outputDir + Path.GetFileName(Path.GetFileNameWithoutExtension(file)) + ".html";
                    pages.Add(page);
                    page.WriteAsHtml(outputfile, tocBuilder);
                }

                CopyNonMDFilesFrom(englishinputdir, outputDir);
                CopyNonMDFilesFrom(inputdir, outputDir);

                File.Copy(DocumentationRoot() + "/layout/book.css", outputDir + "/book.css", true);
            }
        }
Example #8
0
 public void WriteAsHtml(string outputfile, TOCBuilder tocBuilder)
 {
     ProduceHtmlFromMarkdown(_file, outputfile, tocBuilder);
 }
Example #9
0
 public void WriteAsHtml(string outputfile, TOCBuilder tocBuilder)
 {
     ProduceHtmlFromMarkdown(_file, outputfile, tocBuilder);
 }