Пример #1
0
        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
        }
Пример #2
0
        public void AbsoluteFolder_HasCorrectFullPath()
        {
            var absoluteFolder = new AbsoluteFolder(@"c:\folder");
            var folder         = new Folder(absoluteFolder);

            Assert.AreEqual(@"c:\folder", folder.Absolute.FullPath);
        }
Пример #3
0
        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);
        }
Пример #4
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////
        /// <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));
        }
Пример #5
0
        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);
            }
        }
Пример #6
0
        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);
        }