Sha256: 01481fb40b8757b04c9a8a478cde700b3b80e8d06ad4801a4269fcb77585b37d

Contents?: true

Size: 1.41 KB

Versions: 20

Compression:

Stored size: 1.41 KB

Contents

require 'jekyll/tags/include'
require 'liquid'

module GuidesStyle18F
  class ShouldExpandNavTag < ::Liquid::Tag
    NAME = 'guides_style_18f_should_expand_nav'
    ::Liquid::Template.register_tag(NAME, self)

    attr_reader :parent_reference, :url_reference

    def initialize(_tag_name, markup, _)
      references = markup.split(',').map(&:strip)
      @parent_reference = references.shift
      @url_reference = references.shift
    end

    def render(context)
      scope = context.scopes.detect { |s| s.member?(url_reference) }
      parent_url = scope[url_reference]
      page_url = context['page']['url']
      page_url == parent_url || page_url.start_with?(parent_url) ||
        expand_nav_default(scope, context)
    end

    private

    def expand_nav_default(scope, context)
      default = scope[parent_reference]['expand_nav']
      default = context['site']['expand_nav'] if default.nil?
      default.nil? ? false : default
    end
  end

  class PopLastUrlComponent < ::Liquid::Tag
    NAME = 'guides_style_18f_pop_last_url_component'
    ::Liquid::Template.register_tag(NAME, self)

    attr_reader :reference

    def initialize(_tag_name, markup, _)
      @reference = markup.strip
    end

    def render(context)
      scope = context.scopes.detect { |s| s.member?(reference) }
      parent_url = scope[reference]
      result = File.dirname(parent_url)
      result == '/' ? result : "#{result}/"
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
guides_style_18f-1.0.6 lib/guides_style_18f/tags.rb
guides_style_18f-2.0.1 lib/guides_style_18f/tags.rb
guides_style_18f-2.0.0 lib/guides_style_18f/tags.rb
guides_style_18f-1.0.4 lib/guides_style_18f/tags.rb
guides_style_18f-1.0.3 lib/guides_style_18f/tags.rb
guides_style_18f-1.0.2 lib/guides_style_18f/tags.rb
guides_style_18f-1.0.1 lib/guides_style_18f/tags.rb
guides_style_18f-1.0.0 lib/guides_style_18f/tags.rb
guides_style_18f-0.4.9 lib/guides_style_18f/tags.rb
guides_style_18f-0.4.8 lib/guides_style_18f/tags.rb
guides_style_18f-0.4.7 lib/guides_style_18f/tags.rb
guides_style_18f-0.4.6 lib/guides_style_18f/tags.rb
guides_style_18f-0.4.5 lib/guides_style_18f/tags.rb
guides_style_18f-0.4.4 lib/guides_style_18f/tags.rb
guides_style_18f-0.4.3 lib/guides_style_18f/tags.rb
guides_style_18f-0.4.2 lib/guides_style_18f/tags.rb
guides_style_18f-0.4.1 lib/guides_style_18f/tags.rb
guides_style_18f-0.4.0 lib/guides_style_18f/tags.rb
guides_style_18f-0.3.0 lib/guides_style_18f/tags.rb
guides_style_18f-0.2.0 lib/guides_style_18f/tags.rb