From 80f8a609f6e2d7349ab76c7bee662024bdf2aa94 Mon Sep 17 00:00:00 2001 From: fhemberger Date: Sun, 4 Sep 2011 12:56:54 +0200 Subject: [PATCH] Improved support for non Latin characters in category names. Fixes #128 --- Gemfile | 3 ++- Gemfile.lock | 2 ++ plugins/category_generator.rb | 7 ++++--- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index ffb614f..14ee966 100644 --- a/Gemfile +++ b/Gemfile @@ -10,4 +10,5 @@ gem 'haml', '>= 3.1' gem 'compass', '>= 0.11' gem 'rubypants' gem 'rb-fsevent' -gem 'stringex' \ No newline at end of file +gem 'stringex' +gem 'unicode_utils' \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock index f2fc737..000eec9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -42,6 +42,7 @@ GEM sass (3.1.7) stringex (1.3.0) syntax (1.0.0) + unicode_utils (1.0.0) PLATFORMS ruby @@ -58,3 +59,4 @@ DEPENDENCIES rdiscount rubypants stringex + unicode_utils diff --git a/plugins/category_generator.rb b/plugins/category_generator.rb index aa1180e..97fb9f3 100644 --- a/plugins/category_generator.rb +++ b/plugins/category_generator.rb @@ -16,8 +16,9 @@ # - 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: '). -module Jekyll +require "unicode_utils" +module Jekyll # The CategoryIndex class creates a single category page for the specified category. class CategoryIndex < Page @@ -68,7 +69,7 @@ module Jekyll if self.layouts.key? 'category_index' dir = self.config['category_dir'] || 'categories' 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 # Throw an exception if the layout couldn't be found. @@ -105,7 +106,7 @@ module Jekyll def category_links(categories) dir = @context.registers[:site].config['category_dir'] categories = categories.sort!.map do |item| - "#{item}" + "#{item}" end case categories.length