Sha256: 2c8add7468dffe4a4d918deb3d04c351a2e6dad91bc8d4132f097f20d37d6295

Contents?: true

Size: 1.27 KB

Versions: 1

Compression:

Stored size: 1.27 KB

Contents

require 'jekyll-seo-tag/filters'
require 'jekyll-seo-tag/version'

module Jekyll
  class SeoTag < Liquid::Tag
    attr_accessor :context

    MINIFY_REGEX = /(>\n|[%}]})\s+(<|{[{%])/

    def initialize(_tag_name, text, _tokens)
      super
      @text = text
    end

    def render(context)
      @context = context
      template.render!(payload, info)
    end

    private

    def options
      {
        'version' => Jekyll::SeoTag::VERSION,
        'title'   => title?
      }
    end

    def payload
      {
        'page'    => context.registers[:page],
        'site'    => context.registers[:site].site_payload['site'],
        'seo_tag' => options
      }
    end

    def title?
      !(@text =~ /title=false/i)
    end

    def info
      {
        registers: context.registers,
        filters: [Jekyll::Filters, JekyllSeoTag::Filters]
      }
    end

    def template
      @template ||= Liquid::Template.parse template_contents
    end

    def template_contents
      @template_contents ||= begin
        File.read(template_path).gsub(MINIFY_REGEX, '\1\2').chomp
      end
    end

    def template_path
      @template_path ||= begin
        File.expand_path './template.html', File.dirname(__FILE__)
      end
    end
  end
end

Liquid::Template.register_tag('seo', Jekyll::SeoTag)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
jekyll-seo-tag-1.3.1 lib/jekyll-seo-tag.rb