Exemple #1
0
        public Program()
        {
            var option = DocfxFlavoredMarked.CreateDefaultOptions();

            option.LegacyMode = true;
            _builder          = new DfmEngineBuilder(option);
        }
Exemple #2
0
            public DfmService(
                DfmServiceProvider provider,
                string baseDir,
                string templateDir,
                ICompositionContainer container,
                ImmutableDictionary <string, string> tokens,
                IReadOnlyList <string> fallbackFolders,
                IReadOnlyDictionary <string, object> parameters)
            {
                var options = DocfxFlavoredMarked.CreateDefaultOptions();

                options.LegacyMode             = provider.LegacyMode;
                options.ShouldFixId            = provider.ShouldFixId;
                options.ShouldExportSourceInfo = true;
                _builder = new DfmEngineBuilder(
                    options,
                    baseDir,
                    templateDir,
                    fallbackFolders,
                    container);
                _builder.TokenTreeValidator = MarkdownTokenTreeValidatorFactory.Combine(provider.TokenTreeValidator);
                _tokens   = tokens;
                _renderer = CustomizedRendererCreator.CreateRenderer(new DfmRenderer {
                    Tokens = _tokens
                }, provider.DfmRendererPartProviders, parameters);
                foreach (var c in provider.DfmEngineCustomizers)
                {
                    c.Customize(_builder, parameters);
                }
                _incrementalContextHash = ComputeIncrementalContextHash(baseDir, templateDir, provider.TokenTreeValidator, parameters);
            }
Exemple #3
0
        public void Customize(DfmEngineBuilder builder, IReadOnlyDictionary <string, object> parameters)
        {
            var index = builder.BlockRules.FindIndex(r => r is MarkdownHeadingBlockRule);

            builder.BlockRules = builder.BlockRules.Insert(
                index, new ImageComparisonBlockRule());
        }
Exemple #4
0
        private MarkdownMigrateTool(string rendererName)
        {
            var option = DocfxFlavoredMarked.CreateDefaultOptions();

            option.LegacyMode = true;
            _builder          = new DfmEngineBuilder(option);
            _render           = InitRenderer(rendererName);
        }
Exemple #5
0
            public DfmService(string baseDir, string templateDir, ImmutableDictionary <string, string> tokens, IEnumerable <IMarkdownTokenTreeValidator> tokenTreeValidator, IReadOnlyList <string> fallbackFolders = null)
            {
                var options = DocfxFlavoredMarked.CreateDefaultOptions();

                _builder = DocfxFlavoredMarked.CreateBuilder(baseDir, templateDir, options, fallbackFolders);
                _builder.TokenTreeValidator = MarkdownTokenTreeValidatorFactory.Combine(tokenTreeValidator);
                _renderer = new YamlHeaderMarkdownRenderer();
            }
Exemple #6
0
            public DfmService(string baseDir, string templateDir, ImmutableDictionary <string, string> tokens, IMarkdownTokenTreeValidator tokenTreeValidator, IReadOnlyList <string> fallbackFolders = null)
            {
                var options = DocfxFlavoredMarked.CreateDefaultOptions();

                options.ShouldExportSourceInfo = true;
                _builder = DocfxFlavoredMarked.CreateBuilder(baseDir, templateDir, options, fallbackFolders);
                _builder.TokenTreeValidator = tokenTreeValidator;
                _tokens = tokens;
            }
Exemple #7
0
        static DfmPreview()
        {
            var option = DocfxFlavoredMarked.CreateDefaultOptions();

            option.LegacyMode = true;
            var builder = new DfmEngineBuilder(option);

            _engine = builder.CreateDfmEngine(new DfmRenderer());
        }
        public MarkdigMarkdownRewritersTests()
        {
            var option = DocfxFlavoredMarked.CreateDefaultOptions();

            option.LegacyMode = true;
            var builder = new DfmEngineBuilder(option);

            _engine = builder.CreateDfmEngine(new MarkdigMarkdownRenderer());
        }
