Engine Class
The engine is the primary entry point for the generation process.
Namespace
Statiq.Core
Interfaces
Base Types
  • object
graph BT Type-->Base0["object"] Type-.->Interface0["IEngine"] click Interface0 "/api/Statiq.Common/IEngine" Type-.->Interface1["IConfigurable"] click Interface1 "/api/Statiq.Common/IConfigurable" Type-.->Interface2["IExecutionState"] click Interface2 "/api/Statiq.Common/IExecutionState" Type-.->Interface3["IDocumentFactory"] click Interface3 "/api/Statiq.Common/IDocumentFactory" Type-.->Interface4["IDisposable"] Type["Engine"] class Type type-node

Syntax

public class Engine : IEngine, IConfigurable, IExecutionState, IDocumentFactory, IDisposable

Constructors

Name Summary
Engine() Creates an engine with empty application state, configuration, and services.
Engine(IApplicationState, IServiceCollection, Settings, ClassCatalog, IReadOnlyFileSystem) Creates an engine with the specified application state, configuration, and service provider.
Engine(IApplicationState, IServiceCollection, Settings, ClassCatalog) Creates an engine with the specified application state, configuration, and service provider.
Engine(IApplicationState, IServiceCollection, Settings) Creates an engine with the specified application state, configuration, and service provider.
Engine(IApplicationState, IServiceCollection) Creates an engine with the specified application state and service provider.
Engine(IApplicationState) Creates an engine with the specified application state.
Engine(IServiceCollection) Creates an engine with the specified service provider.

Properties

Name Property Type Summary
Analyzers IAnalyzerCollection
A collection of analyzers.
ApplicationState IApplicationState
Gets the state of the application when it was run.
CancellationToken CancellationToken
Gets a cancellation token that will be canceled when processing should stop.
ClassCatalog ClassCatalog
A catalog of all classes in all assemblies loaded by the current application context.
Events IEventCollection
Gets global events and event handlers.
ExecutingPipelines IReadOnlyPipelineCollection
The pipelines currently being executed.
ExecutionDateTime DateTime
The date/time that the current execution started.
ExecutionId Guid
Uniquely identifies the current execution cycle. This can be used to initialize and/or reset static data for a module on new generations (I.e., due to watching). For example, cache data could be cleared when this changes between runs.
FileSystem IReadOnlyFileSystem
Gets the current file system.
LinkGenerator ILinkGenerator
Helps generate normalized links.
Logger ILogger
MemoryStreamFactory IMemoryStreamFactory
Provides pooled memory streams (via the RecyclableMemoryStream library).
Namespaces INamespacesCollection
Gets a set of namespaces that should be brought into scope for modules that perform dynamic compilation.
OutputPages FilteredDocumentList<IDocument>
Gets the collection of output documents from all previously processed pipelines, filtered to destination paths with a PageFileExtensions extension (which defaults to ".htm" and ".html").
Outputs IPipelineOutputs
Gets the collection of output documents from all previously processed pipelines.
Pipelines IPipelineCollection
Gets the pipelines.
ScriptHelper IScriptHelper
Gets a helper that can compile and evaluate C# scripts.
SerialExecution bool
Executes pipeline phases and modules in serial.
Services IServiceProvider
Gets the dependency injection service provider.
Settings ISettings
Gets the configuration and settings.
Shortcodes IShortcodeCollection
Gets the shortcodes.

Methods

Name Return Value Summary
ApplyAnalyzerSettings(IReadOnlyList<string>) void
Applies settings for analyzers and log levels as "[analyzer]=[log level]" (log level is optional, "All" to set all analyzers).
CreateDocument(NormalizedPath, NormalizedPath, IEnumerable<KeyValuePair<string, object>>, IContentProvider) IDocument
CreateDocument<TDocument>(NormalizedPath, NormalizedPath, IEnumerable<KeyValuePair<string, object>>, IContentProvider) TDocument
CreateHttpClient() HttpClient
Creates a HttpClient instance that should be used for all HTTP communication.
CreateHttpClient(HttpMessageHandler) HttpClient
Creates a new HttpClient instance that uses a custom message handler.
Dispose() void
ExecuteAsync(CancellationToken) Task<IPipelineOutputs>
Executes pipelines with Normal and Always policies.
ExecuteAsync(string[], bool, CancellationToken) Task<IPipelineOutputs>
Executes the specified pipelines and pipelines with Always policies.
ExecuteAsync(string[], CancellationToken) Task<IPipelineOutputs>
Executes the specified pipelines and pipelines with Always policies.
GetContentStream(string) Stream
Gets a Stream that can be used for document content. If content is not null, the stream is initialized with the specified content. It is preferred to use this method to obtain a stream over creating your own if the source of the content does not already provide one. The returned streams are optimized for memory usage and performance. Instances of the returned stream should be disposed when writing is complete.
GetJavaScriptEnginePool(Action<IJavaScriptEngine>, int, int, int, TimeSpan?) IJavaScriptEnginePool
Gets a new IJavaScriptEnginePool. The returned engine pool should be disposed when no longer needed.
SendHttpRequestWithRetryAsync(Func<HttpRequestMessage>, int) Task<HttpResponseMessage>
Sends an HttpRequestMessage with exponential back-off.
SendHttpRequestWithRetryAsync(Func<HttpRequestMessage>) Task<HttpResponseMessage>
Sends an HttpRequestMessage with exponential back-off.
SetDefaultDocumentType<TDocument>() void

