Class: Jekyll::Plugins::PaginateV3::Generators::PaginationGenerator
- Inherits:
-
Generator
- Object
- Generator
- Jekyll::Plugins::PaginateV3::Generators::PaginationGenerator
- Defined in:
- lib/jekyll-paginate-v3/generators/pagination_generator.rb
Overview
Jekyll generator entry point for paginate-v3.
Used by Jekyll's generator lifecycle to invoke the v3 pagination pipeline for each site build.
Instance Method Summary collapse
-
#generate(site) ⇒ Object
Entrypoint called by Jekyll once the site graph is loaded.
Instance Method Details
#generate(site) ⇒ Object
Entrypoint called by Jekyll once the site graph is loaded.
Normalises config, wires lightweight callbacks for mutating site content, then delegates all pagination behaviour to Pagination::Model.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/jekyll-paginate-v3/generators/pagination_generator.rb', line 21 def generate(site) logger = nil overall_started_at = monotonic_seconds config = Config::Normaliser.normalise_site_config(site.config) config = enable_implicit_v1_compatibility(config, site) logger = Utils::Logger.new(debug_enabled: config['debug']) logger.debug("Normalised config summary: enabled=#{config['enabled']} compatibility=#{config['compatibility'] || 'none'} items=#{config['items']} templates.location=#{config.dig('templates', 'location')} generate.count=#{config.dig('templates', 'generate')&.length || 0}.") unless config['enabled'] logger.info('Disabled in site config.') return end # Shared logger callback so deeper layers do not depend directly on # Jekyll logger globals. log_lambda = logger.method(:call) scoped_log_lambda_builder = logger.method(:scoped_log_lambda) # Abstract site mutation so the model can add pages or documents # without knowing where Jekyll stores each item type. add_item_lambda = lambda do |item, collection_index: nil| add_site_item(site, item, collection_index: collection_index) end # Mirror add_item_lambda for replacing template pages with generated # paginated siblings. remove_item_lambda = lambda do |item| remove_site_item(site, item) end model = Pagination::Model.new( site: site, site_config: config, log_lambda: log_lambda, scoped_log_lambda_builder: scoped_log_lambda_builder, add_item_lambda: add_item_lambda, remove_item_lambda: remove_item_lambda ) run_report = model.run log_generate_report(logger, run_report['generated_template_report']) log_search_location_report( logger, run_report['search_location_report'], processed_templates: run_report['processed_templates'], search_duration_seconds: run_report['search_duration_seconds'] ) logger.info("Done in #{format_duration(monotonic_seconds - overall_started_at)}.") rescue StandardError => error if logger.nil? Jekyll.logger.error('Pagination:', "Failed with #{error.class}: #{error.}") else logger.error("Failed with #{error.class}: #{error.}") end raise end |