913fa105c4
I think it's probably better to ship plugins with themes to make it easier to update them. 2. Improved 'install' rake task and made nicer output
66 lines
1.8 KiB
Ruby
66 lines
1.8 KiB
Ruby
module Jekyll
|
|
|
|
class CategoryIndex < Page
|
|
def initialize(site, base, dir, category)
|
|
@site = site
|
|
@base = base
|
|
@dir = dir
|
|
@name = 'index.html'
|
|
|
|
self.process(@name)
|
|
self.read_yaml(File.join(base, '_layouts'), 'category_index.html')
|
|
self.data['category'] = category
|
|
|
|
category_title_prefix = site.config['category_title_prefix'] || 'Category: '
|
|
self.data['title'] = "#{category_title_prefix}#{category}"
|
|
end
|
|
end
|
|
|
|
class CategoryList < Page
|
|
def initialize(site, base, dir, categories)
|
|
@site = site
|
|
@base = base
|
|
@dir = dir
|
|
@name = 'index.html'
|
|
|
|
self.process(@name)
|
|
self.read_yaml(File.join(base, '_layouts'), 'category_list.html')
|
|
self.data['categories'] = categories
|
|
end
|
|
end
|
|
|
|
class CategoryGenerator < Generator
|
|
safe true
|
|
|
|
def generate(site)
|
|
if site.layouts.key? 'category_index'
|
|
dir = site.config['category_dir'] || 'categories'
|
|
site.categories.keys.each do |category|
|
|
write_category_index(site, File.join(dir, category.gsub(/\s/, "-").gsub(/[^\w-]/, '').downcase), category)
|
|
end
|
|
end
|
|
|
|
if site.layouts.key? 'category_list'
|
|
dir = site.config['category_dir'] || 'categories'
|
|
write_category_list(site, dir, site.categories.keys.sort)
|
|
end
|
|
end
|
|
|
|
def write_category_index(site, dir, category)
|
|
index = CategoryIndex.new(site, site.source, dir, category)
|
|
index.render(site.layouts, site.site_payload)
|
|
index.write(site.dest)
|
|
site.static_files << index
|
|
end
|
|
|
|
def write_category_list(site, dir, categories)
|
|
index = CategoryList.new(site, site.source, dir, categories)
|
|
index.render(site.layouts, site.site_payload)
|
|
index.write(site.dest)
|
|
site.static_files << index
|
|
end
|
|
end
|
|
|
|
end
|
|
|