Class: Jekyll::Plugins::PaginateV3::Templates::Builder
- Inherits:
-
Object
- Object
- Jekyll::Plugins::PaginateV3::Templates::Builder
- Defined in:
- lib/jekyll-paginate-v3/templates/builder/core.rb,
lib/jekyll-paginate-v3/templates/builder/index_entries.rb,
lib/jekyll-paginate-v3/templates/builder/token_metadata.rb,
lib/jekyll-paginate-v3/templates/builder/definition_normalisation.rb
Overview
Generated-template definition normalisation helpers for Builder.
Structure: each generate definition is reduced to:
paginationconfig copied onto the generated template- generate-only controls for template object creation (
frontmatterandcontent).
Constant Summary collapse
- SPECIAL_KEYS =
%w[frontmatter content].freeze
Instance Method Summary collapse
-
#build ⇒ Object
Builds all configured generated pagination templates.
-
#initialize(site:, site_config:, add_item_lambda:, resolve_items_lambda:, log_lambda:) ⇒ Builder
constructor
A new instance of Builder.
Constructor Details
#initialize(site:, site_config:, add_item_lambda:, resolve_items_lambda:, log_lambda:) ⇒ Builder
Returns a new instance of Builder.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/jekyll-paginate-v3/templates/builder/core.rb', line 17 def initialize(site:, site_config:, add_item_lambda:, resolve_items_lambda:, log_lambda:) @site = site @site_config = site_config @add_item_lambda = add_item_lambda @resolve_items_lambda = resolve_items_lambda @log_lambda = log_lambda @nested_separator = site_config.dig('syntax', 'separator') @split_delimiter = site_config.dig('syntax', 'split') @equivalents = site_config['equivalents'] @frontmatter_path = Jekyll::Plugins::PaginateV3::Support::FrontmatterPath.new( separator: @nested_separator, arrays: :expand, equivalents: @equivalents ) @string_array = Jekyll::Plugins::PaginateV3::Support::StringArray.new(delimiter: @split_delimiter) @compatibility_mode = site_config['compatibility'] end |
Instance Method Details
#build ⇒ Object
Builds all configured generated pagination templates.
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 78 79 80 |
# File 'lib/jekyll-paginate-v3/templates/builder/core.rb', line 36 def build generate_definitions = @site_config.dig('templates', 'generate') return empty_build_report unless generate_definitions.is_a?(Array) @log_lambda.call("Generating templates from #{generate_definitions.length} definition(s).", 'debug') default_collection = default_generation_collection @log_lambda.call("Default generated template collection target resolved to '#{default_collection.join(',')}'.", 'debug') build_report = { 'total' => 0, 'entries' => [] } generate_definitions.each_with_index do |raw_definition, definition_index| entry_number = definition_index + 1 default_entry_collection = normalise_collection(Utils.safe_hash(raw_definition)['collection'], default_collection) definition = normalise_definition(raw_definition, default_collection) if definition.nil? build_report['entries'] << { 'number' => entry_number, 'collection' => default_entry_collection, 'created' => 0, 'valid' => false } next end @log_lambda.call("Processing generate definition #{entry_number}: collection=#{definition['template_collection'].join(',')} pagination_keys=#{definition['pagination'].keys.sort.join(',')}", 'debug') created_template = build_template(definition) created = 0 unless created_template.nil? @add_item_lambda.call(created_template) created = 1 end build_report['entries'] << { 'number' => entry_number, 'collection' => definition['template_collection'], 'created' => created, 'valid' => true } build_report['total'] += created end @log_lambda.call("Generated #{build_report['total']} template object(s) in total.", 'debug') build_report end |