lib/kontent-jekyll/generator.rb in kontent-jekyll-0.11.1 vs lib/kontent-jekyll/generator.rb in kontent-jekyll-0.11.2
- old
+ new
@@ -1,106 +1,106 @@
-require 'kontent-jekyll/site_processing/custom_site_processor'
-require 'kontent-jekyll/site_processing/kentico_kontent_importer'
-require 'kontent-jekyll/site_processing/site_processor'
-
-module Kentico
- module Kontent
- ##
- # This class generates content stored in Kentico Cloud CMS and populute
- # particular Jekyll structures so the website is correctly outputted
- # during the build process.
-
- class ContentGenerator < Jekyll::Generator
- include SiteProcessing
- DEFAULT_LANGUAGE = nil
-
- safe true
- priority :highest
-
- def generate(site)
- Jekyll::logger.info 'Importing from Kentico Kontent...'
-
- config = parse_config(site)
-
- load_custom_processors!(config)
- process_site(site, config)
-
- Jekyll::logger.info 'Import finished'
- end
-
- private
-
- ##
- # Parses Jekyll configuration into OpenStruct structure.
-
- def parse_config(site)
- JSON.parse(
- JSON.generate(site.config),
- object_class: OpenStruct
- )
- end
-
- ##
- # Load custom resolvers from the _plugins/kentico directory.
-
- def load_custom_processors!(config)
- mapper_search_path = File.join(config.source, config.plugins_dir, 'kentico')
- mapper_files = Jekyll::Utils.safe_glob(mapper_search_path, File.join('**', '*.rb'))
-
- Jekyll::External.require_with_graceful_fail(mapper_files)
- end
-
- ##
- # Processed the site.
- # It imports KC content for every language from the config file.
- # Then it pass the content to the site processor to populate Jekyll structures.
-
- def process_site(site, config)
- kentico_config = config.kentico
- importer = create_importer(kentico_config)
-
- processor = SiteProcessor.new(site, kentico_config)
-
- all_items_by_type = {}
-
- languages = kentico_config.languages || [DEFAULT_LANGUAGE]
- languages.each do |language|
- items_by_type = importer.items_by_type(language)
-
- all_items_by_type.merge!(items_by_type) do |key, currentItems, newItems|
- currentItems || newItems
- end
- end
-
- taxonomies = importer.taxonomies
-
- processor.process_pages(all_items_by_type)
- processor.process_posts(all_items_by_type)
- processor.process_data(all_items_by_type)
- processor.process_taxonomies(taxonomies)
-
- unique_items = all_items_by_type
- .values
- .flatten(1)
- .uniq{ |i| "#{i.system.language};#{i.system.id}" }
-
- kentico_data = OpenStruct.new(
- items: unique_items,
- taxonomy_groups: taxonomies,
- )
-
- custom_site_processor = CustomSiteProcessor.for(kentico_config)
- custom_site_processor&.generate(site, kentico_data)
- end
-
-
- ##
- # Creates a desired content importer. RACK_TEST_IMPORTER class name and implementation
- # is specified in RSpec tests.
-
- def create_importer(kentico_config)
- importer_name = ENV['RACK_TEST_IMPORTER'] || KenticoKontentImporter.to_s
- Module.const_get(importer_name).new(kentico_config)
- end
- end
- end
+require 'kontent-jekyll/site_processing/custom_site_processor'
+require 'kontent-jekyll/site_processing/kentico_kontent_importer'
+require 'kontent-jekyll/site_processing/site_processor'
+
+module Kentico
+ module Kontent
+ ##
+ # This class generates content stored in Kentico Cloud CMS and populute
+ # particular Jekyll structures so the website is correctly outputted
+ # during the build process.
+
+ class ContentGenerator < Jekyll::Generator
+ include SiteProcessing
+ DEFAULT_LANGUAGE = nil
+
+ safe true
+ priority :highest
+
+ def generate(site)
+ Jekyll::logger.info 'Importing from Kentico Kontent...'
+
+ config = parse_config(site)
+
+ load_custom_processors!(config)
+ process_site(site, config)
+
+ Jekyll::logger.info 'Import finished'
+ end
+
+ private
+
+ ##
+ # Parses Jekyll configuration into OpenStruct structure.
+
+ def parse_config(site)
+ JSON.parse(
+ JSON.generate(site.config),
+ object_class: OpenStruct
+ )
+ end
+
+ ##
+ # Load custom resolvers from the _plugins/kentico directory.
+
+ def load_custom_processors!(config)
+ mapper_search_path = File.join(config.source, config.plugins_dir, 'kentico')
+ mapper_files = Jekyll::Utils.safe_glob(mapper_search_path, File.join('**', '*.rb'))
+
+ Jekyll::External.require_with_graceful_fail(mapper_files)
+ end
+
+ ##
+ # Processed the site.
+ # It imports KC content for every language from the config file.
+ # Then it pass the content to the site processor to populate Jekyll structures.
+
+ def process_site(site, config)
+ kentico_config = config.kentico
+ importer = create_importer(kentico_config)
+
+ processor = SiteProcessor.new(site, kentico_config)
+
+ all_items_by_type = {}
+
+ languages = kentico_config.languages || [DEFAULT_LANGUAGE]
+ languages.each do |language|
+ items_by_type = importer.items_by_type(language)
+
+ all_items_by_type.merge!(items_by_type) do |key, currentItems, newItems|
+ currentItems || newItems
+ end
+ end
+
+ taxonomies = importer.taxonomies
+
+ processor.process_pages(all_items_by_type)
+ processor.process_posts(all_items_by_type)
+ processor.process_data(all_items_by_type)
+ processor.process_taxonomies(taxonomies)
+
+ unique_items = all_items_by_type
+ .values
+ .flatten(1)
+ .uniq{ |i| "#{i.system.language};#{i.system.id}" }
+
+ kentico_data = OpenStruct.new(
+ items: unique_items,
+ taxonomy_groups: taxonomies,
+ )
+
+ custom_site_processor = CustomSiteProcessor.for(kentico_config)
+ custom_site_processor&.generate(site, kentico_data)
+ end
+
+
+ ##
+ # Creates a desired content importer. RACK_TEST_IMPORTER class name and implementation
+ # is specified in RSpec tests.
+
+ def create_importer(kentico_config)
+ importer_name = ENV['RACK_TEST_IMPORTER'] || KenticoKontentImporter.to_s
+ Module.const_get(importer_name).new(kentico_config)
+ end
+ end
+ end
end
\ No newline at end of file