Sha256: 405271032814a5657aec47258364b7b52e552295db8d9ae233f8b61d0b426e05

Contents?: true

Size: 1.32 KB

Versions: 2

Compression:

Stored size: 1.32 KB

Contents

# frozen_string_literal: true

module Jekyll
  module Podcast
    # Generator to create tag pages for each tag on the site
    module TagPageGenerator
      # The generator itself
      class Generator < Jekyll::Generator
        def generate(site)
          site.tags.each do |tag, _|
            site.pages << TagPage.new(site, tag)
          end
        end
      end

      # Represents a tag page; includes pagination information
      class TagPage < Jekyll::Page
        def initialize(site, tag)
          super(site, site.baseurl, '/', 'index.html')
          @tag = tag
          @data ||= {}
          @data['permalink'] = Jekyll::Podcast::TagPageGenerator.permalink(@tag, site)
          @data['layout'] = 'tag-page'
          @data['title'] = tag
          @data['pagination'] = pagination(site)
        end

        def pagination(site)
          pagination_config = site.config.dig('tag_pages', 'pagination') || {}
          {
            'enabled' => true,
            'tag' => @tag,
            'sort_reverse' => false
          }.merge(pagination_config)
        end
      end

      def self.permalink(tag, site)
        if site.data['tag_permalinks'] && site.data['tag_permalinks'][tag]
          site.data['tag_permalinks'][tag]
        else
          "/#{Jekyll::Utils.slugify(tag)}/"
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
jekyll-podcast-0.9.1 lib/jekyll/podcast/tag_page_generator.rb
jekyll-podcast-0.9.0 lib/jekyll/podcast/tag_page_generator.rb