From a81ef5e28bc2abb846a2a3da04dd43aa7ca547a1 Mon Sep 17 00:00:00 2001 From: Frederic Hemberger Date: Fri, 21 Oct 2011 15:00:32 +0200 Subject: [PATCH] Improve handling of meta description --- .themes/classic/source/_includes/head.html | 2 +- plugins/octopress_filters.rb | 27 ++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/.themes/classic/source/_includes/head.html b/.themes/classic/source/_includes/head.html index 51c5415..0fdc401 100644 --- a/.themes/classic/source/_includes/head.html +++ b/.themes/classic/source/_includes/head.html @@ -8,7 +8,7 @@ {% capture description %}{% if page.description %}{{ page.description }}{% else %}{{ content | raw_content }}{% endif %}{% endcapture %} - + {% if page.keywords %}{% endif %} diff --git a/plugins/octopress_filters.rb b/plugins/octopress_filters.rb index 997a740..a5bb235 100644 --- a/plugins/octopress_filters.rb +++ b/plugins/octopress_filters.rb @@ -79,6 +79,33 @@ module OctopressLiquidFilters end end + # Improved version of Liquid's truncate: + # - Doesn't cut in the middle of a word. + # - Uses typographically correct ellipsis (…) insted of '...' + def truncate(input, length) + if input.length > length && input[0..(length-1)] =~ /(.+)\b.+$/im + $1.strip + ' …' + else + input + end + end + + # Improved version of Liquid's truncatewords: + # - Uses typographically correct ellipsis (…) insted of '...' + def truncatewords(input, length) + truncate = input.split(' ') + if truncate.length > length + truncate[0..length-1].join(' ').strip + ' …' + else + input + end + end + + # Condenses multiple spaces and tabs into a single space + def condense_spaces(input) + input.gsub(/\s{2,}/, ' ') + end + # Removes trailing forward slash from a string for easily appending url segments def strip_slash(input) if input =~ /(.+)\/$|^\/$/