diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..26f562c --- /dev/null +++ b/docs/README.md @@ -0,0 +1,102 @@ +# Summary +- [**Summary.Doc**](Summary.Doc.md) +- [**Summary.DocComment**](Summary.DocComment.md) +- [**Summary.DocCommentElement**](Summary.DocCommentElement.md) +- [**Summary.DocCommentElementAttribute**](Summary.DocCommentElementAttribute.md) +- [**Summary.DocCommentInheritDoc**](Summary.DocCommentInheritDoc.md) +- [**Summary.DocCommentLink**](Summary.DocCommentLink.md) +- [**Summary.DocCommentLiteral**](Summary.DocCommentLiteral.md) +- [**Summary.DocCommentNode**](Summary.DocCommentNode.md) +- [**Summary.DocCommentParamRef**](Summary.DocCommentParamRef.md) +- [**Summary.DocDeprecation**](Summary.DocDeprecation.md) +- [**Summary.DocEvent**](Summary.DocEvent.md) +- [**Summary.DocExtensions**](Summary.DocExtensions.md) +- [**Summary.DocField**](Summary.DocField.md) +- [**Summary.DocIndexer**](Summary.DocIndexer.md) +- [**Summary.DocLocation**](Summary.DocLocation.md) +- [**Summary.DocMember**](Summary.DocMember.md) +- [**Summary.DocMethod**](Summary.DocMethod.md) +- [**Summary.DocParam**](Summary.DocParam.md) +- [**Summary.DocProperty**](Summary.DocProperty.md) +- [**Summary.DocPropertyAccessor**](Summary.DocPropertyAccessor.md) +- [**Summary.DocType**](Summary.DocType.md) +- [**Summary.DocTypeDeclaration**](Summary.DocTypeDeclaration.md) +- [**Summary.DocTypeParam**](Summary.DocTypeParam.md) + +# Summary.Tests +- [**Summary.Tests.Extensions**](Summary.Tests.Extensions.md) + +# Summary.Cli.Logging +- [**Summary.Cli.Logging.ConsoleLoggerFactory**](Summary.Cli.Logging.ConsoleLoggerFactory.md) + +# Summary.Caching +- [**Summary.Caching.CrefCache**](Summary.Caching.CrefCache.md) + +# Summary.Pipelines +- [**Summary.Pipelines.SummaryPipeline**](Summary.Pipelines.SummaryPipeline.md) +- [**Summary.Pipelines.SummaryPipeline.Options**](Summary.Pipelines.SummaryPipeline.Options.md) +- [**Summary.Pipelines.SummaryPipelineExtensions**](Summary.Pipelines.SummaryPipelineExtensions.md) +- [**Summary.Pipelines.FilteringExtensions**](Summary.Pipelines.FilteringExtensions.md) + +# Summary.Pipes +- [**Summary.Pipes.FoldPipe<O>**](Summary.Pipes.FoldPipe{O}.md) +- [**Summary.Pipes.FuncPipe<I, O>**](Summary.Pipes.FuncPipe{I,O}.md) +- [**Summary.Pipes.IPipe<I, O>**](Summary.Pipes.IPipe{I,O}.md) +- [**Summary.Pipes.PipeExtensions**](Summary.Pipes.PipeExtensions.md) +- [**Summary.Pipes.TeePipe<I, O>**](Summary.Pipes.TeePipe{I,O}.md) +- [**Summary.Pipes.ThenForEach<I, O1, O2>**](Summary.Pipes.ThenForEach{I,O1,O2}.md) +- [**Summary.Pipes.ThenPipe<I, O1, O2>**](Summary.Pipes.ThenPipe{I,O1,O2}.md) +- [**Summary.Pipes.Unit**](Summary.Pipes.Unit.md) + +# Summary.Samples +- [**Summary.Samples.InheritDocBase**](Summary.Samples.InheritDocBase.md) +- [**Summary.Samples.InheritDoc_Child**](Summary.Samples.InheritDoc_Child.md) +- [**Summary.Samples.InheritDoc_Child2**](Summary.Samples.InheritDoc_Child2.md) +- [**Summary.Samples.InheritDoc_CrefBase**](Summary.Samples.InheritDoc_CrefBase.md) +- [**Summary.Samples.InheritDoc_CrefBase_Child**](Summary.Samples.InheritDoc_CrefBase_Child.md) +- [**Summary.Samples.InheritDoc_Child_OverrideSummary**](Summary.Samples.InheritDoc_Child_OverrideSummary.md) +- [**Summary.Samples.InheritDoc_Child_OverrideSummary2**](Summary.Samples.InheritDoc_Child_OverrideSummary2.md) +- [**Summary.Samples.IInheritDocBase**](Summary.Samples.IInheritDocBase.md) +- [**Summary.Samples.InheritDoc_InterfaceChild**](Summary.Samples.InheritDoc_InterfaceChild.md) +- [**Summary.Samples.InheritDocRecordBase**](Summary.Samples.InheritDocRecordBase.md) +- [**Summary.Samples.InheritDocRecordBase_Child**](Summary.Samples.InheritDocRecordBase_Child.md) +- [**Summary.Samples.Sample<T0, T1>**](Summary.Samples.Sample{T0,T1}.md) +- [**Summary.Samples.Sample<T0, T1>.Child**](Summary.Samples.Sample{T0,T1}.Child.md) + +# Summary.Markdown +- [**Summary.Markdown.MarkdownPipelineExtensions**](Summary.Markdown.MarkdownPipelineExtensions.md) +- [**Summary.Markdown.Md**](Summary.Markdown.Md.md) +- [**Summary.Markdown.RenderMarkdownPipe**](Summary.Markdown.RenderMarkdownPipe.md) + +# Summary.Roslyn +- [**Summary.Roslyn.RoslynPipelineExtensions**](Summary.Roslyn.RoslynPipelineExtensions.md) + +# Summary.Tests.Core +- [**Summary.Tests.Core.PipesTests**](Summary.Tests.Core.PipesTests.md) + +# Summary.Tests.Markdown +- [**Summary.Tests.Markdown.MarkdownTests**](Summary.Tests.Markdown.MarkdownTests.md) + +# Summary.Tests.Roslyn +- [**Summary.Tests.Roslyn.RoslynParserTests**](Summary.Tests.Roslyn.RoslynParserTests.md) + +# Summary.Pipes.Filters +- [**Summary.Pipes.Filters.FilterMemberPipe**](Summary.Pipes.Filters.FilterMemberPipe.md) + +# Summary.Pipes.IO +- [**Summary.Pipes.IO.CleanupDirPipe<I>**](Summary.Pipes.IO.CleanupDirPipe{I}.md) +- [**Summary.Pipes.IO.SavePipe<I>**](Summary.Pipes.IO.SavePipe{I}.md) +- [**Summary.Pipes.IO.ScanPipe**](Summary.Pipes.IO.ScanPipe.md) +- [**Summary.Pipes.IO.Source**](Summary.Pipes.IO.Source.md) + +# Summary.Pipes.Logging +- [**Summary.Pipes.Logging.LoggedPipe<I, O>**](Summary.Pipes.Logging.LoggedPipe{I,O}.md) + +# Summary.Roslyn.CSharp +- [**Summary.Roslyn.CSharp.InlineInheritDocPipe**](Summary.Roslyn.CSharp.InlineInheritDocPipe.md) +- [**Summary.Roslyn.CSharp.ParseDocPipe**](Summary.Roslyn.CSharp.ParseDocPipe.md) +- [**Summary.Roslyn.CSharp.ParseSyntaxTreePipe**](Summary.Roslyn.CSharp.ParseSyntaxTreePipe.md) + +# Summary.Roslyn.CSharp.Extensions +- [**Summary.Roslyn.CSharp.Extensions.DocMemberExtensions**](Summary.Roslyn.CSharp.Extensions.DocMemberExtensions.md) + diff --git a/docs/Summary.Cli.Logging.ConsoleLoggerFactory.md b/docs/Summary.Cli.Logging.ConsoleLoggerFactory.md index 0c8a794..2290514 100644 --- a/docs/Summary.Cli.Logging.ConsoleLoggerFactory.md +++ b/docs/Summary.Cli.Logging.ConsoleLoggerFactory.md @@ -17,7 +17,7 @@ public static readonly ILogger Instance public void Dispose() ``` -### [Log(LogLevel, EventId, TState, Exception?, Func, string>)](../src/Cli/Logging/ConsoleLoggerFactory.cs#L41) +### [Log<TState>(LogLevel, EventId, TState, Exception?<Exception>, Func<TState, Exception?<Exception>, string>)](../src/Cli/Logging/ConsoleLoggerFactory.cs#L41) ```cs public void Log( LogLevel logLevel, @@ -32,7 +32,7 @@ public void Log( public bool IsEnabled(LogLevel logLevel) ``` -### [BeginScope(TState)](../src/Cli/Logging/ConsoleLoggerFactory.cs#L51) +### [BeginScope<TState>(TState)](../src/Cli/Logging/ConsoleLoggerFactory.cs#L51) ```cs public IDisposable? BeginScope(TState state) ``` diff --git a/docs/Summary.Doc.md b/docs/Summary.Doc.md index 7368e7d..ef62769 100644 --- a/docs/Summary.Doc.md +++ b/docs/Summary.Doc.md @@ -33,7 +33,7 @@ Merges two documents together returning the new merged document. - `a`: The first document to merge. - `b`: The second document to merge. -### [Declaration(DocType?)](../src/Core/Doc.cs#L29) +### [Declaration(DocType?<DocType>)](../src/Core/Doc.cs#L29) ```cs public DocTypeDeclaration? Declaration(DocType? type) ``` diff --git a/docs/Summary.DocComment.md b/docs/Summary.DocComment.md index 6a333a9..b1b1ae6 100644 --- a/docs/Summary.DocComment.md +++ b/docs/Summary.DocComment.md @@ -63,7 +63,7 @@ A nested documentation element that has the specified name (e.g. `summary`, `rem #### Parameters - `tag`: The name of the element tag to search inside the comment. -### [Element(Func)](../src/Core/DocComment.cs#L47) +### [Element(Func<DocCommentElement, bool>)](../src/Core/DocComment.cs#L47) ```cs public DocCommentElement? Element(Func p) ``` @@ -83,7 +83,7 @@ A sequence of nested documentation elements that have the specified name (e.g. ` #### Parameters - `tag`: The name of the element tag to search inside the comment. -### [Elements(Func)](../src/Core/DocComment.cs#L61) +### [Elements(Func<DocCommentElement, bool>)](../src/Core/DocComment.cs#L61) ```cs public IEnumerable Elements(Func p) ``` diff --git a/docs/Summary.Markdown.RenderMarkdownPipe.md b/docs/Summary.Markdown.RenderMarkdownPipe.md index ed438dc..749309a 100644 --- a/docs/Summary.Markdown.RenderMarkdownPipe.md +++ b/docs/Summary.Markdown.RenderMarkdownPipe.md @@ -1,4 +1,4 @@ -# [Summary.Markdown.RenderMarkdownPipe](../src/Plugins/Markdown/RenderMarkdownPipe.cs#L8) +# [Summary.Markdown.RenderMarkdownPipe](../src/Plugins/Markdown/RenderMarkdownPipe.cs#L9) ```cs public class RenderMarkdownPipe : IPipe ``` @@ -6,7 +6,7 @@ public class RenderMarkdownPipe : IPipe A [`IPipe`](./Summary.Pipes.IPipe{I,O}.md) that renders generated document into the sequence of Markdown files. ## Methods -### [Run(Doc)](../src/Plugins/Markdown/RenderMarkdownPipe.cs#L10) +### [Run(Doc)](../src/Plugins/Markdown/RenderMarkdownPipe.cs#L11) ```cs public Task Run(Doc doc) ``` diff --git a/docs/Summary.Pipelines.FilteringExtensions.md b/docs/Summary.Pipelines.FilteringExtensions.md index 26dbe29..0d81ef7 100644 --- a/docs/Summary.Pipelines.FilteringExtensions.md +++ b/docs/Summary.Pipelines.FilteringExtensions.md @@ -45,14 +45,14 @@ var pipeline = ...; pipeline.IncludeOnly(AccessModifier.Internal); ``` -### [WithAccess(SummaryPipeline, Func)](../src/Core/Pipelines/SummaryPipelineFilteringExtensions.cs#L50) +### [WithAccess(SummaryPipeline, Func<AccessModifier, bool>)](../src/Core/Pipelines/SummaryPipelineFilteringExtensions.cs#L50) ```cs public static SummaryPipeline WithAccess(this SummaryPipeline self, Func p) ``` Includes only members that have the access modifier that satisfies the given predicate. -### [UseFilter(SummaryPipeline, IPipe)](../src/Core/Pipelines/SummaryPipelineFilteringExtensions.cs#L67) +### [UseFilter(SummaryPipeline, IPipe<Doc, Doc>)](../src/Core/Pipelines/SummaryPipelineFilteringExtensions.cs#L67) ```cs public static SummaryPipeline UseFilter(this SummaryPipeline self, IPipe filter) ``` diff --git a/docs/Summary.Pipelines.SummaryPipeline.md b/docs/Summary.Pipelines.SummaryPipeline.md index 34dd7fe..6c00b0b 100644 --- a/docs/Summary.Pipelines.SummaryPipeline.md +++ b/docs/Summary.Pipelines.SummaryPipeline.md @@ -36,35 +36,35 @@ public Options UseLoggerFactory(ILoggerFactory loggers) Specifies the logger factory that will be used to create loggers for the pipeline. -### [Customize(Func)](../src/Core/Pipelines/SummaryPipeline.cs#L68) +### [Customize(Func<Options, Options>)](../src/Core/Pipelines/SummaryPipeline.cs#L68) ```cs public SummaryPipeline Customize(Func options) ``` Customizes the default pipeline options using the specified delegate. -### [ParseWith(Func>)](../src/Core/Pipelines/SummaryPipeline.cs#L74) +### [ParseWith(Func<Options, IPipe<Unit, Doc>>)](../src/Core/Pipelines/SummaryPipeline.cs#L74) ```cs public SummaryPipeline ParseWith(Func> parser) ``` Specifies the custom parser with logging support for this pipeline. -### [ParseWith(IPipe)](../src/Core/Pipelines/SummaryPipeline.cs#L83) +### [ParseWith(IPipe<Unit, Doc>)](../src/Core/Pipelines/SummaryPipeline.cs#L83) ```cs public SummaryPipeline ParseWith(IPipe parser) ``` Specifies the custom parser for this pipeline. -### [RenderWith(Func>)](../src/Core/Pipelines/SummaryPipeline.cs#L92) +### [RenderWith(Func<Options, IPipe<Doc, Unit>>)](../src/Core/Pipelines/SummaryPipeline.cs#L92) ```cs public SummaryPipeline RenderWith(Func> render) ``` Specifies the custom renderer for this pipeline. -### [RenderWith(IPipe)](../src/Core/Pipelines/SummaryPipeline.cs#L101) +### [RenderWith(IPipe<Doc, Unit>)](../src/Core/Pipelines/SummaryPipeline.cs#L101) ```cs public SummaryPipeline RenderWith(IPipe render) ``` diff --git a/docs/Summary.Pipes.FoldPipe{O}.md b/docs/Summary.Pipes.FoldPipe{O}.md index 2a7679b..21b63ff 100644 --- a/docs/Summary.Pipes.FoldPipe{O}.md +++ b/docs/Summary.Pipes.FoldPipe{O}.md @@ -1,4 +1,4 @@ -# [Summary.Pipes.FoldPipe](../src/Core/Pipes/FoldPipe.cs#L6) +# [Summary.Pipes.FoldPipe<O>](../src/Core/Pipes/FoldPipe.cs#L6) ```cs public class FoldPipe : IPipe ``` diff --git a/docs/Summary.Pipes.FuncPipe{I,O}.md b/docs/Summary.Pipes.FuncPipe{I,O}.md index 18f3069..4d71803 100644 --- a/docs/Summary.Pipes.FuncPipe{I,O}.md +++ b/docs/Summary.Pipes.FuncPipe{I,O}.md @@ -1,4 +1,4 @@ -# [Summary.Pipes.FuncPipe](../src/Core/Pipes/FuncPipe.cs#L6) +# [Summary.Pipes.FuncPipe<I, O>](../src/Core/Pipes/FuncPipe.cs#L6) ```cs public class FuncPipe : IPipe ``` diff --git a/docs/Summary.Pipes.IO.CleanupDirPipe{I}.md b/docs/Summary.Pipes.IO.CleanupDirPipe{I}.md index 8d1283c..53e4392 100644 --- a/docs/Summary.Pipes.IO.CleanupDirPipe{I}.md +++ b/docs/Summary.Pipes.IO.CleanupDirPipe{I}.md @@ -1,4 +1,4 @@ -# [Summary.Pipes.IO.CleanupDirPipe](../src/Core/Pipes/IO/CleanupDirPipe.cs#L6) +# [Summary.Pipes.IO.CleanupDirPipe<I>](../src/Core/Pipes/IO/CleanupDirPipe.cs#L6) ```cs public class CleanupDirPipe : IPipe ``` diff --git a/docs/Summary.Pipes.IO.SavePipe{I}.md b/docs/Summary.Pipes.IO.SavePipe{I}.md index db64e7c..e4e6674 100644 --- a/docs/Summary.Pipes.IO.SavePipe{I}.md +++ b/docs/Summary.Pipes.IO.SavePipe{I}.md @@ -1,4 +1,4 @@ -# [Summary.Pipes.IO.SavePipe](../src/Core/Pipes/IO/SavePipe.cs#L6) +# [Summary.Pipes.IO.SavePipe<I>](../src/Core/Pipes/IO/SavePipe.cs#L6) ```cs public class SavePipe : IPipe ``` diff --git a/docs/Summary.Pipes.IPipe{I,O}.md b/docs/Summary.Pipes.IPipe{I,O}.md index 9852cf0..d0c6383 100644 --- a/docs/Summary.Pipes.IPipe{I,O}.md +++ b/docs/Summary.Pipes.IPipe{I,O}.md @@ -1,4 +1,4 @@ -# [Summary.Pipes.IPipe](../src/Core/Pipes/IPipe.cs#L8) +# [Summary.Pipes.IPipe<I, O>](../src/Core/Pipes/IPipe.cs#L8) ```cs public interface IPipe ``` diff --git a/docs/Summary.Pipes.Logging.LoggedPipe{I,O}.md b/docs/Summary.Pipes.Logging.LoggedPipe{I,O}.md index c6f2b8c..b4f0760 100644 --- a/docs/Summary.Pipes.Logging.LoggedPipe{I,O}.md +++ b/docs/Summary.Pipes.Logging.LoggedPipe{I,O}.md @@ -1,4 +1,4 @@ -# [Summary.Pipes.Logging.LoggedPipe](../src/Core/Pipes/Logging/LoggedPipe.cs#L11) +# [Summary.Pipes.Logging.LoggedPipe<I, O>](../src/Core/Pipes/Logging/LoggedPipe.cs#L11) ```cs public class LoggedPipe : IPipe ``` diff --git a/docs/Summary.Pipes.PipeExtensions.md b/docs/Summary.Pipes.PipeExtensions.md index d50fc03..d143a4e 100644 --- a/docs/Summary.Pipes.PipeExtensions.md +++ b/docs/Summary.Pipes.PipeExtensions.md @@ -6,84 +6,84 @@ public static class PipeExtensions Extension methods for [`IPipe`](./Summary.Pipes.IPipe{I,O}.md). ## Methods -### [Fold(IPipe)](../src/Core/Pipes/PipeExtensions.cs#L14) +### [Fold<I>(IPipe<I, Unit[]>)](../src/Core/Pipes/PipeExtensions.cs#L14) ```cs public static IPipe Fold(this IPipe self) ``` Folds the result of the specified pipe into a single [`Unit`](./Summary.Pipes.Unit.md) value. -### [Run(IPipe)](../src/Core/Pipes/PipeExtensions.cs#L20) +### [Run<O>(IPipe<Unit, O>)](../src/Core/Pipes/PipeExtensions.cs#L20) ```cs public static Task Run(this IPipe self) ``` Asynchronously runs the pipe. -### [Then(IPipe, IPipe)](../src/Core/Pipes/PipeExtensions.cs#L26) +### [Then<I, O1, O2>(IPipe<I, O1>, IPipe<O1, O2>)](../src/Core/Pipes/PipeExtensions.cs#L26) ```cs public static IPipe Then(this IPipe a, IPipe b) ``` Composes the pipe with another pipe so that the output of the first pipe is passed as an input to the second pipe. -### [Then(IPipe, IPipe, bool)](../src/Core/Pipes/PipeExtensions.cs#L32) +### [Then<I, O>(IPipe<I, O>, IPipe<O, O>, bool)](../src/Core/Pipes/PipeExtensions.cs#L32) ```cs public static IPipe Then(this IPipe a, IPipe b, bool when) ``` Composes the pipe with another pipe so that the output of the first pipe is passed as an input to the second pipe. -### [Then(IPipe, Func)](../src/Core/Pipes/PipeExtensions.cs#L38) +### [Then<I, O1, O2>(IPipe<I, O1>, Func<O1, O2>)](../src/Core/Pipes/PipeExtensions.cs#L38) ```cs public static IPipe Then(this IPipe a, Func map) ``` Constructs a new pipe that will apply the specified `select` function to the output of the current pipe. -### [Then(IPipe, Func, bool)](../src/Core/Pipes/PipeExtensions.cs#L44) +### [Then<I, O>(IPipe<I, O>, Func<O, O>, bool)](../src/Core/Pipes/PipeExtensions.cs#L44) ```cs public static IPipe Then(this IPipe a, Func map, bool when) ``` Constructs a new pipe that will apply the specified `select` function to the output of the current pipe. -### [ThenForEach(IPipe, IPipe)](../src/Core/Pipes/PipeExtensions.cs#L50) +### [ThenForEach<I, O1, O2>(IPipe<I, O1[]>, IPipe<O1, O2>)](../src/Core/Pipes/PipeExtensions.cs#L50) ```cs public static IPipe ThenForEach(this IPipe a, IPipe b) ``` Constructs a new pipe that will apply the specified map pipe to the each element of the output of the current pipe. -### [Tee(IPipe, Action)](../src/Core/Pipes/PipeExtensions.cs#L56) +### [Tee<I, O>(IPipe<I, O>, Action<O>)](../src/Core/Pipes/PipeExtensions.cs#L56) ```cs public static IPipe Tee(this IPipe a, Action action) ``` Constructs a new pipe that will execute the specified action on the output. -### [Logged(IPipe, ILoggerFactory, string)](../src/Core/Pipes/PipeExtensions.cs#L62) +### [Logged<I, O>(IPipe<I, O>, ILoggerFactory, string)](../src/Core/Pipes/PipeExtensions.cs#L62) ```cs public static IPipe Logged(this IPipe self, ILoggerFactory factory, string message) ``` Logs the execution of the given pipe using the specified logger factory. -### [Logged(IPipe, ILoggerFactory, Func)](../src/Core/Pipes/PipeExtensions.cs#L66) +### [Logged<I, O>(IPipe<I, O>, ILoggerFactory, Func<I, string>)](../src/Core/Pipes/PipeExtensions.cs#L66) ```cs public static IPipe Logged(this IPipe self, ILoggerFactory factory, Func message) ``` Logs the execution of the given pipe using the specified logger factory. -### [Logged(IPipe, ILogger, string)](../src/Core/Pipes/PipeExtensions.cs#L72) +### [Logged<I, O>(IPipe<I, O>, ILogger, string)](../src/Core/Pipes/PipeExtensions.cs#L72) ```cs public static IPipe Logged(this IPipe self, ILogger logger, string message) ``` Logs the execution of the given pipe using the specified logger. -### [Logged(IPipe, ILogger, Func)](../src/Core/Pipes/PipeExtensions.cs#L76) +### [Logged<I, O>(IPipe<I, O>, ILogger, Func<I, string>)](../src/Core/Pipes/PipeExtensions.cs#L76) ```cs public static IPipe Logged(this IPipe self, ILogger logger, Func message) ``` diff --git a/docs/Summary.Pipes.TeePipe{I,O}.md b/docs/Summary.Pipes.TeePipe{I,O}.md index c34f8f4..e6ef119 100644 --- a/docs/Summary.Pipes.TeePipe{I,O}.md +++ b/docs/Summary.Pipes.TeePipe{I,O}.md @@ -1,4 +1,4 @@ -# [Summary.Pipes.TeePipe](../src/Core/Pipes/TeePipe.cs#L6) +# [Summary.Pipes.TeePipe<I, O>](../src/Core/Pipes/TeePipe.cs#L6) ```cs public class TeePipe : IPipe ``` diff --git a/docs/Summary.Pipes.ThenForEach{I,O1,O2}.md b/docs/Summary.Pipes.ThenForEach{I,O1,O2}.md index 538ff35..cad2fb9 100644 --- a/docs/Summary.Pipes.ThenForEach{I,O1,O2}.md +++ b/docs/Summary.Pipes.ThenForEach{I,O1,O2}.md @@ -1,4 +1,4 @@ -# [Summary.Pipes.ThenForEach](../src/Core/Pipes/ThenForEach.cs#L6) +# [Summary.Pipes.ThenForEach<I, O1, O2>](../src/Core/Pipes/ThenForEach.cs#L6) ```cs public class ThenForEach : IPipe ``` diff --git a/docs/Summary.Pipes.ThenPipe{I,O1,O2}.md b/docs/Summary.Pipes.ThenPipe{I,O1,O2}.md index 48310f6..69f3558 100644 --- a/docs/Summary.Pipes.ThenPipe{I,O1,O2}.md +++ b/docs/Summary.Pipes.ThenPipe{I,O1,O2}.md @@ -1,4 +1,4 @@ -# [Summary.Pipes.ThenPipe](../src/Core/Pipes/ThenPipe.cs#L6) +# [Summary.Pipes.ThenPipe<I, O1, O2>](../src/Core/Pipes/ThenPipe.cs#L6) ```cs public class ThenPipe : IPipe ``` diff --git a/docs/Summary.Roslyn.CSharp.Extensions.DocMemberExtensions.md b/docs/Summary.Roslyn.CSharp.Extensions.DocMemberExtensions.md index e2fa4bc..e2d3817 100644 --- a/docs/Summary.Roslyn.CSharp.Extensions.DocMemberExtensions.md +++ b/docs/Summary.Roslyn.CSharp.Extensions.DocMemberExtensions.md @@ -6,7 +6,7 @@ public static class DocMemberExtensions A set of extension methods for [`DocMember`](./Summary.DocMember.md). ## Methods -### [WithComment(T, MemberDeclarationSyntax)](../src/Plugins/Roslyn/CSharp/Extensions/DocMemberExtensions.cs#L13) +### [WithComment<T>(T, MemberDeclarationSyntax)](../src/Plugins/Roslyn/CSharp/Extensions/DocMemberExtensions.cs#L13) ```cs public static T WithComment(this T self, MemberDeclarationSyntax syntax) ``` diff --git a/docs/Summary.Samples.InheritDocBase.md b/docs/Summary.Samples.InheritDocBase.md index 9fadac8..18fe239 100644 --- a/docs/Summary.Samples.InheritDocBase.md +++ b/docs/Summary.Samples.InheritDocBase.md @@ -118,7 +118,7 @@ Calculates the sum. #### Returns Returns the sum of two values. -### [Sum(byte, byte)](../src/Core/Samples/InheritDocSample.cs#L83) +### [Sum<T>(byte, byte)](../src/Core/Samples/InheritDocSample.cs#L83) ```cs public byte Sum(byte x, byte y) ``` diff --git a/docs/Summary.Samples.Sample{T0,T1}.Child.md b/docs/Summary.Samples.Sample{T0,T1}.Child.md index 2b00f63..0eb11be 100644 --- a/docs/Summary.Samples.Sample{T0,T1}.Child.md +++ b/docs/Summary.Samples.Sample{T0,T1}.Child.md @@ -1,4 +1,4 @@ -# [~~Summary.Samples.Sample.Child~~](../src/Core/Samples/Sample.cs#L42) +# [~~Summary.Samples.Sample<T0, T1>.Child~~](../src/Core/Samples/Sample.cs#L42) > [!WARNING] > The type is deprecated. diff --git a/docs/Summary.Samples.Sample{T0,T1}.md b/docs/Summary.Samples.Sample{T0,T1}.md index aa8f50d..5e9fb01 100644 --- a/docs/Summary.Samples.Sample{T0,T1}.md +++ b/docs/Summary.Samples.Sample{T0,T1}.md @@ -1,4 +1,4 @@ -# [Summary.Samples.Sample](../src/Core/Samples/Sample.cs#L35) +# [Summary.Samples.Sample<T0, T1>](../src/Core/Samples/Sample.cs#L35) ```cs public class Sample ``` @@ -124,7 +124,7 @@ A sample indexer. What indexer returns. ## Methods -### [Method(int, string)](../src/Core/Samples/Sample.cs#L130) +### [Method<M0, M1, M2>(int, string)](../src/Core/Samples/Sample.cs#L130) ```cs public TimeSpan Method(int x, string y) ``` @@ -154,7 +154,7 @@ The `TimeSpan` instance. - `ArgumentException`: The argument is incorrect. - `ApplicationException`: Something went wrong. -### [Method(short, string)](../src/Core/Samples/Sample.cs#L137) +### [Method<M0, M1, M2>(short, string)](../src/Core/Samples/Sample.cs#L137) ```cs public TimeSpan Method(short x, string y) ``` diff --git a/docs/Summary.Tests.Extensions.md b/docs/Summary.Tests.Extensions.md index b0a5c04..f42f371 100644 --- a/docs/Summary.Tests.Extensions.md +++ b/docs/Summary.Tests.Extensions.md @@ -6,7 +6,7 @@ public static class Extensions Extension methods that simplify unit testing and should not be included in the package. ## Methods -### [RunSync(IPipe)](../src/Tests/Extensions.cs#L14) +### [RunSync<O>(IPipe<Unit, O>)](../src/Tests/Extensions.cs#L14) ```cs public static O RunSync(this IPipe self) ``` @@ -16,7 +16,7 @@ Runs the pipe synchronously. #### Parameters - `self`: The pipe to execute. -### [RunSync(IPipe, I)](../src/Tests/Extensions.cs#L18) +### [RunSync<I, O>(IPipe<I, O>, I)](../src/Tests/Extensions.cs#L18) ```cs public static O RunSync(this IPipe self, I input) ``` diff --git a/src/Plugins/Markdown/MarkdownRenderExtensions.cs b/src/Plugins/Markdown/MarkdownRenderExtensions.cs index 8997d6b..24db3f5 100644 --- a/src/Plugins/Markdown/MarkdownRenderExtensions.cs +++ b/src/Plugins/Markdown/MarkdownRenderExtensions.cs @@ -9,6 +9,17 @@ namespace Summary.Markdown; /// internal static class MarkdownRenderExtensions { + /// + /// Escapes all different HTML characters such as '>' or '<' from the specified Markdown string. + /// + /// + /// The output string can safely be used in a rendered Markdown. + /// + internal static string Escape(this string self) => + self + .Replace("<", "<") + .Replace(">", ">"); + /// /// The source file name for this member. /// diff --git a/src/Plugins/Markdown/MdRenderer.cs b/src/Plugins/Markdown/MdRenderer.cs index 03d111a..f1e9e55 100644 --- a/src/Plugins/Markdown/MdRenderer.cs +++ b/src/Plugins/Markdown/MdRenderer.cs @@ -126,7 +126,7 @@ string Link(string text) var from = new Uri(_output); var to = new Uri(member.Location.Path); - return $"[{text}]({from.MakeRelativeUri(to)}#L{member.Location.Start.Line + 1})"; + return $"[{text.Escape()}]({from.MakeRelativeUri(to)}#L{member.Location.Start.Line + 1})"; } return text; diff --git a/src/Plugins/Markdown/RenderMarkdownPipe.cs b/src/Plugins/Markdown/RenderMarkdownPipe.cs index 97b5d07..3b8555f 100644 --- a/src/Plugins/Markdown/RenderMarkdownPipe.cs +++ b/src/Plugins/Markdown/RenderMarkdownPipe.cs @@ -1,4 +1,5 @@ -using Summary.Pipes; +using System.Text; +using Summary.Pipes; namespace Summary.Markdown; @@ -14,7 +15,9 @@ public Task Run(Doc doc) => .Members .OfType() .SelectMany(x => x.AllMembers.OfType())) - .Select(x => Render(doc, x)).ToArray()); + .Select(x => Render(doc, x)) + .Concat(new [] { Index(doc) }) + .ToArray()); private Md Render(Doc doc, DocMember member) { @@ -22,4 +25,32 @@ private Md Render(Doc doc, DocMember member) return new($"{member.FileName()}.md", text); } + + private Md Index(Doc doc) + { + return new("README.md", Content()); + + string Content() + { + var text = new StringBuilder(); + var namespaces = doc + .Index + .Members + .OfType() + .GroupBy(x => x.Namespace) + .ToDictionary(x => x.Key, x => x.ToList()); + + foreach (var (ns, members) in namespaces) + { + text.AppendLine($"# {ns}"); + + foreach (var member in members) + text.AppendLine($"- [**{member.FullyQualifiedName.Escape()}**]({member.FileName()}.md)"); + + text.AppendLine(); + } + + return text.ToString(); + } + } } \ No newline at end of file