Extension Methods

Name Value Summary
CloneOrCreateDocument(IDocument, IContentProvider) IDocument
CloneOrCreateDocument(IDocument, IEnumerable<KeyValuePair<string, object>>, IContentProvider) IDocument
CloneOrCreateDocument(IDocument, NormalizedPath, IContentProvider) IDocument
CloneOrCreateDocument(IDocument, NormalizedPath, IEnumerable<KeyValuePair<string, object>>, IContentProvider) IDocument
CloneOrCreateDocument(IDocument, NormalizedPath, NormalizedPath, IContentProvider) IDocument
CloneOrCreateDocument(IDocument, NormalizedPath, NormalizedPath, IEnumerable<KeyValuePair<string, object>>, IContentProvider) IDocument
CloneOrCreateDocument<TDocument>(TDocument, IContentProvider) TDocument
CloneOrCreateDocument<TDocument>(TDocument, IEnumerable<KeyValuePair<string, object>>, IContentProvider) TDocument
CloneOrCreateDocument<TDocument>(TDocument, NormalizedPath, IContentProvider) TDocument
CloneOrCreateDocument<TDocument>(TDocument, NormalizedPath, IEnumerable<KeyValuePair<string, object>>, IContentProvider) TDocument
CloneOrCreateDocument<TDocument>(TDocument, NormalizedPath, NormalizedPath, IContentProvider) TDocument
CloneOrCreateDocument<TDocument>(TDocument, NormalizedPath, NormalizedPath, IEnumerable<KeyValuePair<string, object>>, IContentProvider) TDocument
CreateDocument(IContentProvider) IDocument
CreateDocument(IEnumerable<KeyValuePair<string, object>>, IContentProvider) IDocument
CreateDocument(NormalizedPath, IContentProvider) IDocument
CreateDocument(NormalizedPath, IEnumerable<KeyValuePair<string, object>>, IContentProvider) IDocument
CreateDocument(NormalizedPath, NormalizedPath, IContentProvider) IDocument
CreateDocument<TDocument>(IContentProvider) TDocument
CreateDocument<TDocument>(IEnumerable<KeyValuePair<string, object>>, IContentProvider) TDocument
CreateDocument<TDocument>(NormalizedPath, IContentProvider) TDocument
CreateDocument<TDocument>(NormalizedPath, IEnumerable<KeyValuePair<string, object>>, IContentProvider) TDocument
CreateDocument<TDocument>(NormalizedPath, NormalizedPath, IContentProvider) TDocument
GetCurrentDateTime() DateTime
Gets the current date/time using the CurrentDateTime metadata setting if it's set, otherwise using the value of ExecutionDateTime (which is System.DateTime.Now at the time execution started).
GetLink(IDocument, bool) string
Gets a link for the specified document using the document destination. This version should be used inside modules to ensure consistent link generation. Note that you can optionally include the host or not depending on if you want to generate host-specific links. By default, the host is not included so that sites work the same on any server including the preview server.
GetLink(IMetadata, string, bool) string
Gets a link for the specified metadata using the specified metadata value and the default settings from the configuration. This version should be used inside modules to ensure consistent link generation. Note that you can optionally include the host or not depending on if you want to generate host-specific links. By default, the host is not included so that sites work the same on any server including the preview server.
GetLink(IMetadata, string, string, bool) string
Gets a link for the specified metadata using the specified metadata value and the default settings from the configuration. This version should be used inside modules to ensure consistent link generation. Note that you can optionally include the host or not depending on if you want to generate host-specific links. By default, the host is not included so that sites work the same on any server including the preview server.
GetLink(NormalizedPath, bool) string
Converts the specified path into a string appropriate for use as a link using default settings from the configuration. This version should be used inside modules to ensure consistent link generation. Note that you can optionally include the host or not depending on if you want to generate host-specific links. By default, the host is not included so that sites work the same on any server including the preview server.
GetLink(NormalizedPath, string, NormalizedPath, bool, bool, bool, bool, bool, bool) string
Converts the path into a string appropriate for use as a link, overriding one or more settings from the configuration.
GetLink(NormalizedPath, string, NormalizedPath, bool, bool, bool, bool, bool) string
Converts the path into a string appropriate for use as a link, overriding one or more settings from the configuration.
GetLink(NormalizedPath, string, NormalizedPath, bool, bool, bool, bool) string
Converts the path into a string appropriate for use as a link, overriding one or more settings from the configuration.
GetLink(NormalizedPath, string, NormalizedPath, bool, bool, bool) string
Converts the path into a string appropriate for use as a link, overriding one or more settings from the configuration.
GetLink(NormalizedPath, string, string, bool, bool, bool, bool, bool, bool) string
Converts the path into a string appropriate for use as a link, overriding one or more settings from the configuration.
GetLink(NormalizedPath, string, string, bool, bool, bool, bool, bool) string
Converts the path into a string appropriate for use as a link, overriding one or more settings from the configuration.
GetLink(NormalizedPath, string, string, bool, bool, bool, bool) string
Converts the path into a string appropriate for use as a link, overriding one or more settings from the configuration.
GetLink(NormalizedPath, string, string, bool, bool, bool) string
Converts the path into a string appropriate for use as a link, overriding one or more settings from the configuration.
GetLink(string, bool) string
Converts the specified path into a string appropriate for use as a link using default settings from the configuration. This version should be used inside modules to ensure consistent link generation. Note that you can optionally include the host or not depending on if you want to generate host-specific links. By default, the host is not included so that sites work the same on any server including the preview server.
GetLink(string, string, NormalizedPath, bool, bool, bool, bool, bool, bool) string
Converts the path into a string appropriate for use as a link, overriding one or more settings from the configuration.
GetLink(string, string, NormalizedPath, bool, bool, bool, bool, bool) string
Converts the path into a string appropriate for use as a link, overriding one or more settings from the configuration.
GetLink(string, string, NormalizedPath, bool, bool, bool, bool) string
Converts the path into a string appropriate for use as a link, overriding one or more settings from the configuration.
GetLink(string, string, NormalizedPath, bool, bool, bool) string
Converts the path into a string appropriate for use as a link, overriding one or more settings from the configuration.
GetLink(string, string, string, bool, bool, bool, bool, bool, bool) string
Converts the path into a string appropriate for use as a link, overriding one or more settings from the configuration.
GetLink(string, string, string, bool, bool, bool, bool, bool) string
Converts the path into a string appropriate for use as a link, overriding one or more settings from the configuration.
GetLink(string, string, string, bool, bool, bool, bool) string
Converts the path into a string appropriate for use as a link, overriding one or more settings from the configuration.
GetLink(string, string, string, bool, bool, bool) string
Converts the path into a string appropriate for use as a link, overriding one or more settings from the configuration.
GetLink() string
Gets a link for the root of the site using the host and root path specified in the settings.
LogAndCheckVersion(Assembly, string, string) void
SendHttpRequestWithRetryAsync(string) Task<HttpResponseMessage>
Sends a GET request with exponential back-off.
SendHttpRequestWithRetryAsync(Uri) Task<HttpResponseMessage>
Sends a GET request with exponential back-off.
ThrowIfNull<Engine>(string) T
ToDocument<Engine>(IContentProvider) IDocument
ToDocument<Engine>(IEnumerable<KeyValuePair<string, object>>, IContentProvider) IDocument
ToDocument<Engine>(NormalizedPath, IContentProvider) IDocument
ToDocument<Engine>(NormalizedPath, IEnumerable<KeyValuePair<string, object>>, IContentProvider) IDocument
ToDocument<Engine>(NormalizedPath, NormalizedPath, IContentProvider) IDocument
ToDocument<Engine>(NormalizedPath, NormalizedPath, IEnumerable<KeyValuePair<string, object>>, IContentProvider) IDocument