2016-01-29 18:35:40 +00:00
|
|
|
require 'jekyll-seo-tag/filters'
|
2016-02-25 18:20:47 +00:00
|
|
|
require 'jekyll-seo-tag/version'
|
2016-01-29 18:35:40 +00:00
|
|
|
|
2015-10-25 21:21:46 +00:00
|
|
|
module Jekyll
|
|
|
|
class SeoTag < Liquid::Tag
|
|
|
|
attr_accessor :context
|
|
|
|
|
2016-02-25 18:56:13 +00:00
|
|
|
MINIFY_REGEX = /([>,]\n|[%}]})\s+?(<|{[{%]|[ ]+\")/
|
2016-02-09 23:48:24 +00:00
|
|
|
|
2016-02-21 19:16:00 +00:00
|
|
|
def initialize(_tag_name, text, _tokens)
|
2016-01-13 07:09:28 +00:00
|
|
|
super
|
2016-02-21 19:16:00 +00:00
|
|
|
@text = text
|
2016-01-13 07:09:28 +00:00
|
|
|
end
|
|
|
|
|
2015-10-25 21:21:46 +00:00
|
|
|
def render(context)
|
|
|
|
@context = context
|
2016-02-21 19:16:00 +00:00
|
|
|
template.render!(payload, info)
|
2015-10-25 21:21:46 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
2016-02-21 19:16:00 +00:00
|
|
|
def options
|
|
|
|
{
|
2016-02-21 20:14:49 +00:00
|
|
|
'version' => Jekyll::SeoTag::VERSION,
|
2016-02-21 19:25:15 +00:00
|
|
|
'title' => title?
|
2016-02-21 19:16:00 +00:00
|
|
|
}
|
|
|
|
end
|
|
|
|
|
2015-10-25 21:21:46 +00:00
|
|
|
def payload
|
|
|
|
{
|
2016-02-20 19:27:04 +00:00
|
|
|
'page' => context.registers[:page],
|
2016-02-21 19:16:00 +00:00
|
|
|
'site' => context.registers[:site].site_payload['site'],
|
|
|
|
'seo_tag' => options
|
2015-10-25 21:21:46 +00:00
|
|
|
}
|
|
|
|
end
|
|
|
|
|
2016-02-21 19:25:15 +00:00
|
|
|
def title?
|
|
|
|
!(@text =~ /title=false/i)
|
|
|
|
end
|
|
|
|
|
2015-10-25 21:21:46 +00:00
|
|
|
def info
|
|
|
|
{
|
2016-02-09 23:48:24 +00:00
|
|
|
registers: context.registers,
|
|
|
|
filters: [Jekyll::Filters, JekyllSeoTag::Filters]
|
2015-10-25 21:21:46 +00:00
|
|
|
}
|
|
|
|
end
|
|
|
|
|
2016-01-11 00:49:18 +00:00
|
|
|
def template
|
|
|
|
@template ||= Liquid::Template.parse template_contents
|
|
|
|
end
|
|
|
|
|
2015-10-25 21:21:46 +00:00
|
|
|
def template_contents
|
2016-02-09 23:48:24 +00:00
|
|
|
@template_contents ||= begin
|
|
|
|
File.read(template_path).gsub(MINIFY_REGEX, '\1\2').chomp
|
|
|
|
end
|
2015-10-25 21:21:46 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def template_path
|
2016-02-09 23:48:24 +00:00
|
|
|
@template_path ||= begin
|
|
|
|
File.expand_path './template.html', File.dirname(__FILE__)
|
|
|
|
end
|
2015-10-25 21:21:46 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
Liquid::Template.register_tag('seo', Jekyll::SeoTag)
|