예제 #1
0
    /// <summary>
    /// Builds up our service container for DI
    /// </summary>
    /// <param name="inputDirectory">Defined Input Directory</param>
    /// <param name="outputDirectory">Defined Output Directory</param>
    /// <returns>Service Provider</returns>
    private static ServiceProvider ConfigureServices(string inputDirectory, string outputDirectory)
    {
        var services = new ServiceCollection();

        // build configuration
        var configuration = new ConfigurationBuilder()
                            .SetBasePath(inputDirectory)
                            .AddJsonFile("beard.json", optional: true)
                            .Build();

        services.AddOptions();

        // bind to our config model
        var config = new BeardConfig();

        configuration.Bind("Config", config);
        services.AddSingleton(config);

        services.AddSingleton <GeneratorContext>(new GeneratorContext(inputDirectory, outputDirectory));
        services.AddSingleton <MarkdownProcessor>();
        services.AddSingleton <RazorProcessor>();
        services.AddSingleton <StaticProcessor>();
        services.AddSingleton <HtmlFormatProcessor>();
        services.AddSingleton <ILogger, ConsoleLogger>();
        services.AddSingleton <IFileSystem, DiskFileSystem>();
        services.AddTransient <IUrlProvider, UrlProvider>();
        services.AddSingleton <RazorViewRenderer>();
        services.AddSingleton <StaticGenerator>();

        return(services.BuildServiceProvider());
    }
예제 #2
0
 public StaticProcessor(ILogger logger, IUrlProvider urlProvider, BeardConfig config, GeneratorContext context)
 {
     this._log              = logger;
     this._urlProvider      = urlProvider;
     this._config           = config;
     this._context          = context;
     this._ignoreExtensions = this._config.StaticExtensionIgnoreList.Select(x => x.ToLower()).ToList();
 }
예제 #3
0
    public ViewContext(OutputFile current, GeneratorContext context, BeardConfig config)
    {
        Current = current;

        Siblings = context.OutputFiles.Where(x => x.RelativeDirectory.Equals(current.RelativeDirectory) && x != current);
        Children = context.OutputFiles.Where(x => x.RelativeDirectory.Contains(current.RelativeDirectory) && !x.RelativeDirectory.Equals(current.RelativeDirectory));
        All      = context.OutputFiles;
        Config   = config;
    }
예제 #4
0
 public RazorProcessor(IFileSystem fileSystem, RazorViewRenderer renderer,
                       ILogger logger, IUrlProvider urlProvider, BeardConfig config, GeneratorContext context)
 {
     _fileSystem  = fileSystem;
     _log         = logger;
     _urlProvider = urlProvider;
     _config      = config;
     _renderer    = renderer;
     _context     = context;
 }
예제 #5
0
    public MarkdownProcessor(IFileSystem fileSystem, ILogger logger, IUrlProvider urlProvider, BeardConfig config, GeneratorContext context)
    {
        _log         = logger;
        _fileSystem  = fileSystem;
        _urlProvider = urlProvider;
        _context     = context;
        _config      = config;

        // Enable MarkdownExtensions if configured
        if (_config.EnableMarkdownExtensions)
        {
            _pipeline = new MarkdownPipelineBuilder()
                        .UseAdvancedExtensions()
                        .Build();
        }
    }
예제 #6
0
 public UrlProvider(BeardConfig config)
 {
     this._config = config;
 }
예제 #7
0
 public DiskFileSystem(ILogger logger, BeardConfig config)
 {
     _log    = logger;
     _config = config;
 }