add theme class

This commit is contained in:
Ben Balter 2016-02-26 14:25:29 -05:00
parent d14600152f
commit 91b348966e
4 changed files with 51 additions and 1 deletions

View File

@ -67,6 +67,7 @@ module Jekyll
autoload :Site, 'jekyll/site'
autoload :StaticFile, 'jekyll/static_file'
autoload :Stevenson, 'jekyll/stevenson'
autoload :Theme, 'jekyll/theme'
autoload :URL, 'jekyll/url'
autoload :Utils, 'jekyll/utils'
autoload :VERSION, 'jekyll/version'

View File

@ -25,6 +25,11 @@ module Jekyll
within(layout_directory) do
entries = EntryFilter.new(site).filter(Dir['**/*.*'])
end
if site.theme
within(site.theme.layouts_path) do
entries.concat EntryFilter.new(site).filter(Dir['**/*.*'])
end
end
entries
end

View File

@ -8,7 +8,7 @@ module Jekyll
:exclude, :include, :lsi, :highlighter, :permalink_style,
:time, :future, :unpublished, :safe, :plugins, :limit_posts,
:show_drafts, :keep_files, :baseurl, :data, :file_read_opts,
:gems, :plugin_manager
:gems, :plugin_manager, :theme
attr_accessor :converters, :generators, :reader
attr_reader :regenerator, :liquid_renderer
@ -38,6 +38,8 @@ module Jekyll
self.plugin_manager = Jekyll::PluginManager.new(self)
self.plugins = plugin_manager.plugins_path
self.theme = Jekyll::Theme.new(config["theme"]) if config["theme"]
self.file_read_opts = {}
self.file_read_opts[:encoding] = config['encoding'] if config['encoding']

42
lib/jekyll/theme.rb Normal file
View File

@ -0,0 +1,42 @@
module Jekyll
class Theme
attr_reader :name
def initialize(name)
@name = name.downcase.strip
raise MissingDependencyException unless gemspec
end
def root
@root ||= gemspec.gem_dir
end
def version
gemspec.version
end
def assets_path
path_for "assets"
end
def includes_path
path_for "includes"
end
def layouts_path
path_for "layouts"
end
private
def path_for(folder)
Jekyll.sanitized_path root, "_#{folder}"
end
def gemspec
@gemspec ||= Gem::Specification.find_by_name(name)
rescue Gem::LoadError
nil
end
end
end