예제 #1
0
        public Data()
        {
            Dependencies.Add(nameof(DirectoryMetadata));

            InputModules = new ModuleList
            {
                new ReadFiles(Config.FromSetting <IEnumerable <string> >(WebKeys.DataFiles))
            };

            ProcessModules = new ModuleList
            {
                // Concat all documents from externally declared dependencies (exclude explicit dependencies above)
                new ConcatDocuments(Config.FromContext <IEnumerable <IDocument> >(ctx => ctx.Outputs.FromPipelines(ctx.Pipeline.GetAllDependencies(ctx).Except(Dependencies).ToArray()))),

                // Apply directory metadata
                new ApplyDirectoryMetadata(),

                // Parse the content into metadata depending on the content type
                new ExecuteSwitch(Config.FromDocument(doc => doc.ContentProvider.MediaType))
                .Case(MediaTypes.Json, new ParseJson())
                .Case(MediaTypes.Yaml, new ParseYaml()),

                // Filter out excluded documents
                new FilterDocuments(Config.FromDocument(doc => !doc.GetBool(WebKeys.Excluded))),

                // Filter out feed documents (they'll get processed by the Feed pipeline)
                new FilterDocuments(Config.FromDocument(doc => !Feeds.IsFeed(doc))),

                new SetDestination(),
                new ExecuteIf(Config.FromSetting(WebKeys.OptimizeDataFileNames, true))
                {
                    new OptimizeFileName()
                }
            };

            OutputModules = new ModuleList
            {
                new FilterDocuments(Config.FromDocument <bool>(WebKeys.ShouldOutput)),
                new WriteFiles()
            };
        }
예제 #2
0
파일: Data.cs 프로젝트: Chandu/Statiq.Web
        public Data()
        {
            InputModules = new ModuleList
            {
                new ReadFiles("**/{!_,}*.{json,yaml,yml}")
            };

            ProcessModules = new ModuleList
            {
                new ExecuteSwitch(Config.FromDocument(doc => doc.ContentProvider.MediaType))
                .Case(MediaTypes.Json, new ParseJson())
                .Case(MediaTypes.Yaml, new ParseYaml()),
                new FilterDocuments(Config.FromDocument(doc => !Feeds.IsFeed(doc)))
            };

            OutputModules = new ModuleList
            {
                new FilterDocuments(Config.FromSetting <bool>(WebKeys.OutputData)),
                new WriteFiles()
            };
        }
예제 #3
0
        public Data()
        {
            Dependencies.Add(nameof(DirectoryMetadata));

            InputModules = new ModuleList
            {
                new ReadFiles(Config.FromSetting <IEnumerable <string> >(WebKeys.DataFiles))
            };

            ProcessModules = new ModuleList
            {
                // Concat all documents from externally declared dependencies (exclude explicit dependencies above)
                new ConcatDocuments(Config.FromContext <IEnumerable <IDocument> >(ctx => ctx.Outputs.FromPipelines(ctx.Pipeline.GetAllDependencies(ctx).Except(Dependencies).ToArray()))),

                // Process directory metadata, sidecar files, front matter, and data content
                new ProcessMetadata(),

                // Filter out excluded documents
                new FilterDocuments(Config.FromDocument(doc => !doc.GetBool(WebKeys.Excluded))),

                // Filter out feed documents (they'll get processed by the Feed pipeline)
                new FilterDocuments(Config.FromDocument(doc => !Feeds.IsFeed(doc))),

                // Enumerate metadata values
                new EnumerateValues(),

                // Set the destination and optimize filenames
                new SetDestination(),
                new ExecuteIf(Config.FromSetting(WebKeys.OptimizeDataFileNames, true))
                {
                    new OptimizeFileName()
                }
            };

            OutputModules = new ModuleList
            {
                new FilterDocuments(Config.FromDocument <bool>(WebKeys.ShouldOutput)),
                new WriteFiles()
            };
        }