Exemple #9
0
        public void TestDfmTagValidate()
        {
            var builder = new DfmEngineBuilder(new Options()
            {
                Mangle = false
            });
            var mrb = new MarkdownValidatorBuilder(
                new ContainerConfiguration()
                .WithAssembly(typeof(DocfxFlavoredMarkdownTest).Assembly)
                .CreateContainer());

            mrb.AddTagValidators(new[]
            {
                new MarkdownTagValidationRule
                {
                    TagNames = new List <string> {
                        "em", "div"
                    },
                    MessageFormatter = "Invalid tag({0})!",
                    Behavior         = TagValidationBehavior.Error,
                    OpeningTagOnly   = true,
                },
                new MarkdownTagValidationRule
                {
                    TagNames = new List <string> {
                        "h1"
                    },
                    MessageFormatter = "Warning tag({0})!",
                    Behavior         = TagValidationBehavior.Warning,
                },
            });
            mrb.AddValidators(new[]
            {
                new MarkdownValidationRule
                {
                    ContractName = HtmlMarkdownTokenValidatorProvider.ContractName,
                }
            });
            builder.Rewriter = mrb.CreateRewriter();

            var engine   = builder.CreateDfmEngine(new DfmRenderer());
            var listener = new TestLoggerListener("test!!!!" + "." + MarkdownValidatorBuilder.MarkdownValidatePhaseName);

            Logger.RegisterListener(listener);
            string result;

            using (new LoggerPhaseScope("test!!!!"))
            {
                result = engine.Markup(@"<div><i>x</i><EM>y</EM><h1>z</h1></div>", "test");
            }
            Logger.UnregisterListener(listener);
            Assert.Equal("<div><i>x</i><EM>y</EM><h1>z</h1></div>", result);
            Assert.Equal(5, listener.Items.Count);
            Assert.Equal(new[] { HtmlMarkdownTokenValidatorProvider.WarningMessage, "Invalid tag(div)!", "Invalid tag(EM)!", "Warning tag(h1)!", "Warning tag(h1)!" }, from item in listener.Items select item.Message);
        }
        public MarkdownMigrateTool(string workingFolder = ".", bool useLegacyMode = true, MigrationRule rule = MigrationRule.All)
        {
            _useLegacyMode = useLegacyMode;
            _rule          = rule;

            var option = DocfxFlavoredMarked.CreateDefaultOptions();

            option.LegacyMode = _useLegacyMode;
            _builder          = new DfmEngineBuilder(option, workingFolder);
            _workingFolder    = workingFolder.EndsWith("\\") || workingFolder.EndsWith("/") ? workingFolder : workingFolder + "\\";
        }
Exemple #11
0
            public DfmService(string baseDir, string templateDir, ImmutableDictionary <string, string> tokens, IEnumerable <IMarkdownTokenTreeValidator> tokenTreeValidator, IReadOnlyList <string> fallbackFolders = null)
            {
                var options = DocfxFlavoredMarked.CreateDefaultOptions();

                options.ShouldExportSourceInfo = true;
                _builder = DocfxFlavoredMarked.CreateBuilder(baseDir, templateDir, options, fallbackFolders);
                _builder.TokenTreeValidator = MarkdownTokenTreeValidatorFactory.Combine(tokenTreeValidator);
                _tokens = tokens;

                _incrementalContextHash = ComputeIncrementalContextHash(baseDir, templateDir, tokenTreeValidator);
            }
        public void Customize(DfmEngineBuilder builder, IReadOnlyDictionary <string, object> parameters)
        {
            // insert inline rule at the top
            builder.InlineRules = builder.InlineRules.Insert(0, new EnvironmentVariableInlineRule());

            // insert block rule above header rule. Why? I dunno, that's what the docs say:
            // https://dotnet.github.io/docfx/tutorial/intro_markdown_lite.html#select-token-kind
            var blockIndex = builder.BlockRules.FindIndex(r => r is MarkdownHeadingBlockRule);

            builder.BlockRules = builder.BlockRules.Insert(blockIndex, new LuceneNoteBlockRule());
        }
        public DfmHtmlRender(bool useLegacyMode = true)
        {
            var option = DocfxFlavoredMarked.CreateDefaultOptions();

            option.LegacyMode = useLegacyMode;
            var builder = new DfmEngineBuilder(option);

            Engine   = builder.CreateDfmEngine(this);
            Renderer = this;
            Options  = option;
            Links    = null;
        }
        public void TestDfmTagValidate()
        {
            var builder = new DfmEngineBuilder(new MarkdownLite.Options()
            {
                Mangle = false
            });
            var mrb = new MarkdownRewriterBuilder(null);

            mrb.AddValidators(
                new MarkdownTagValidationRule
            {
                TagNames = new List <string> {
                    "em", "div"
                },
                MessageFormatter = "Invalid tag({0})!",
                Behavior         = TagRewriteBehavior.Error,
                OpeningTagOnly   = true,
            },
                new MarkdownTagValidationRule
            {
                TagNames = new List <string> {
                    "h1"
                },
                MessageFormatter = "Invalid tag({0}), Removed!",
                Behavior         = TagRewriteBehavior.ErrorAndRemove,
            });
            builder.Rewriter = mrb.Create();

            var engine   = builder.CreateDfmEngine(new DfmRenderer());
            var listener = new TestLoggerListener("test!!!!");

            Logger.RegisterListener(listener);
            string result;

            using (new LoggerPhaseScope("test!!!!"))
            {
                result = engine.Markup(@"<div><i>x</i><EM>y</EM><h1>z</h1></div>", "test");
            }
            Logger.UnregisterListener(listener);
            Assert.Equal("<div><i>x</i><EM>y</EM>z</div>", result);
            Assert.Equal(4, listener.Items.Count);
            Assert.Equal(new[] { "Invalid tag(div)!", "Invalid tag(EM)!", "Invalid tag(h1), Removed!", "Invalid tag(h1), Removed!" }, from item in listener.Items select item.Message);
        }
