Class: Jekyll::Plugins::PaginateV3::Config::Normaliser
- Inherits:
-
Object
- Object
- Jekyll::Plugins::PaginateV3::Config::Normaliser
- Defined in:
- lib/jekyll-paginate-v3/config/normaliser/core.rb,
lib/jekyll-paginate-v3/config/normaliser/site_and_templates.rb,
lib/jekyll-paginate-v3/config/normaliser/legacy_compatibility.rb
Overview
Legacy compatibility migration helpers for v1/v2 style configuration. Structure: each helper converts a specific legacy shape into the shared v3 config model consumed by the runtime pipeline.
Constant Summary collapse
- LEGACY_FILTER_KEYS =
%w[category tag locale].freeze
- LEGACY_TEMPLATE_DEFAULT_KEYS =
%w[items collection filters sort per_page limit offset trail title permalink layout layouts group slugify sort_field sort_reverse indexpage extension].freeze
- LEGACY_SITE_KEY_ALIASES =
%w[split separator nested_key_separator].freeze
- SITE_RESERVED_KEYS =
%w[enabled templates compatibility keywords equivalents syntax debug].freeze
- V2_AUTOPAGE_DEFAULTS =
{ 'tags' => { 'layout' => 'autopage_tags.html', 'title' => 'Posts tagged with :tag', 'permalink' => '/tag/:tag', 'slugify' => { 'mode' => 'default', 'lowercase' => true } }, 'categories' => { 'layout' => 'autopage_category.html', 'title' => 'Posts in category :cat', 'permalink' => '/category/:cat', 'slugify' => { 'mode' => 'default', 'lowercase' => true } }, 'collections' => { 'layout' => 'autopage_collection.html', 'title' => 'Posts in collection :coll', 'permalink' => '/collection/:coll/', 'slugify' => { 'mode' => 'default', 'lowercase' => true } } }.freeze
Class Method Summary collapse
-
.normalise_site_config(site_config) ⇒ Object
Produces canonical site-level pagination config.
-
.normalise_template_config(site_config, template_pagination_config) ⇒ Object
Produces template-level pagination config used while paginating one template page/document.
Class Method Details
.normalise_site_config(site_config) ⇒ Object
Produces canonical site-level pagination config.
Merge order: defaults -> compatibility profile -> legacy overlays -> user config.
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/jekyll-paginate-v3/config/normaliser/core.rb', line 58 def self.normalise_site_config(site_config) site_hash = Utils.safe_hash(site_config) raw_pagination = normalise_site_pagination_source(site_hash['pagination']) compatibility_mode = normalise_compatibility(raw_pagination['compatibility']) config = Utils.deep_copy(DEFAULTS) if compatibility_mode && COMPATIBILITY_PROFILES.key?(compatibility_mode) config = Jekyll::Utils.deep_merge_hashes(config, Utils.deep_copy(COMPATIBILITY_PROFILES[compatibility_mode])) end if compatibility_mode == 'v1' config = Jekyll::Utils.deep_merge_hashes(config, (site_hash)) end config = Jekyll::Utils.deep_merge_hashes(config, raw_pagination) config['compatibility'] = compatibility_mode unless compatibility_mode.nil? normalise_site_common!(config, compatibility_mode, raw_pagination) migrate_legacy_shortcuts!(config, compatibility_mode, raw_pagination) apply_v2_legacy_page_templates!(config, raw_pagination, compatibility_mode) migrate_v2_autopages!(config, site_hash['autopages'], compatibility_mode) config end |
.normalise_template_config(site_config, template_pagination_config) ⇒ Object
Produces template-level pagination config used while paginating one template page/document.
The output is intentionally flat so downstream pipeline code can read values directly without re-resolving site defaults.
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/jekyll-paginate-v3/config/normaliser/core.rb', line 89 def self.normalise_template_config(site_config, template_pagination_config) raw_template_pagination = Utils.safe_hash(template_pagination_config) compatibility_mode = normalise_compatibility(raw_template_pagination['compatibility']) || normalise_compatibility(site_config['compatibility']) site_template_defaults = extract_site_template_defaults(site_config) page_config = Jekyll::Utils.deep_merge_hashes( Utils.deep_copy(site_template_defaults), raw_template_pagination ) page_config['enabled'] = if raw_template_pagination.key?('enabled') !!raw_template_pagination['enabled'] else !!site_config['enabled'] end page_config['compatibility'] = compatibility_mode unless compatibility_mode.nil? syntax = resolve_template_syntax(raw_template_pagination, site_config['syntax']) page_config['split'] = syntax['split'] page_config['separator'] = syntax['separator'] page_config = normalise_template_defaults( page_config, raw_overrides: raw_template_pagination, split_delimiter: syntax['split'], keywords: site_config['keywords'] ) migrate_legacy_shortcuts!(page_config, compatibility_mode, raw_template_pagination) apply_v2_legacy_page_templates!(page_config, raw_template_pagination, compatibility_mode) page_config end |