Пример #1
0
 public static MarkdownPipelineBuilder UseDfmExtensions(
     this MarkdownPipelineBuilder pipeline,
     MarkdownEngine engine,
     MarkdownContext context,
     MarkdownServiceParameters parameters)
 {
     return(pipeline
            .UseHeadingIdRewriter()
            .UseIncludeFile(engine, context, parameters)
            .UseCodeSnippet(engine, context)
            .UseYamlHeader()
            .UseDFMCodeInfoPrefix()
            .UseQuoteSectionNote(parameters)
            .UseXref()
            .UseEmojiAndSmiley(false)
            .UseTabGroup()
            .UseLineNumber(context, parameters)
            .UseMonikerRange()
            .UseValidators(context, parameters)
            .UseInteractiveCode()
            .UseRow()
            .UseNestedColumn()
            // Do not add extension after the InineParser
            .UseInineParserOnly(context));
 }
Пример #2
0
        public void TestBlockInclude_Does_Not_Replace_AutoLink()
        {
            var root     = "https://docs.microsoft.com";
            var context  = new MarkdownContext(getLink: (path, relativeTo, resultRelativeTo) => "REPLACE IT");
            var pipeline = new MarkdownPipelineBuilder().UseDocfxExtensions(context).Build();
            var result   = Markdown.ToHtml(root, pipeline);

            Assert.Equal("<p><a href=\"https://docs.microsoft.com\">https://docs.microsoft.com</a></p>", result.Trim());
        }
Пример #3
0
        public ActionResult <Document> PostDocument(Document document)
        {
            using (var context = new MarkdownContext())
            {
                // context.Documents.Update(document);

                return(document);
            }
        }
Пример #4
0
 public ActionResult <Document> Get(Guid id)
 {
     using (var context = new MarkdownContext())
     {
         return(context.Documents
                .Where(x => x.ID.ToString().Equals(id.ToString()))
                .ToList()
                .FirstOrDefault());
     }
 }
Пример #5
0
        public string Markup(MarkdownContext context, MarkdownServiceParameters parameters)
        {
            var builder = new MarkdownPipelineBuilder()
                          .UseMarkdigAdvancedExtensions()
                          .UseDfmExtensions(this, context, parameters)
                          .RemoveUnusedExtensions();

            var pipeline = builder.Build();

            return(Markdown.ToHtml(context.Content, pipeline));
        }
Пример #6
0
 public MarkdigMarkdownService(
     MarkdownServiceParameters parameters,
     ICompositionContainer container = null)
 {
     _parameters = parameters;
     _mvb        = MarkdownValidatorBuilder.Create(parameters, container);
     _context    = new MarkdownContext(
         key => _parameters.Tokens.TryGetValue(key, out var value) ? value : null,
         (code, message, origin, line) => Logger.LogWarning(message, null, InclusionContext.File.ToString(), line?.ToString(), code),
         (code, message, origin, line) => Logger.LogError(message, null, InclusionContext.File.ToString(), line?.ToString(), code),
         ReadFile);
 }
Пример #7
0
 public MarkdigMarkdownService(
     MarkdownServiceParameters parameters,
     ICompositionContainer container = null)
 {
     _parameters = parameters;
     _mvb        = MarkdownValidatorBuilder.Create(parameters, container);
     _context    = new MarkdownContext(
         _parameters.Tokens,
         (code, message, file, line) => Logger.LogWarning(message, null, file, line.ToString(), code),
         (code, message, file, line) => Logger.LogError(message, null, file, line.ToString(), code),
         ReadFile,
         GetLink);
 }
Пример #8
0
 public ActionResult <IEnumerable <Document> > Get()
 {
     using (var context = new MarkdownContext())
     {
         return(context.Documents
                .Select(x => new Document
         {
             ID = x.ID,
             Title = x.Title,
             CreatedAt = x.CreatedAt
         })
                .ToList());
     }
 }
Пример #9
0
        public MarkdownDocument Parse(MarkdownContext context, MarkdownServiceParameters parameters)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (parameters == null)
            {
                throw new ArgumentNullException(nameof(parameters));
            }

            var pipeline = CreatePipeline(context, parameters);

            return(Markdown.Parse(context.Content, pipeline));
        }