Exemple #15
0
        public void Customize(DfmEngineBuilder builder, IReadOnlyDictionary <string, object> parameters)
        {
            // insert inline rule at the top
            builder.InlineRules = builder.InlineRules.Insert(0, new EnvironmentVariableInLinkInlineRule());
            builder.InlineRules = builder.InlineRules.Insert(0, new EnvironmentVariableInlineRule());
            // LUCENENET TODO: The inline text replacement still isn't working. Not sure why.
            //builder.InlineRules = builder.InlineRules.Insert(0, new EnvironmentVariableDfmTextInlineRule());

            //// Find the MarkdownLinkInlineRule position, and insert rules to replace text within the link before it
            //var markdownLinkInlineRuleIndex = builder.InlineRules.FindIndex(r => r is MarkdownLinkInlineRule);
            //builder.InlineRules.Insert(markdownLinkInlineRuleIndex, new EnvironmentVariableInLinkInlineRule());

            //builder.InlineRules = Replace<DfmTextInlineRule, EnvironmentVariableDfmTextInlineRule>(builder.InlineRules);

            // insert block rule above header rule. Why? I dunno, that's what the docs say:
            // https://dotnet.github.io/docfx/tutorial/intro_markdown_lite.html#select-token-kind
            var blockIndex = builder.BlockRules.FindIndex(r => r is MarkdownHeadingBlockRule);

            builder.BlockRules = builder.BlockRules.Insert(blockIndex, new LuceneNoteBlockRule());

            // LUCENENET TODO: The code replacement still isn't working (or even matching). Not sure why.
            //builder.BlockRules = Replace<MarkdownCodeBlockRule, EnvironmentVariableInCodeBlockRule>(builder.BlockRules);
        }
        public MarkdigMarkdownRenderer(Stack <IMarkdownToken> processedBlockTokens, string basePath, bool useLegacyMode = true, MigrationRule rule = MigrationRule.All)
        {
            var option = DocfxFlavoredMarked.CreateDefaultOptions();

            option.LegacyMode = useLegacyMode;
            var builder = new DfmEngineBuilder(option);
            var render  = new DfmRenderer();

            _dfmEngine     = builder.CreateDfmEngine(render);
            _dfmHtmlRender = new DfmHtmlRender(useLegacyMode);
            _rule          = rule;

            var parameter = new MarkdownServiceParameters
            {
                BasePath   = basePath,
                Extensions = new Dictionary <string, object>
                {
                    { "EnableSourceInfo", false }
                }
            };

            _service = new MarkdigMarkdownService(parameter);
            _processedBlockTokens = processedBlockTokens;
        }
Exemple #17
0
 public DfmService(string baseDir)
 {
     _builder = DocfxFlavoredMarked.CreateBuilder(baseDir);
 }
        public void TestDfmTagValidate()
        {
            var builder = new DfmEngineBuilder(new MarkdownLite.Options() { Mangle = false });
            var mrb = new MarkdownRewriterBuilder(null);
            mrb.AddValidators(
                new MarkdownTagValidationRule
                {
                    TagNames = new List<string> { "em", "div" },
                    MessageFormatter = "Invalid tag({0})!",
                    Behavior = TagRewriteBehavior.Error,
                    OpeningTagOnly = true,
                },
                new MarkdownTagValidationRule
                {
                    TagNames = new List<string> { "h1" },
                    MessageFormatter = "Invalid tag({0}), Removed!",
                    Behavior = TagRewriteBehavior.ErrorAndRemove,
                });
            builder.Rewriter = mrb.Create();

            var engine = builder.CreateEngine(new DfmRenderer());
            var listener = new TestLoggerListener("test!!!!");
            Logger.RegisterListener(listener);
            string result;
            using (new LoggerPhaseScope("test!!!!"))
            {
                result = engine.Markup(@"<div><i>x</i><EM>y</EM><h1>z</h1></div>", "test");
            }
            Logger.UnregisterListener(listener);
            Assert.Equal("<div><i>x</i><EM>y</EM>z</div>", result);
            Assert.Equal(4, listener.Items.Count);
            Assert.Equal(new[] { "Invalid tag(div)!", "Invalid tag(EM)!", "Invalid tag(h1), Removed!", "Invalid tag(h1), Removed!" }, from item in listener.Items select item.Message);
        }
Exemple #19
0
 public DfmJsonTokenTreeService(string baseDir, ImmutableDictionary <string, string> tokens, IMarkdownTokenTreeValidator tokenTreeValidator)
 {
     _builder = DocfxFlavoredMarked.CreateBuilder(baseDir);
     _builder.TokenTreeValidator = tokenTreeValidator;
     _tokens = tokens;
 }
Exemple #20
0
 public HostService(string baseDir, IEnumerable <FileModel> models)
 {
     _engine = DocfxFlavoredMarked.CreateBuilder(baseDir);
     LoadCore(models);
 }
Exemple #21
0
 public DfmService(string baseDir, ImmutableDictionary <string, string> tokens)
 {
     _builder = DocfxFlavoredMarked.CreateBuilder(baseDir);
     _tokens  = tokens;
 }
Exemple #22
0
 public DfmJsonTokenTreeService(string baseDir, IMarkdownTokenTreeValidator tokenTreeValidator)
 {
     _builder = DocfxFlavoredMarked.CreateBuilder(baseDir);
     _builder.TokenTreeValidator = tokenTreeValidator;
 }