Improved support for non Latin characters in category names. Fixes #128

This commit is contained in:
fhemberger 2011-09-04 12:56:54 +02:00
parent dae6cceec2
commit 80f8a609f6
3 changed files with 8 additions and 4 deletions

View File

@ -11,3 +11,4 @@ gem 'compass', '>= 0.11'
gem 'rubypants' gem 'rubypants'
gem 'rb-fsevent' gem 'rb-fsevent'
gem 'stringex' gem 'stringex'
gem 'unicode_utils'

View File

@ -42,6 +42,7 @@ GEM
sass (3.1.7) sass (3.1.7)
stringex (1.3.0) stringex (1.3.0)
syntax (1.0.0) syntax (1.0.0)
unicode_utils (1.0.0)
PLATFORMS PLATFORMS
ruby ruby
@ -58,3 +59,4 @@ DEPENDENCIES
rdiscount rdiscount
rubypants rubypants
stringex stringex
unicode_utils

View File

@ -16,8 +16,9 @@
# - category_dir: The subfolder to build category pages in (default is 'categories'). # - category_dir: The subfolder to build category pages in (default is 'categories').
# - category_title_prefix: The string used before the category name in the page title (default is # - category_title_prefix: The string used before the category name in the page title (default is
# 'Category: '). # 'Category: ').
module Jekyll require "unicode_utils"
module Jekyll
# The CategoryIndex class creates a single category page for the specified category. # The CategoryIndex class creates a single category page for the specified category.
class CategoryIndex < Page class CategoryIndex < Page
@ -68,7 +69,7 @@ module Jekyll
if self.layouts.key? 'category_index' if self.layouts.key? 'category_index'
dir = self.config['category_dir'] || 'categories' dir = self.config['category_dir'] || 'categories'
self.categories.keys.each do |category| self.categories.keys.each do |category|
self.write_category_index(File.join(dir, category.gsub(/_|\W/, '-')), category) self.write_category_index(File.join(dir, UnicodeUtils.nfkd(category).gsub(/[^\x00-\x7F]/, '').gsub(/_|\W/, '-').to_s), category)
end end
# Throw an exception if the layout couldn't be found. # Throw an exception if the layout couldn't be found.
@ -105,7 +106,7 @@ module Jekyll
def category_links(categories) def category_links(categories)
dir = @context.registers[:site].config['category_dir'] dir = @context.registers[:site].config['category_dir']
categories = categories.sort!.map do |item| categories = categories.sort!.map do |item|
"<a class='category' href='/#{dir}/#{item.gsub(/_|\W/, '-')}/'>#{item}</a>" "<a class='category' href='/#{dir}/#{UnicodeUtils.nfkd(item).gsub(/[^\x00-\x7F]/, '').gsub(/_|\W/, '-').to_s}/'>#{item}</a>"
end end
case categories.length case categories.length