private MarkdownPipeline BuidPipeline(IMarkdownExtension extension) { MarkdownPipelineBuilder pipelineBuilder = new MarkdownPipelineBuilder().UseAdvancedExtensions(); pipelineBuilder.Extensions.Add(extension); return(pipelineBuilder.Build()); }
public void CanUseExternalExtensionDirectly() { IMarkdownExtension mockExtension = Substitute.For <IMarkdownExtension>(); Markdown markdown = new Markdown().UseExtension(mockExtension); // When // ReSharper disable once ReturnValueOfPureMethodIsNotUsed markdown.Execute(new[] { new TestDocument(string.Empty) }, new TestExecutionContext()).ToList(); // Make sure to materialize the result list // Then // Setup will always be called during markdown pipeline setup. mockExtension.Received().Setup(Arg.Any <MarkdownPipelineBuilder>()); }
/// <summary> /// Includes multiple custom extension in the markdown processing given by classes implementing /// the <see cref="IMarkdownExtension"/> interface. /// </summary> /// <param name="extensions">A sequence of types that implement <see cref="IMarkdownExtension"/>.</param> /// <returns>The current module instance.</returns> public Markdown UseExtensions(IEnumerable <Type> extensions) { if (extensions == null) { return(this); } foreach (Type type in extensions) { IMarkdownExtension extension = Activator.CreateInstance(type) as IMarkdownExtension; if (extension != null) { _extensions.AddIfNotAlready(extension); } } return(this); }
/// <summary> /// Includes multiple custom extension in the markdown processing given by classes implementing /// the <see cref="IMarkdownExtension"/> interface. /// </summary> /// <param name="extensions">A sequence of types that implement <see cref="IMarkdownExtension"/>.</param> /// <returns>The current module instance.</returns> public RenderMarkdown UseExtensions(IEnumerable <Type> extensions) { if (extensions == null) { return(this); } foreach (Type type in extensions) { IMarkdownExtension extension = Activator.CreateInstance(type) as IMarkdownExtension; if (extension != null) { // Need - public void AddIfNotAlready<TElement>(TElement telement) where TElement : T; // Kind of hack'ish, but no other way to preserve types. MethodInfo addIfNotAlready = typeof(OrderedList <IMarkdownExtension>).GetMethods() .Where(x => x.IsGenericMethod && x.Name == nameof(OrderedList <IMarkdownExtension> .AddIfNotAlready) && x.GetParameters().Length == 1) .Select(x => x.MakeGenericMethod(type)) .Single(); addIfNotAlready.Invoke(_extensions, new object[] { extension }); } } return(this); }
public void AddExtension(IMarkdownExtension ext) { _extensions.Add(ext); }