コード例 #1
0
        public HtmlCodeSnippetRenderer(IMarkdownEngine engine, MarkdownContext context)
        {
            _engine  = engine;
            _context = context;

            BuildCodeLanguageExtractors();
        }
コード例 #2
0
        public CodeSnippetExtrator(string startLineTemplate, string endLineTemplate, MarkdownContext context, bool isEndLineContainsTagName = true)
        {
            this.StartLineTemplate        = startLineTemplate;
            this.EndLineTemplate          = endLineTemplate;
            this.IsEndLineContainsTagName = isEndLineContainsTagName;

            _context = context;
        }
コード例 #3
0
 public TripleColonExtension(MarkdownContext context)
 {
     _context    = context;
     _extensions = (new ITripleColonExtensionInfo[]
     {
         new ZoneExtension()
         // todo: moniker range, row, etc...
     }).ToDictionary(x => x.Name);
 }
コード例 #4
0
 public MarkdownContextBuilder WithContext(MarkdownContext context)
 {
     _filePath     = context.FilePath;
     _basePath     = context.BasePath;
     _mvb          = context.Mvb;
     _content      = context.Content;
     _isInline     = context.IsInline;
     _inclusionSet = context.InclusionSet;
     return(this);
 }
コード例 #5
0
 public TripleColonExtension(MarkdownContext context)
 {
     _context    = context;
     _extensions = (new ITripleColonExtensionInfo[]
     {
         new ZoneExtension(),
         new ChromelessFormExtension(),
         new ImageExtension(context),
         new CodeExtension(context),
         new VideoExtension(context)
         // todo: moniker range, row, etc...
     }).ToDictionary(x => x.Name);
 }
コード例 #6
0
        public IMarkdownObjectRewriter CreateRewriter(MarkdownContext context)
        {
            var tagValidator = new TagValidator(GetEnabledTagRules().ToImmutableList(), context);
            var validators   = from vp in _validatorProviders
                               from p in vp.GetValidators()
                               select p;

            return(MarkdownObjectRewriterFactory.FromValidators(
                       validators.Concat(
                           new[]
            {
                MarkdownObjectValidatorFactory.FromLambda <IMarkdownObject>(tagValidator.Validate)
            })));
        }
コード例 #7
0
        private static void UpdateLinks(MarkdownObject markdownObject, MarkdownContext context)
        {
            if (markdownObject == null || context == null || string.IsNullOrEmpty(context.FilePath))
            {
                return;
            }

            if (markdownObject is ContainerBlock containerBlock)
            {
                foreach (var subBlock in containerBlock)
                {
                    UpdateLinks(subBlock, context);
                }
            }
            else if (markdownObject is LeafBlock leafBlock)
            {
                if (leafBlock.Inline != null)
                {
                    foreach (var subInline in leafBlock.Inline)
                    {
                        UpdateLinks(subInline, context);
                    }
                }
            }
            else if (markdownObject is ContainerInline containerInline)
            {
                foreach (var subInline in containerInline)
                {
                    UpdateLinks(subInline, context);
                }

                if (markdownObject is LinkInline linkInline)
                {
                    var originalUrl = linkInline.Url;
                    if (RelativePath.IsRelativePath(originalUrl) && PathUtility.IsRelativePath(originalUrl) && !RelativePath.IsPathFromWorkingFolder(originalUrl) && !originalUrl.StartsWith("#"))
                    {
                        linkInline.GetDynamicUrl = () =>
                        {
                            return(((RelativePath)context.FilePath + (RelativePath)originalUrl).GetPathFromWorkingFolder());
                        };
                    }
                }
            }
        }
コード例 #8
0
        private static void UpdateLinks(MarkdownObject markdownObject, MarkdownContext context)
        {
            if (markdownObject == null || context == null)
            {
                return;
            }

            if (markdownObject is ContainerBlock containerBlock)
            {
                foreach (var subBlock in containerBlock)
                {
                    UpdateLinks(subBlock, context);
                }
            }
            else if (markdownObject is LeafBlock leafBlock)
            {
                if (leafBlock.Inline != null)
                {
                    foreach (var subInline in leafBlock.Inline)
                    {
                        UpdateLinks(subInline, context);
                    }
                }
            }
            else if (markdownObject is ContainerInline containerInline)
            {
                foreach (var subInline in containerInline)
                {
                    UpdateLinks(subInline, context);
                }

                if (markdownObject is LinkInline linkInline)
                {
                    linkInline.GetDynamicUrl = () => context.GetLink(linkInline.Url, InclusionContext.File);
                }
            }
        }
コード例 #9
0
 public QuoteSectionNoteRender(MarkdownContext context)
 {
     _context = context;
 }
コード例 #10
0
 public RowParser(MarkdownContext context)
 {
     OpeningCharacters = new[] { ':' };
     _context          = context;
 }
コード例 #11
0
 public MonikerRangeParser(MarkdownContext context)
 {
     OpeningCharacters = new[] { ':' };
     _context          = context;
 }
