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); }
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); }
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); } }
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); }
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); }
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; }
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); } }
public void WriteAsHtml(string outputfile, TOCBuilder tocBuilder) { ProduceHtmlFromMarkdown(_file, outputfile, tocBuilder); }