Пример #10
0
        public string Render(MarkdownDocument document, MarkdownContext context, MarkdownServiceParameters parameters)
        {
            if (document == null)
            {
                throw new ArgumentNullException(nameof(document));
            }

            var pipeline = CreatePipeline(context, parameters);

            using (var writer = new StringWriter())
            {
                var renderer = new HtmlRenderer(writer);
                pipeline.Setup(renderer);
                renderer.Render(document);
                writer.Flush();

                return(writer.ToString());
            }
        }
Пример #11
0
        private MarkdownPipeline CreatePipeline(MarkdownContext context, MarkdownServiceParameters parameters)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (parameters == null)
            {
                throw new ArgumentNullException(nameof(parameters));
            }

            var builder = new MarkdownPipelineBuilder()
                          .UseMarkdigAdvancedExtensions()
                          .UseDfmExtensions(this, context, parameters)
                          .RemoveUnusedExtensions();

            return(builder.Build());
        }
Пример #12
0
 public static MarkdownPipelineBuilder UseDfmExtensions(
     this MarkdownPipelineBuilder pipeline,
     MarkdigCompositor compositor,
     MarkdownContext context,
     MarkdownServiceParameters parameters)
 {
     return(pipeline
            .UseHeadingIdRewriter()
            .UseIncludeFile(compositor, context, parameters)
            .UseCodeSnippet(compositor, context)
            .UseYamlHeader()
            .UseDFMCodeInfoPrefix()
            .UseQuoteSectionNote(parameters)
            .UseXref()
            //.UseEmojiAndSmiley(false)
            .UseTabGroup()
            .UseInineParserOnly(context)
            .UseLineNumber(context, parameters)
            .UseMonikerRange()
            .UseValidators(context, parameters));
 }
Пример #13
0
        public static MarkdownPipelineBuilder UseLineNumber(this MarkdownPipelineBuilder pipeline, MarkdownContext context, MarkdownServiceParameters parameters)
        {
            object enableSourceInfo = null;

            parameters?.Extensions?.TryGetValue(LineNumberExtension.EnableSourceInfo, out enableSourceInfo);

            var enabled = enableSourceInfo as bool?;

            if (enabled != null && enabled == false)
            {
                return(pipeline);
            }

            var absoluteFilePath  = Path.Combine(context.BasePath, context.FilePath);
            var lineNumberContext = LineNumberExtensionContext.Create(context.Content, absoluteFilePath, context.FilePath);

            pipeline.PreciseSourceLocation = true;
            pipeline.DocumentProcessed    += LineNumberExtension.GetProcessDocumentDelegate(lineNumberContext);

            return(pipeline);
        }
Пример #14
0
        /// <summary>
        /// This extension removes all the block parser except paragragh. Please use this extension in the last.
        /// </summary>
        /// <param name="pipeline"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public static MarkdownPipelineBuilder UseInineParserOnly(this MarkdownPipelineBuilder pipeline, MarkdownContext context)
        {
            if (context.IsInline)
            {
                pipeline.Extensions.Add(new InlineOnlyExtentsion());
            }

            return(pipeline);
        }
Пример #15
0
        public static MarkdownPipelineBuilder UseValidators(this MarkdownPipelineBuilder pipeline, MarkdownContext context, MarkdownServiceParameters parameters)
        {
            var tokenRewriter = context.Mvb.CreateRewriter();
            var visitor       = new MarkdownDocumentVisitor(tokenRewriter);

            pipeline.DocumentProcessed += document =>
            {
                visitor.Visit(document);
            };

            return(pipeline);
        }
Пример #16
0
        public static MarkdownPipelineBuilder UseCodeSnippet(this MarkdownPipelineBuilder pipeline, MarkdownEngine compositor, MarkdownContext context)
        {
            pipeline.Extensions.Insert(0, new CodeSnippetExtension(compositor, context));

            return(pipeline);
        }
Пример #17
0
 public static MarkdownPipelineBuilder UseIncludeFile(this MarkdownPipelineBuilder pipeline, MarkdownEngine compositor, MarkdownContext context, MarkdownServiceParameters parameters)
 {
     pipeline.Extensions.Insert(0, new InclusionExtension(compositor, context, parameters));
     if (context.InclusionSet != null && !context.InclusionSet.IsEmpty)
     {
         pipeline.DocumentProcessed += InclusionExtension.GetProcessDocumentDelegate(context);
     }
     return(pipeline);
 }
Пример #18
0
 public CustomYamlHeaderExtension(MarkdownContext context)
 {
     _context = context;
 }