add seo_metadata liquid tag (Mario)

This commit is contained in:
did 2011-02-13 14:40:55 +01:00
parent 3e5e5d5ba9
commit 083debc516
2 changed files with 60 additions and 0 deletions

View File

@ -0,0 +1,23 @@
module Locomotive
module Liquid
module Tags
class SEOMetadata < ::Liquid::Tag
def render(context)
%{
<meta name="description" content="#{sanitized_string(context.registers[:site].meta_description)}" />
<meta name="keywords" content="#{sanitized_string(context.registers[:site].meta_keywords)}" />
}
end
# Removees whitespace and quote charactets from the input
def sanitized_string(string)
string.strip.gsub(/"/, '')
end
end
::Liquid::Template.register_tag('seo_metadata', SEOMetadata)
end
end
end

View File

@ -0,0 +1,37 @@
require 'spec_helper'
describe Locomotive::Liquid::Tags::SEOMetadata do
before :each do
@site = Factory.build(:site, :meta_description => 'A short site description', :meta_keywords => 'test only cat dog')
end
context '#rendering' do
it 'renders a a meta description tag' do
render_seo_metadata.should include '<meta name="description" content="A short site description" />'
end
it 'strips and removes quote characters from the description' do
@site.meta_description = ' String with " " quotes '
render_seo_metadata.should include '<meta name="description" content="String with quotes" />'
end
it 'renders a meta keywords tag' do
render_seo_metadata.should include '<meta name="keywords" content="test only cat dog" />'
end
it 'strips and removes quote characters from the keywords' do
@site.meta_keywords = ' one " two " three '
render_seo_metadata.should include '<meta name="keywords" content="one two three" />'
end
end
def render_seo_metadata
registers = { :site => @site }
liquid_context = ::Liquid::Context.new({}, {}, registers)
output = Liquid::Template.parse("{% seo_metadata %}").render(liquid_context)
end
end