Sha256: dcbe4de2893fa70b4ce04db8462a23525e0b8cae6298e8703bcae1682c2c81f7

Contents?: true

Size: 1.61 KB

Versions: 2

Compression:

Stored size: 1.61 KB

Contents

# frozen_string_literal: true

require 'erb'

module Jekyll
  module Podcast
    # Define tag filters for podcasting
    module TagFilters
      def without_index_html(input)
        input.delete_suffix('index.html')
      end

      def tag_permalink(input)
        site.data['tag_permalinks'][input]
      end

      def episode_url(input)
        input = ERB::Util.url_encode(input)
        File.join(url_prefix, input)
      end

      private

      def url_prefix
        if tracking_prefix && remote_episode_host
          url_prefix_with_tracking_prefix_and_remote_episode_host
        elsif tracking_prefix
          url_prefix_with_tracking_prefix_and_no_remote_episode_host
        elsif remote_episode_host
          url_prefix_with_no_tracking_prefix_and_remote_episode_host
        else
          File.join(site.config['url'], 'assets', 'episodes')
        end
      end

      def url_prefix_with_tracking_prefix_and_remote_episode_host
        File.join(tracking_prefix, remote_episode_host.sub(%r{^https?://}, ''))
      end

      def url_prefix_with_tracking_prefix_and_no_remote_episode_host
        File.join(tracking_prefix, 'assets', 'episodes')
      end

      def url_prefix_with_no_tracking_prefix_and_remote_episode_host
        remote_episode_host
      end

      def tracking_prefix
        @context.registers[:site].config['podcast']['tracking_prefix']
      end

      def remote_episode_host
        @context.registers[:site].config['podcast']['remote_episode_host']
      end

      def site
        @context.registers[:site]
      end
    end
  end
end

Liquid::Template.register_filter(Jekyll::Podcast::TagFilters)

Version data entries

2 entries across 2 versions & 1 rubygems

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