ParentModule Class
A base class for modules that contain a collection of child modules. Note that this does not call an execute method and derived modules need to override one.
graph BT Type-->Base0["Module"] click Base0 "/api/Statiq.Common/Module" Base0-->Base1["object"] Type-.->Interface0["IModule"] click Interface0 "/api/Statiq.Common/IModule" Type-.->Interface1["IEnumerable<IModule>"] Type-.->Interface2["IEnumerable"] Type["ParentModule"] class Type type-node Derived0["CacheDocuments"]-->Type click Derived0 "/api/Statiq.Core/CacheDocuments" Derived1["ProcessSidecarFile"]-->Type click Derived1 "/api/Statiq.Core/ProcessSidecarFile" Derived2["ExtractFrontMatter"]-->Type click Derived2 "/api/Statiq.Core/ExtractFrontMatter" Derived3["ForEachDocument"]-->Type click Derived3 "/api/Statiq.Common/ForEachDocument" Derived4["RetryModules"]-->Type click Derived4 "/api/Statiq.Core/RetryModules" Derived5["ChildDocumentsModule"]-->Type click Derived5 "/api/Statiq.Common/ChildDocumentsModule" Derived6["ForAllDocuments"]-->Type click Derived6 "/api/Statiq.Common/ForAllDocuments"

Syntax

public abstract class ParentModule : Module, IModule, IEnumerable<IModule>, IEnumerable

Remarks

Implementing modules should be careful not to accept IEnumerable<T> as a constructor parameter because doing so and then passing an ParentModule as a direct child could add the modules from the child container module directly to the parent instead of adding the actual child container module.

Implementing types should also provide an empty constructor to allow collection initialization syntax to work, or at least be sure that a constructor overload exists that does not require specifying child modules in the constructor.

It's also recommended that if a module accepts child modules they are guaranteed to always execute. If the child modules are only executed under certain conditions (like if a config delegate is not specified) then it's recommended the module be split into multiple modules, one of which is responsible for executing child modules.

Constructors

Name Summary
ParentModule(IModule[]) Creates a new container module with the specified child modules. Any null items in the sequence of modules will be discarded.

Properties

Name Property Type Summary
Children ModuleList
The children of this module.

Methods

Name Return Value Summary
Add(IModule[]) void
Adds modules as a child of this module.
AfterExecution(IExecutionContext, ExecutionOutputs) void
Called after each module execution.
Inherited from Module
AfterExecutionAsync(IExecutionContext, ExecutionOutputs) Task
Called after each module execution.
Inherited from Module
BeforeExecution(IExecutionContext) void
Called before each module execution.
Inherited from Module
BeforeExecutionAsync(IExecutionContext) Task
Called before each module execution.
Inherited from Module
ExecuteAsync(IExecutionContext) Task<IEnumerable<IDocument>>
This should not be called directly, instead call IExecutionContext.Execute() if you need to execute a module from within another module.
Inherited from Module
ExecuteContextAsync(IExecutionContext) Task<IEnumerable<IDocument>>
Executes the module once for all input documents.
Inherited from Module
ExecuteInputAsync(IDocument, IExecutionContext) Task<IEnumerable<IDocument>>
Executes the module.
Inherited from Module
Finally(IExecutionContext) void
Called after each module execution, even if an exception is thrown during execution.
Inherited from Module
FinallyAsync(IExecutionContext) Task
Called after each module execution, even if an exception is thrown during execution.
Inherited from Module
GetEnumerator() IEnumerator<IModule>

Extension Methods

