private static void Directory(string path, Container container) { var sourceFolder = new AbsoluteFolder(path); var renderSettings = RenderSettings.DefaultWiki(sourceFolder); renderSettings.EnsureFoldersExist(); renderSettings.TryParseSettingsFile(); container.RegisterInstance(renderSettings); var extensionSettings = container.GetAllInstances <IExtensionSettings>(); renderSettings.TryParseExtensionSettings(extensionSettings); var markdownFiles = System.IO.Directory .GetFiles(path, "*.md", SearchOption.AllDirectories) .Where(f => !f.ToLower().EndsWith("normalized.md")); foreach (var file in markdownFiles) { File(file, container, renderSettings); } // 1. pickup markdown file // 2. generate html in /rendered // 3. write images to /images // 4. write css to /css // 5. write js to /javascript // 6. write extension caches to /{ExtensionName} // 7. write markdown to /rendered }
public void AbsoluteFolder_HasCorrectFullPath() { var absoluteFolder = new AbsoluteFolder(@"c:\folder"); var folder = new Folder(absoluteFolder); Assert.AreEqual(@"c:\folder", folder.Absolute.FullPath); }
public void OneLevelRelativeFolder_HasCorrectFullPath() { var relativeFolder = new RelativeFolder(@"folder"); var absoluteFolder = new AbsoluteFolder(@"c:\"); var folder = new Folder(absoluteFolder, relativeFolder); Assert.AreEqual(@"c:\folder", folder.Absolute.FullPath); }
//////////////////////////////////////////////////////////////////////////////////////////////////// /// <summary> Constructor. </summary> /// /// <param name="rootPath"> Full pathname of the tags file. </param> public BlamPath(string rootPath) { AbsoluteFolder = Path.GetFullPath(rootPath); var splitPath = AbsoluteFolder.Split(new char[] { Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries); EndFolder = splitPath.Last(); Root = System.String.Join(Path.DirectorySeparatorChar.ToString(), splitPath.Take(splitPath.Length - 1)); }
static void Main(string[] args) { var container = new Container(); var scope = new ThreadScopedLifestyle(); container.Options.DefaultScopedLifestyle = scope; Ea.Plugin.Register(container); container.Collection.Register <IMarkdownExtension>( typeof(FolderFromDiskExtension), typeof(SnippetExtension), typeof(PanZoomImageExtension), typeof(ExcelTableExtension), typeof(MsSqlTableExtension), typeof(GitHistoryExtension), typeof(GitGraphExtension), typeof(DatamodelApiExtension), typeof(WorkflowNotesExtension), typeof(BpmnGraphExtension), typeof(DiagramImageExtension), typeof(ObjectTextExtension), typeof(TableNotesExtension), typeof(TableOfContentExtension), typeof(NoteExtension), typeof(XmlSnippetExtension), typeof(NestedBlockExtension) ); container.Collection.Register <IExtensionInfo>( typeof(FolderListExtensionInfo), typeof(FolderFromDiskExtensionInfo), typeof(MsSqlTableExtensionInfo), typeof(PanZoomImageExtensionInfo), //typeof(GitGraphExtensionInfo), typeof(GitHistoryExtensionInfo), typeof(TableNotesExtensionInfo), typeof(KeyboardKeysExtensionInfo), typeof(ExcelTableExtensionInfo), typeof(WorkflowNotesExtensionInfo), typeof(ObjectTextExtensionInfo), typeof(BpmnGraphExtensionInfo), typeof(SnippetExtensionInfo) ); // Arguments: // - selfcontained (embed all into single html) System.Console.WriteLine("Marking down..."); if (args.Length > 0) { string path = args[0]; if (System.IO.File.Exists(path)) { var directory = Path.GetDirectoryName(path); var sourceFolder = new AbsoluteFolder(directory); var renderSettings = RenderSettings.DefaultFile(sourceFolder); renderSettings.EnsureFoldersExist(); renderSettings.TryParseSettingsFile(); container.RegisterInstance(renderSettings); var extensionSettings = container.GetAllInstances <IExtensionSettings>(); renderSettings.TryParseExtensionSettings(extensionSettings); File(path, container, null); } if (System.IO.Directory.Exists(path)) { Directory(path, container); } } else { AggregateCheatSheet(container); } }
private static void File(string fullFilePath, Container container, RenderSettings settings) { string body = null; string summaries = null; string cssHeader = null; string jsHeader = null; var sourceFolder = new AbsoluteFolder(Path.GetDirectoryName(fullFilePath)); if (settings == null) { settings = RenderSettings.DefaultWiki(sourceFolder); } using (var scope = ThreadScopedLifestyle.BeginScope(container)) using (var writer = new StringWriter()) { MarkdownPipeline pipeline = CreatePipeline(container); var markdown = System.IO.File.ReadAllText(fullFilePath); var markdownDocument = Markdown.Parse(markdown, pipeline); var renderer = new ExtensionHtmlRenderer(writer, markdownDocument, settings, pipeline); renderer.RegisterDynamicCss(new Code("markdown-extensions", "0.0.1", () => Assembly.GetExecutingAssembly().GetFileContent("vscode-markdown.css"))); pipeline.Setup(renderer); RegisterBlocks(renderer); renderer.Parse(container); renderer.Validate(container); renderer.Transform(); renderer.Render(markdownDocument); var fileName = Path.GetFileName(fullFilePath); renderer.RenderMarkdown(fileName, markdownDocument); writer.Flush(); body = writer.ToString(); using (var summaryWriter = new StringWriter()) { // a bit of a hack to use different writer for summaries renderer.Writer = summaryWriter; renderer.RenderSummaries(markdownDocument); summaryWriter.Flush(); summaries = summaryWriter.ToString(); } cssHeader = renderer.RenderCssHeader(); jsHeader = renderer.RenderJavascriptHeader(); } var document = $@" <html> <head> {jsHeader} {cssHeader} </head> <body> {summaries} <main> {body} </main> </body> </html>" ; string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fullFilePath); var file = new File(settings.OutputFolder, fileNameWithoutExtension + ".html"); System.IO.File.WriteAllText(file.AbsolutePath, document); }