/// <summary>
/// Builds the document, using the provided <paramref name="model"/>.
/// <para/><see cref="ActiveModules"/> are applied to the document in sequence.
/// <para/>Enabling <paramref name="debug"/> stores intermediate states after each module.
/// </summary>
/// <seealso cref="Debugger"/>
///
public Templ Build(object model, bool debug = TemplConst.Debug, HandleFailAction modelEntryFailAction = HandleFailAction.exception)
{
if (debug)
{
Debugger.AddState(Document, "Init");
}
ActiveModules.ForEach(module =>
{
module.Build(Document.Docx, model, modelEntryFailAction);
if (debug && module.Used)
{
Debugger.AddState(Document, module.Name);
}
});
if (debug)
{
Debugger.AddModuleReport(ActiveModules);
}
Document.Commit();
Debugger.Commit();
return(this);
}