Fix truncation of overly long post names.

Delete the old truncate_post_name; it was called too late (if url rewriting
is enabled which it is by default), didn't run (it tried to use + to concat
a Fixnum onto a String), and even with those problems fixed, didn't actually
shorten the string enough to use as a pathname.

Instead, apply simple string truncation at the point we generate the slug,
which is used in the filename and is the part that could be unboundedly
long. I arbitrarily chose 200 as the maximum length; even shorter might be
better (really long slugs are just visually ugly); it might also be nicer
to truncate at a hyphen boundary.

This fixes the rest of issue #773 (subissue 4).
This commit is contained in:
Matt Ginzton 2013-01-22 10:07:19 -08:00
parent 863643c7e8
commit fbc9d0c663
1 changed files with 1 additions and 6 deletions

View File

@ -34,7 +34,6 @@ module Jekyll
post[:content] = html_to_markdown post[:content]
post[:content] = add_syntax_highlights post[:content] if add_highlights
end
post[:name] = truncate_post_name post[:name] if post[:name].size > 255
File.open("_posts/tumblr/#{post[:name]}", "w") do |f|
f.puts post[:header].to_yaml + "---\n" + post[:content]
end
@ -43,11 +42,6 @@ module Jekyll
private
def self.truncate_post_name name
post = name.match(/^(.+)\.(.+)$/).captures
post[0][0..(-1 - post[1].size)] + post[1].size
end
# Converts each type of Tumblr post to a hash with all required
# data for Jekyll.
def self.post_to_hash(post, format)
@ -103,6 +97,7 @@ module Jekyll
date = Date.parse(post['date']).to_s
title = Nokogiri::HTML(title).text
slug = title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
slug = slug.slice(0..200) if slug.length > 200
{
:name => "#{date}-#{slug}.#{format}",
:header => {