| ... | ... |
@@ -8,7 +8,7 @@ |
| 8 | 8 |
<meta name="author" content="{{ site.author }}">
|
| 9 | 9 |
|
| 10 | 10 |
{% capture description %}{% if page.description %}{{ page.description }}{% else %}{{ content | raw_content }}{% endif %}{% endcapture %}
|
| 11 |
- <meta name="description" content="{{ description | strip_newlines | strip_html | truncate:150 }}">
|
|
| 11 |
+ <meta name="description" content="{{ description | strip_html | condense_spaces | truncate:150 }}">
|
|
| 12 | 12 |
{% if page.keywords %}<meta name="keywords" content="{{ page.keywords }}">{% endif %}
|
| 13 | 13 |
|
| 14 | 14 |
<!-- http://t.co/dKP3o1e --> |
| ... | ... |
@@ -79,6 +79,33 @@ module OctopressLiquidFilters |
| 79 | 79 |
end |
| 80 | 80 |
end |
| 81 | 81 |
|
| 82 |
+ # Improved version of Liquid's truncate: |
|
| 83 |
+ # - Doesn't cut in the middle of a word. |
|
| 84 |
+ # - Uses typographically correct ellipsis (…) insted of '...' |
|
| 85 |
+ def truncate(input, length) |
|
| 86 |
+ if input.length > length && input[0..(length-1)] =~ /(.+)\b.+$/im |
|
| 87 |
+ $1.strip + ' …' |
|
| 88 |
+ else |
|
| 89 |
+ input |
|
| 90 |
+ end |
|
| 91 |
+ end |
|
| 92 |
+ |
|
| 93 |
+ # Improved version of Liquid's truncatewords: |
|
| 94 |
+ # - Uses typographically correct ellipsis (…) insted of '...' |
|
| 95 |
+ def truncatewords(input, length) |
|
| 96 |
+ truncate = input.split(' ')
|
|
| 97 |
+ if truncate.length > length |
|
| 98 |
+ truncate[0..length-1].join(' ').strip + ' …'
|
|
| 99 |
+ else |
|
| 100 |
+ input |
|
| 101 |
+ end |
|
| 102 |
+ end |
|
| 103 |
+ |
|
| 104 |
+ # Condenses multiple spaces and tabs into a single space |
|
| 105 |
+ def condense_spaces(input) |
|
| 106 |
+ input.gsub(/\s{2,}/, ' ')
|
|
| 107 |
+ end |
|
| 108 |
+ |
|
| 82 | 109 |
# Removes trailing forward slash from a string for easily appending url segments |
| 83 | 110 |
def strip_slash(input) |
| 84 | 111 |
if input =~ /(.+)\/$|^\/$/ |