using Autofac;
using Chernobyl.App.Core;
using Chernobyl.App.Layout;
using Chernobyl.Config;
using Chernobyl.Creation;

namespace Chernobyl.App.Patterns
{
    /// <summary>
    /// Injects the pattern services.
    /// </summary>
    public class Module : Autofac.Module
    {
        /// <inheritdoc />
        protected override void Load(ContainerBuilder builder)
        {
            builder.BindTemplateResourceAuto();

            // The factory that creates conflicted patterns.
            builder.RegisterType<PatternFactory>()
                .As<IBuilder<Content>, IFactory<Content>>()
                .WithMetadata<FactoryMetadata>(c => c.For(fm => fm.CreationName, "Pattern"))
                .SingleInstance();
        }
    }
}