Name Value Summary
Concat<IModule>(IModule) IEnumerable<T>
ForEachDocument() ForEachDocument
GetNext<IModule>(IModule, IEqualityComparer<IModule>) T
GetNext<IModule>(IModule) T
GetPrevious<IModule>(IModule, IEqualityComparer<IModule>) T
GetPrevious<IModule>(IModule) T
GroupByMany<IModule, TKey, TElement>(Func<IModule, IEnumerable<TKey>>, Func<IModule, TElement>, IEqualityComparer<TKey>) IEnumerable<IGrouping<TKey, TElement>>
Groups the elements of a sequence according to a specified key selector function that returns a sequence of keys. The keys are compared by using a comparer and each group's elements are projected by using a specified function.
GroupByMany<IModule, TKey, TElement>(Func<IModule, IEnumerable<TKey>>, Func<IModule, TElement>) IEnumerable<IGrouping<TKey, TElement>>
Groups the elements of a sequence according to a specified key selector function that returns a sequence of keys and projects the elements for each group by using a specified function.
GroupByMany<IModule, TKey>(Func<IModule, IEnumerable<TKey>>, IEqualityComparer<TKey>) IEnumerable<IGrouping<TKey, TSource>>
Groups the elements of a sequence according to a specified key selector function that returns a sequence of keys and compares the keys by using a specified comparer.
GroupByMany<IModule, TKey>(Func<IModule, IEnumerable<TKey>>) IEnumerable<IGrouping<TKey, TSource>>
Groups the elements of a sequence according to a specified key selector function that returns a sequence of keys.
GroupByManyToMany<IModule, TKey, TElement>(Func<IModule, IEnumerable<TKey>>, Func<IModule, IEnumerable<TElement>>, IEqualityComparer<TKey>) IEnumerable<IGrouping<TKey, TElement>>
Groups the elements of a sequence according to a specified key selector function that returns a sequence of keys. The keys are compared by using a comparer and each group's elements are projected by using a specified function that returns a sequence of elements.
GroupByManyToMany<IModule, TKey, TElement>(Func<IModule, IEnumerable<TKey>>, Func<IModule, IEnumerable<TElement>>) IEnumerable<IGrouping<TKey, TElement>>
Groups the elements of a sequence according to a specified key selector function that returns a sequence of keys and projects the elements for each group by using a specified function that returns a sequence of elements.
ParallelForEachAsync<IModule>(Func<IModule, Task>, CancellationToken) Task
ParallelSelectAsync<IModule, TResult>(Func<IModule, Task<TResult>>, CancellationToken) Task<IEnumerable<TResult>>
Invokes an async selector in parallel.
ParallelSelectManyAsync<IModule, TResult>(Func<IModule, Task<IEnumerable<TResult>>>, CancellationToken) Task<IEnumerable<TResult>>
Invokes an async selector that returns multiple results in parallel.
ParallelWhereAsync<IModule>(Func<IModule, Task<bool>>, CancellationToken) Task<IEnumerable<TSource>>
StartsWith<IModule>(IEnumerable<IModule>, IEqualityComparer<IModule>) bool
Determines whether the items starts with the specified values.
StartsWith<IModule>(IEnumerable<IModule>) bool
Determines whether the items starts with the specified values.
ThrowIfNull<ParentModule>(string) T
ToDocument<ParentModule>(IContentProvider) IDocument
ToDocument<ParentModule>(IEnumerable<KeyValuePair<string, object>>, IContentProvider) IDocument
ToDocument<ParentModule>(NormalizedPath, IContentProvider) IDocument
ToDocument<ParentModule>(NormalizedPath, IEnumerable<KeyValuePair<string, object>>, IContentProvider) IDocument
ToDocument<ParentModule>(NormalizedPath, NormalizedPath, IContentProvider) IDocument
ToDocument<ParentModule>(NormalizedPath, NormalizedPath, IEnumerable<KeyValuePair<string, object>>, IContentProvider) IDocument
ToDocuments<IModule>(Func<IModule, IContentProvider>) IEnumerable<IDocument>
ToDocuments<IModule>(Func<IModule, IEnumerable<KeyValuePair<string, object>>>, Func<IModule, IContentProvider>) IEnumerable<IDocument>
ToDocuments<IModule>(Func<IModule, NormalizedPath>, Func<IModule, IContentProvider>) IEnumerable<IDocument>
ToDocuments<IModule>(Func<IModule, NormalizedPath>, Func<IModule, IEnumerable<KeyValuePair<string, object>>>, Func<IModule, IContentProvider>) IEnumerable<IDocument>
ToDocuments<IModule>(Func<IModule, NormalizedPath>, Func<IModule, NormalizedPath>, Func<IModule, IContentProvider>) IEnumerable<IDocument>
ToDocuments<IModule>(Func<IModule, NormalizedPath>, Func<IModule, NormalizedPath>, Func<IModule, IEnumerable<KeyValuePair<string, object>>>, Func<IModule, IContentProvider>) IEnumerable<IDocument>
ToLookupMany<IModule, TKey, TElement>(Func<IModule, IEnumerable<TKey>>, Func<IModule, TElement>, IEqualityComparer<TKey>) ILookup<TKey, TElement>
Creates a lookup from a sequence according to a specified key selector function that returns a sequence of keys. The keys are compared by using a comparer and each group's elements are projected by using a specified function.
ToLookupMany<IModule, TKey, TElement>(Func<IModule, IEnumerable<TKey>>, Func<IModule, TElement>) ILookup<TKey, TElement>
Creates a lookup from a sequence according to a specified key selector function that returns a sequence of keys and projects the elements for each group by using a specified function.
ToLookupMany<IModule, TKey>(Func<IModule, IEnumerable<TKey>>, IEqualityComparer<TKey>) ILookup<TKey, TSource>
Creates a lookup from a sequence according to a specified key selector function that returns a sequence of keys and compares the keys by using a specified comparer.
ToLookupMany<IModule, TKey>(Func<IModule, IEnumerable<TKey>>) ILookup<TKey, TSource>
Creates a lookup from a sequence according to a specified key selector function that returns a sequence of keys.
ToLookupManyToMany<IModule, TKey, TElement>(Func<IModule, IEnumerable<TKey>>, Func<IModule, IEnumerable<TElement>>, IEqualityComparer<TKey>) ILookup<TKey, TElement>
Creates a lookup from a sequence according to a specified key selector function that returns a sequence of keys. The keys are compared by using a comparer and each group's elements are projected by using a specified function that returns a sequence of elements.
ToLookupManyToMany<IModule, TKey, TElement>(Func<IModule, IEnumerable<TKey>>, Func<IModule, IEnumerable<TElement>>) ILookup<TKey, TElement>
Creates a lookup from a sequence according to a specified key selector function that returns a sequence of keys and projects the elements for each group by using a specified function that returns a sequence of elements.
ToStringTable<IModule>(string[], Func<IModule, object>[]) string
WithChildren<ParentModule>(IEnumerable<IModule>) TModule
WithChildren<ParentModule>(IModule[]) TModule