コード例 #12
0
 public static MarkdownPipelineBuilder UseCodeSnippet(this MarkdownPipelineBuilder pipeline, MarkdownContext context)
 {
     pipeline.Extensions.AddIfNotAlready(new CodeSnippetExtension(context));
     return(pipeline);
 }
コード例 #13
0
 public TagValidator(ImmutableList <MarkdownTagValidationRule> validators, MarkdownContext context)
 {
     _context   = context;
     Validators = validators;
 }
コード例 #14
0
 public TripleColonInlineRenderer(MarkdownContext context)
 {
     _context = context;
 }
コード例 #15
0
 public static ProcessDocumentDelegate GetProcessDocumentDelegate(MarkdownContext context)
 {
     return(document => UpdateLinks(document, context));
 }
コード例 #16
0
 public static MarkdownPipelineBuilder UseResolveLink(this MarkdownPipelineBuilder pipeline, MarkdownContext context)
 {
     pipeline.Extensions.AddIfNotAlready(new ResolveLinkExtension(context));
     return(pipeline);
 }
コード例 #17
0
 public MonikerRangeExtension(MarkdownContext context)
 {
     _context = context;
 }
コード例 #18
0
 public static MarkdownPipelineBuilder UseTabGroup(this MarkdownPipelineBuilder pipeline, MarkdownContext context)
 {
     pipeline.Extensions.AddIfNotAlready(new TabGroupExtension(context));
     return(pipeline);
 }
コード例 #19
0
 public VideoExtension(MarkdownContext context)
 {
     _context = context;
 }
コード例 #20
0
 public static MarkdownPipelineBuilder UseNestedColumn(this MarkdownPipelineBuilder pipeline, MarkdownContext context)
 {
     pipeline.Extensions.AddIfNotAlready(new NestedColumnExtension(context));
     return(pipeline);
 }
コード例 #21
0
 public static MarkdownPipelineBuilder UseDocfxExtensions(this MarkdownPipelineBuilder pipeline, MarkdownContext context)
 {
     return(pipeline
            //.UseMathematics()
            .UseEmphasisExtras(EmphasisExtraOptions.Strikethrough)
            .UseAutoIdentifiers(AutoIdentifierOptions.GitHub)
            .UseMediaLinks()
            .UsePipeTables()
            .UseAutoLinks()
            .UseHeadingIdRewriter()
            .UseIncludeFile(context)
            .UseCodeSnippet(context)
            .UseDFMCodeInfoPrefix()
            .UseQuoteSectionNote(context)
            .UseXref()
            .UseEmojiAndSmiley(false)
            .UseTabGroup(context)
            .UseMonikerRange(context)
            .UseInteractiveCode()
            .UseRow(context)
            .UseNestedColumn(context)
            .UseTripleColon(context)
            .UseNoloc()
            .UseResolveLink(context)
            .RemoveUnusedExtensions());
 }
コード例 #22
0
 public static MarkdownPipelineBuilder UseMonikerRange(this MarkdownPipelineBuilder pipeline, MarkdownContext context)
 {
     pipeline.Extensions.AddIfNotAlready(new MonikerRangeExtension(context));
     return(pipeline);
 }
コード例 #23
0
 public TripleColonParser(MarkdownContext context, IDictionary <string, ITripleColonExtensionInfo> extensions)
 {
     OpeningCharacters = new[] { ':' };
     _context          = context;
     _extensions       = extensions;
 }
コード例 #24
0
 public HtmlCodeSnippetRenderer(IMarkdownEngine engine, MarkdownContext context)
 {
     _engine  = engine;
     _context = context;
 }
コード例 #25
0
 public HtmlInclusionBlockRenderer(IMarkdownEngine engine, MarkdownContext context, MarkdownServiceParameters parameters)
 {
     _engine     = engine;
     _context    = context;
     _parameters = parameters;
 }
コード例 #26
0
ファイル: ImageExtension.cs プロジェクト: cuiyun01/docfx
 public ImageExtension(MarkdownContext context)
 {
     _context = context;
 }
コード例 #27
0
 public InclusionExtension(MarkdownContext context)
 {
     _context = context;
 }
コード例 #28
0
 public static MarkdownPipelineBuilder UseQuoteSectionNote(this MarkdownPipelineBuilder pipeline, MarkdownContext context)
 {
     pipeline.Extensions.AddIfNotAlready(new QuoteSectionNoteExtension(context));
     return(pipeline);
 }
コード例 #29
0
 public HtmlInclusionInlineRenderer(MarkdownContext context, MarkdownPipeline pipeline)
 {
     _context        = context;
     _inlinePipeline = CreateInlineOnlyPipeline(pipeline);
 }
コード例 #30
0
 public static MarkdownPipelineBuilder UseIncludeFile(this MarkdownPipelineBuilder pipeline, MarkdownContext context)
 {
     pipeline.Extensions.AddIfNotAlready(new InclusionExtension(context));
     return(pipeline);
 }