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)); }
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()); }
public ActionResult <Document> PostDocument(Document document) { using (var context = new MarkdownContext()) { // context.Documents.Update(document); return(document); } }
public ActionResult <Document> Get(Guid id) { using (var context = new MarkdownContext()) { return(context.Documents .Where(x => x.ID.ToString().Equals(id.ToString())) .ToList() .FirstOrDefault()); } }
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)); }
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); }
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); }
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()); } }
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)); }
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()); } }
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()); }
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)); }
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); }
/// <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); }
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); }
public static MarkdownPipelineBuilder UseCodeSnippet(this MarkdownPipelineBuilder pipeline, MarkdownEngine compositor, MarkdownContext context) { pipeline.Extensions.Insert(0, new CodeSnippetExtension(compositor, context)); return(pipeline); }
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); }
public CustomYamlHeaderExtension(MarkdownContext context) { _context = context; }