Remove unnecessary references to `self`
This commit is contained in:
parent
276b400a86
commit
f1c4e247a5
|
@ -6,8 +6,8 @@ module Jekyll
|
|||
|
||||
Jekyll.logger.log_level = Jekyll::Stevenson::ERROR if options['quiet']
|
||||
|
||||
self.build(site, options)
|
||||
self.watch(site, options) if options['watch']
|
||||
build(site, options)
|
||||
watch(site, options) if options['watch']
|
||||
end
|
||||
|
||||
# Private: Build the site from source into destination.
|
||||
|
@ -22,7 +22,7 @@ module Jekyll
|
|||
Jekyll.logger.info "Source:", source
|
||||
Jekyll.logger.info "Destination:", destination
|
||||
print Jekyll.logger.formatted_topic "Generating..."
|
||||
self.process_site(site)
|
||||
process_site(site)
|
||||
puts "done."
|
||||
end
|
||||
|
||||
|
@ -52,7 +52,7 @@ module Jekyll
|
|||
t = Time.now.strftime("%Y-%m-%d %H:%M:%S")
|
||||
n = modified.length + added.length + removed.length
|
||||
print Jekyll.logger.formatted_topic("Regenerating:") + "#{n} files at #{t} "
|
||||
self.process_site(site)
|
||||
process_site(site)
|
||||
puts "...done."
|
||||
end
|
||||
listener.start
|
||||
|
|
|
@ -18,18 +18,18 @@ module Jekyll
|
|||
module Convertible
|
||||
# Returns the contents as a String.
|
||||
def to_s
|
||||
self.content || ''
|
||||
content || ''
|
||||
end
|
||||
|
||||
# Whether the file is published or not, as indicated in YAML front-matter
|
||||
def published?
|
||||
!(self.data.has_key?('published') && self.data['published'] == false)
|
||||
!(data.has_key?('published') && data['published'] == false)
|
||||
end
|
||||
|
||||
# Returns merged option hash for File.read of self.site (if exists)
|
||||
# and a given param
|
||||
def merged_file_read_opts(opts)
|
||||
(self.site ? self.site.file_read_opts : {}).merge(opts)
|
||||
(site ? site.file_read_opts : {}).merge(opts)
|
||||
end
|
||||
|
||||
# Read the YAML frontmatter.
|
||||
|
@ -43,7 +43,7 @@ module Jekyll
|
|||
begin
|
||||
self.content = File.read(File.join(base, name),
|
||||
merged_file_read_opts(opts))
|
||||
if self.content =~ /\A(---\s*\n.*?\n?)^(---\s*$\n?)/m
|
||||
if content =~ /\A(---\s*\n.*?\n?)^(---\s*$\n?)/m
|
||||
self.content = $POSTMATCH
|
||||
self.data = SafeYAML.load($1)
|
||||
end
|
||||
|
@ -60,10 +60,10 @@ module Jekyll
|
|||
#
|
||||
# Returns nothing.
|
||||
def transform
|
||||
self.content = converter.convert(self.content)
|
||||
self.content = converter.convert(content)
|
||||
rescue => e
|
||||
Jekyll.logger.error "Conversion error:", "There was an error converting" +
|
||||
" '#{self.path}'."
|
||||
" '#{path}'."
|
||||
raise e
|
||||
end
|
||||
|
||||
|
@ -72,7 +72,7 @@ module Jekyll
|
|||
# Returns the String extension for the output file.
|
||||
# e.g. ".html" for an HTML output file.
|
||||
def output_ext
|
||||
converter.output_ext(self.ext)
|
||||
converter.output_ext(ext)
|
||||
end
|
||||
|
||||
# Determine which converter to use based on this convertible's
|
||||
|
@ -80,7 +80,7 @@ module Jekyll
|
|||
#
|
||||
# Returns the Converter instance.
|
||||
def converter
|
||||
@converter ||= self.site.converters.find { |c| c.matches(self.ext) }
|
||||
@converter ||= site.converters.find { |c| c.matches(ext) }
|
||||
end
|
||||
|
||||
# Render Liquid in the content
|
||||
|
@ -119,16 +119,16 @@ module Jekyll
|
|||
# Returns nothing
|
||||
def render_all_layouts(layouts, payload, info)
|
||||
# recursively render layouts
|
||||
layout = layouts[self.data["layout"]]
|
||||
layout = layouts[data["layout"]]
|
||||
used = Set.new([layout])
|
||||
|
||||
while layout
|
||||
payload = payload.deep_merge({"content" => self.output, "page" => layout.data})
|
||||
payload = payload.deep_merge({"content" => output, "page" => layout.data})
|
||||
|
||||
self.output = self.render_liquid(layout.content,
|
||||
self.output = render_liquid(layout.content,
|
||||
payload,
|
||||
info,
|
||||
File.join(self.site.config['layouts'], layout.name))
|
||||
File.join(site.config['layouts'], layout.name))
|
||||
|
||||
if layout = layouts[layout.data["layout"]]
|
||||
if used.include?(layout)
|
||||
|
@ -147,21 +147,19 @@ module Jekyll
|
|||
#
|
||||
# Returns nothing.
|
||||
def do_layout(payload, layouts)
|
||||
info = { :filters => [Jekyll::Filters], :registers => { :site => self.site, :page => payload['page'] } }
|
||||
info = { :filters => [Jekyll::Filters], :registers => { :site => site, :page => payload['page'] } }
|
||||
|
||||
# render and transform content (this becomes the final content of the object)
|
||||
payload["highlighter_prefix"] = converter.highlighter_prefix
|
||||
payload["highlighter_suffix"] = converter.highlighter_suffix
|
||||
|
||||
self.content = self.render_liquid(self.content,
|
||||
payload,
|
||||
info)
|
||||
self.transform
|
||||
self.content = render_liquid(content, payload, info)
|
||||
transform
|
||||
|
||||
# output keeps track of what will finally be written
|
||||
self.output = self.content
|
||||
self.output = content
|
||||
|
||||
self.render_all_layouts(layouts, payload, info)
|
||||
render_all_layouts(layouts, payload, info)
|
||||
end
|
||||
|
||||
# Write the generated page file to the destination directory.
|
||||
|
@ -173,7 +171,7 @@ module Jekyll
|
|||
path = destination(dest)
|
||||
FileUtils.mkdir_p(File.dirname(path))
|
||||
File.open(path, 'wb') do |f|
|
||||
f.write(self.output)
|
||||
f.write(output)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ module Jekyll
|
|||
|
||||
attr_accessor :post
|
||||
attr_accessor :content, :output, :ext
|
||||
|
||||
|
||||
def_delegator :@post, :site, :site
|
||||
def_delegator :@post, :name, :name
|
||||
def_delegator :@post, :ext, :ext
|
||||
|
@ -39,7 +39,7 @@ module Jekyll
|
|||
end
|
||||
|
||||
# 'Path' of the excerpt.
|
||||
#
|
||||
#
|
||||
# Returns the path for the post this excerpt belongs to with #excerpt appended
|
||||
def path
|
||||
File.join(post.path, "#excerpt")
|
||||
|
@ -47,9 +47,9 @@ module Jekyll
|
|||
|
||||
# Check if excerpt includes a string
|
||||
#
|
||||
# Returns true if the string passed in
|
||||
# Returns true if the string passed in
|
||||
def include?(something)
|
||||
(self.output && self.output.include?(something)) || self.content.include?(something)
|
||||
(output && output.include?(something)) || content.include?(something)
|
||||
end
|
||||
|
||||
# The UID for this post (useful in feeds).
|
||||
|
@ -61,7 +61,7 @@ module Jekyll
|
|||
end
|
||||
|
||||
def to_s
|
||||
self.output || self.content
|
||||
output || content
|
||||
end
|
||||
|
||||
# Returns the shorthand String identifier of this Post.
|
||||
|
|
|
@ -29,8 +29,8 @@ module Jekyll
|
|||
|
||||
self.data = {}
|
||||
|
||||
self.process(name)
|
||||
self.read_yaml(base, name)
|
||||
process(name)
|
||||
read_yaml(base, name)
|
||||
end
|
||||
|
||||
# Extract information from the layout filename.
|
||||
|
|
|
@ -28,8 +28,8 @@ module Jekyll
|
|||
@dir = dir
|
||||
@name = name
|
||||
|
||||
self.process(name)
|
||||
self.read_yaml(File.join(base, dir), name)
|
||||
process(name)
|
||||
read_yaml(File.join(base, dir), name)
|
||||
end
|
||||
|
||||
# The generated directory into which the page will be placed
|
||||
|
@ -46,11 +46,11 @@ module Jekyll
|
|||
#
|
||||
# Returns the String permalink or nil if none has been set.
|
||||
def permalink
|
||||
return nil if self.data.nil? || self.data['permalink'].nil?
|
||||
return nil if data.nil? || data['permalink'].nil?
|
||||
if site.config['relative_permalinks']
|
||||
File.join(@dir, self.data['permalink'])
|
||||
File.join(@dir, data['permalink'])
|
||||
else
|
||||
self.data['permalink']
|
||||
data['permalink']
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -58,7 +58,7 @@ module Jekyll
|
|||
#
|
||||
# Returns the template String.
|
||||
def template
|
||||
if self.site.permalink_style == :pretty
|
||||
if site.permalink_style == :pretty
|
||||
if index? && html?
|
||||
"/:path/"
|
||||
elsif html?
|
||||
|
@ -87,8 +87,8 @@ module Jekyll
|
|||
def url_placeholders
|
||||
{
|
||||
:path => @dir,
|
||||
:basename => self.basename,
|
||||
:output_ext => self.output_ext
|
||||
:basename => basename,
|
||||
:output_ext => output_ext
|
||||
}
|
||||
end
|
||||
|
||||
|
@ -99,7 +99,7 @@ module Jekyll
|
|||
# Returns nothing.
|
||||
def process(name)
|
||||
self.ext = File.extname(name)
|
||||
self.basename = name[0 .. -self.ext.length-1]
|
||||
self.basename = name[0 .. -ext.length - 1]
|
||||
end
|
||||
|
||||
# Add any necessary layouts to this post
|
||||
|
@ -110,7 +110,7 @@ module Jekyll
|
|||
# Returns nothing.
|
||||
def render(layouts, site_payload)
|
||||
payload = {
|
||||
"page" => self.to_liquid,
|
||||
"page" => to_liquid,
|
||||
'paginator' => pager.to_liquid
|
||||
}.deep_merge(site_payload)
|
||||
|
||||
|
@ -121,7 +121,7 @@ module Jekyll
|
|||
#
|
||||
# Returns the path to the source file
|
||||
def path
|
||||
self.data.fetch('path', self.relative_path.sub(/\A\//, ''))
|
||||
data.fetch('path', relative_path.sub(/\A\//, ''))
|
||||
end
|
||||
|
||||
# The path to the page source file, relative to the site source
|
||||
|
@ -135,14 +135,14 @@ module Jekyll
|
|||
#
|
||||
# Returns the destination file path String.
|
||||
def destination(dest)
|
||||
path = File.join(dest, File.expand_path(self.url, "/"))
|
||||
path = File.join(path, "index.html") if self.url =~ /\/$/
|
||||
path = File.join(dest, File.expand_path(url, "/"))
|
||||
path = File.join(path, "index.html") if url =~ /\/$/
|
||||
path
|
||||
end
|
||||
|
||||
# Returns the object as a debug String.
|
||||
def inspect
|
||||
"#<Jekyll:Page @name=#{self.name.inspect}>"
|
||||
"#<Jekyll:Page @name=#{name.inspect}>"
|
||||
end
|
||||
|
||||
# Returns the Boolean of whether this Page is HTML or not.
|
||||
|
|
|
@ -49,30 +49,30 @@ module Jekyll
|
|||
def initialize(site, source, dir, name)
|
||||
@site = site
|
||||
@dir = dir
|
||||
@base = self.containing_dir(source, dir)
|
||||
@base = containing_dir(source, dir)
|
||||
@name = name
|
||||
|
||||
self.categories = dir.downcase.split('/').reject { |x| x.empty? }
|
||||
self.process(name)
|
||||
self.read_yaml(@base, name)
|
||||
process(name)
|
||||
read_yaml(@base, name)
|
||||
|
||||
if self.data.has_key?('date')
|
||||
self.date = Time.parse(self.data["date"].to_s)
|
||||
if data.has_key?('date')
|
||||
self.date = Time.parse(data["date"].to_s)
|
||||
end
|
||||
|
||||
self.populate_categories
|
||||
self.populate_tags
|
||||
populate_categories
|
||||
populate_tags
|
||||
end
|
||||
|
||||
def populate_categories
|
||||
if self.categories.empty?
|
||||
self.categories = self.data.pluralized_array('category', 'categories').map {|c| c.to_s.downcase}
|
||||
if categories.empty?
|
||||
self.categories = data.pluralized_array('category', 'categories').map {|c| c.to_s.downcase}
|
||||
end
|
||||
self.categories.flatten!
|
||||
categories.flatten!
|
||||
end
|
||||
|
||||
def populate_tags
|
||||
self.tags = self.data.pluralized_array("tag", "tags").flatten
|
||||
self.tags = data.pluralized_array("tag", "tags").flatten
|
||||
end
|
||||
|
||||
# Get the full path to the directory containing the post files
|
||||
|
@ -88,7 +88,7 @@ module Jekyll
|
|||
# Returns nothing.
|
||||
def read_yaml(base, name)
|
||||
super(base, name)
|
||||
self.extracted_excerpt = self.extract_excerpt
|
||||
self.extracted_excerpt = extract_excerpt
|
||||
end
|
||||
|
||||
# The post excerpt. This is either a custom excerpt
|
||||
|
@ -96,19 +96,19 @@ module Jekyll
|
|||
#
|
||||
# Returns excerpt string.
|
||||
def excerpt
|
||||
self.data.fetch('excerpt', self.extracted_excerpt.to_s)
|
||||
data.fetch('excerpt', extracted_excerpt.to_s)
|
||||
end
|
||||
|
||||
# Public: the Post title, from the YAML Front-Matter or from the slug
|
||||
#
|
||||
# Returns the post title
|
||||
def title
|
||||
self.data.fetch("title", self.titleized_slug)
|
||||
data.fetch("title", titleized_slug)
|
||||
end
|
||||
|
||||
# Turns the post slug into a suitable title
|
||||
def titleized_slug
|
||||
self.slug.split('-').select {|w| w.capitalize! || w }.join(' ')
|
||||
slug.split('-').select {|w| w.capitalize! || w }.join(' ')
|
||||
end
|
||||
|
||||
# Public: the path to the post relative to the site source,
|
||||
|
@ -118,7 +118,7 @@ module Jekyll
|
|||
#
|
||||
# Returns the path to the file relative to the site source
|
||||
def path
|
||||
self.data.fetch('path', self.relative_path.sub(/\A\//, ''))
|
||||
data.fetch('path', relative_path.sub(/\A\//, ''))
|
||||
end
|
||||
|
||||
# The path to the post source file, relative to the site source
|
||||
|
@ -172,11 +172,11 @@ module Jekyll
|
|||
#
|
||||
# Returns the String permalink.
|
||||
def permalink
|
||||
self.data && self.data['permalink']
|
||||
data && data['permalink']
|
||||
end
|
||||
|
||||
def template
|
||||
case self.site.permalink_style
|
||||
case site.permalink_style
|
||||
when :pretty
|
||||
"/:categories/:year/:month/:day/:title/"
|
||||
when :none
|
||||
|
@ -186,7 +186,7 @@ module Jekyll
|
|||
when :ordinal
|
||||
"/:categories/:year/:y_day/:title.html"
|
||||
else
|
||||
self.site.permalink_style.to_s
|
||||
site.permalink_style.to_s
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -214,7 +214,7 @@ module Jekyll
|
|||
:categories => (categories || []).map { |c| URI.escape(c.to_s) }.join('/'),
|
||||
:short_month => date.strftime("%b"),
|
||||
:y_day => date.strftime("%j"),
|
||||
:output_ext => self.output_ext
|
||||
:output_ext => output_ext
|
||||
}
|
||||
end
|
||||
|
||||
|
@ -223,7 +223,7 @@ module Jekyll
|
|||
#
|
||||
# Returns the String UID.
|
||||
def id
|
||||
File.join(self.dir, self.slug)
|
||||
File.join(dir, slug)
|
||||
end
|
||||
|
||||
# Calculate related posts.
|
||||
|
@ -243,14 +243,14 @@ module Jekyll
|
|||
# construct payload
|
||||
payload = {
|
||||
"site" => { "related_posts" => related_posts(site_payload["site"]["posts"]) },
|
||||
"page" => self.to_liquid(EXCERPT_ATTRIBUTES_FOR_LIQUID)
|
||||
"page" => to_liquid(EXCERPT_ATTRIBUTES_FOR_LIQUID)
|
||||
}.deep_merge(site_payload)
|
||||
|
||||
if generate_excerpt?
|
||||
self.extracted_excerpt.do_layout(payload, {})
|
||||
extracted_excerpt.do_layout(payload, {})
|
||||
end
|
||||
|
||||
do_layout(payload.merge({"page" => self.to_liquid}), layouts)
|
||||
do_layout(payload.merge({"page" => to_liquid}), layouts)
|
||||
end
|
||||
|
||||
# Obtain destination path.
|
||||
|
@ -260,29 +260,29 @@ module Jekyll
|
|||
# Returns destination file path String.
|
||||
def destination(dest)
|
||||
# The url needs to be unescaped in order to preserve the correct filename
|
||||
path = File.join(dest, File.expand_path(CGI.unescape(self.url), "/"))
|
||||
path = File.join(dest, File.expand_path(CGI.unescape(url), "/"))
|
||||
path = File.join(path, "index.html") if path[/\.html$/].nil?
|
||||
path
|
||||
end
|
||||
|
||||
# Returns the shorthand String identifier of this Post.
|
||||
def inspect
|
||||
"<Post: #{self.id}>"
|
||||
"<Post: #{id}>"
|
||||
end
|
||||
|
||||
def next
|
||||
pos = self.site.posts.index {|post| post.equal?(self) }
|
||||
if pos && pos < self.site.posts.length-1
|
||||
self.site.posts[pos+1]
|
||||
pos = site.posts.index {|post| post.equal?(self) }
|
||||
if pos && pos < site.posts.length - 1
|
||||
site.posts[pos + 1]
|
||||
else
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
||||
def previous
|
||||
pos = self.site.posts.index {|post| post.equal?(self) }
|
||||
pos = site.posts.index {|post| post.equal?(self) }
|
||||
if pos && pos > 0
|
||||
self.site.posts[pos-1]
|
||||
site.posts[pos - 1]
|
||||
else
|
||||
nil
|
||||
end
|
||||
|
|
|
@ -14,9 +14,9 @@ module Jekyll
|
|||
end
|
||||
|
||||
def build
|
||||
return [] unless self.site.posts.size > 1
|
||||
return [] unless site.posts.size > 1
|
||||
|
||||
if self.site.lsi
|
||||
if site.lsi
|
||||
build_index
|
||||
lsi_related_posts
|
||||
else
|
||||
|
@ -30,7 +30,7 @@ module Jekyll
|
|||
lsi = Classifier::LSI.new(:auto_rebuild => false)
|
||||
display("Populating LSI...")
|
||||
|
||||
self.site.posts.each do |x|
|
||||
site.posts.each do |x|
|
||||
lsi.add_item(x)
|
||||
end
|
||||
|
||||
|
@ -42,11 +42,11 @@ module Jekyll
|
|||
end
|
||||
|
||||
def lsi_related_posts
|
||||
self.class.lsi.find_related(post.content, 11) - [self.post]
|
||||
self.class.lsi.find_related(post.content, 11) - [post]
|
||||
end
|
||||
|
||||
def most_recent_posts
|
||||
recent_posts = self.site.posts.reverse - [self.post]
|
||||
recent_posts = site.posts.reverse - [post]
|
||||
recent_posts.first(10)
|
||||
end
|
||||
|
||||
|
|
|
@ -11,54 +11,50 @@ module Jekyll
|
|||
#
|
||||
# config - A Hash containing site configuration details.
|
||||
def initialize(config)
|
||||
self.config = config.clone
|
||||
self.config = config.clone
|
||||
|
||||
%w[safe lsi highlighter baseurl exclude include future show_drafts limit_posts keep_files gems].each do |opt|
|
||||
self.send("#{opt}=", config[opt])
|
||||
end
|
||||
|
||||
self.source = File.expand_path(config['source'])
|
||||
self.dest = File.expand_path(config['destination'])
|
||||
self.plugins = plugins_path
|
||||
self.source = File.expand_path(config['source'])
|
||||
self.dest = File.expand_path(config['destination'])
|
||||
self.plugins = plugins_path
|
||||
self.permalink_style = config['permalink'].to_sym
|
||||
|
||||
self.file_read_opts = {}
|
||||
self.file_read_opts[:encoding] = config['encoding'] if config['encoding']
|
||||
|
||||
self.reset
|
||||
self.setup
|
||||
reset
|
||||
setup
|
||||
end
|
||||
|
||||
# Public: Read, process, and write this Site to output.
|
||||
#
|
||||
# Returns nothing.
|
||||
def process
|
||||
self.reset
|
||||
self.read
|
||||
self.generate
|
||||
self.render
|
||||
self.cleanup
|
||||
self.write
|
||||
reset
|
||||
read
|
||||
generate
|
||||
render
|
||||
cleanup
|
||||
write
|
||||
end
|
||||
|
||||
# Reset Site details.
|
||||
#
|
||||
# Returns nothing
|
||||
def reset
|
||||
self.time = if self.config['time']
|
||||
Time.parse(self.config['time'].to_s)
|
||||
else
|
||||
Time.now
|
||||
end
|
||||
self.layouts = {}
|
||||
self.posts = []
|
||||
self.pages = []
|
||||
self.static_files = []
|
||||
self.categories = Hash.new { |hash, key| hash[key] = [] }
|
||||
self.tags = Hash.new { |hash, key| hash[key] = [] }
|
||||
self.data = {}
|
||||
self.time = (config['time'] ? Time.parse(config['time'].to_s) : Time.now)
|
||||
self.layouts = {}
|
||||
self.posts = []
|
||||
self.pages = []
|
||||
self.static_files = []
|
||||
self.categories = Hash.new { |hash, key| hash[key] = [] }
|
||||
self.tags = Hash.new { |hash, key| hash[key] = [] }
|
||||
self.data = {}
|
||||
|
||||
if self.limit_posts < 0
|
||||
if limit_posts < 0
|
||||
raise ArgumentError, "limit_posts must be a non-negative number"
|
||||
end
|
||||
end
|
||||
|
@ -71,11 +67,11 @@ module Jekyll
|
|||
|
||||
# If safe mode is off, load in any Ruby files under the plugins
|
||||
# directory.
|
||||
unless self.safe
|
||||
self.plugins.each do |plugins|
|
||||
Dir[File.join(plugins, "**/*.rb")].sort.each do |f|
|
||||
require f
|
||||
end
|
||||
unless safe
|
||||
plugins.each do |plugins|
|
||||
Dir[File.join(plugins, "**/*.rb")].sort.each do |f|
|
||||
require f
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -88,16 +84,16 @@ module Jekyll
|
|||
# Check that the destination dir isn't the source dir or a directory
|
||||
# parent to the source dir.
|
||||
def ensure_not_in_dest
|
||||
dest = Pathname.new(self.dest)
|
||||
Pathname.new(self.source).ascend do |path|
|
||||
if path == dest
|
||||
dest_pathname = Pathname.new(dest)
|
||||
Pathname.new(source).ascend do |path|
|
||||
if path == dest_pathname
|
||||
raise FatalException.new "Destination directory cannot be or contain the Source directory."
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def require_gems
|
||||
self.gems.each do |gem|
|
||||
gems.each do |gem|
|
||||
if plugin_allowed?(gem)
|
||||
require gem
|
||||
end
|
||||
|
@ -105,11 +101,11 @@ module Jekyll
|
|||
end
|
||||
|
||||
def plugin_allowed?(gem_name)
|
||||
whitelist.include?(gem_name) || !self.safe
|
||||
whitelist.include?(gem_name) || !safe
|
||||
end
|
||||
|
||||
def whitelist
|
||||
@whitelist ||= Array[self.config['whitelist']].flatten || []
|
||||
@whitelist ||= Array[config['whitelist']].flatten
|
||||
end
|
||||
|
||||
# Internal: Setup the plugin search path
|
||||
|
@ -117,7 +113,7 @@ module Jekyll
|
|||
# Returns an Array of plugin search paths
|
||||
def plugins_path
|
||||
if (config['plugins'] == Jekyll::Configuration::DEFAULTS['plugins'])
|
||||
[File.join(self.source, config['plugins'])]
|
||||
[File.join(source, config['plugins'])]
|
||||
else
|
||||
Array(config['plugins']).map { |d| File.expand_path(d) }
|
||||
end
|
||||
|
@ -128,8 +124,8 @@ module Jekyll
|
|||
# Returns nothing.
|
||||
def read
|
||||
self.layouts = LayoutReader.new(self).read
|
||||
self.read_directories
|
||||
self.read_data(config['data_source'])
|
||||
read_directories
|
||||
read_data(config['data_source'])
|
||||
end
|
||||
|
||||
# Recursively traverse directories to find posts, pages and static files
|
||||
|
@ -140,24 +136,24 @@ module Jekyll
|
|||
#
|
||||
# Returns nothing.
|
||||
def read_directories(dir = '')
|
||||
base = File.join(self.source, dir)
|
||||
base = File.join(source, dir)
|
||||
entries = Dir.chdir(base) { filter_entries(Dir.entries('.'), base) }
|
||||
|
||||
self.read_posts(dir)
|
||||
self.read_drafts(dir) if self.show_drafts
|
||||
self.posts.sort!
|
||||
read_posts(dir)
|
||||
read_drafts(dir) if show_drafts
|
||||
posts.sort!
|
||||
limit_posts! if limit_posts > 0 # limit the posts if :limit_posts option is set
|
||||
|
||||
entries.each do |f|
|
||||
f_abs = File.join(base, f)
|
||||
if File.directory?(f_abs)
|
||||
f_rel = File.join(dir, f)
|
||||
read_directories(f_rel) unless self.dest.sub(/\/$/, '') == f_abs
|
||||
read_directories(f_rel) unless dest.sub(/\/$/, '') == f_abs
|
||||
elsif has_yaml_header?(f_abs)
|
||||
page = Page.new(self, self.source, dir, f)
|
||||
page = Page.new(self, source, dir, f)
|
||||
pages << page if page.published?
|
||||
else
|
||||
static_files << StaticFile.new(self, self.source, dir, f)
|
||||
static_files << StaticFile.new(self, source, dir, f)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -174,7 +170,7 @@ module Jekyll
|
|||
posts = read_content(dir, '_posts', Post)
|
||||
|
||||
posts.each do |post|
|
||||
if post.published? && (self.future || post.date <= self.time)
|
||||
if post.published? && (future || post.date <= time)
|
||||
aggregate_post_info(post)
|
||||
end
|
||||
end
|
||||
|
@ -196,7 +192,7 @@ module Jekyll
|
|||
|
||||
def read_content(dir, magic_dir, klass)
|
||||
get_entries(dir, magic_dir).map do |entry|
|
||||
klass.new(self, self.source, dir, entry) if klass.valid?(entry)
|
||||
klass.new(self, source, dir, entry) if klass.valid?(entry)
|
||||
end.reject do |entry|
|
||||
entry.nil?
|
||||
end
|
||||
|
@ -206,15 +202,15 @@ module Jekyll
|
|||
#
|
||||
# Returns nothing
|
||||
def read_data(dir)
|
||||
base = File.join(self.source, dir)
|
||||
return unless File.directory?(base) && (!self.safe || !File.symlink?(base))
|
||||
base = File.join(source, dir)
|
||||
return unless File.directory?(base) && (!safe || !File.symlink?(base))
|
||||
|
||||
entries = Dir.chdir(base) { Dir['*.{yaml,yml}'] }
|
||||
entries.delete_if { |e| File.directory?(File.join(base, e)) }
|
||||
|
||||
entries.each do |entry|
|
||||
path = File.join(self.source, dir, entry)
|
||||
next if File.symlink?(path) && self.safe
|
||||
path = File.join(source, dir, entry)
|
||||
next if File.symlink?(path) && safe
|
||||
|
||||
key = sanitize_filename(File.basename(entry, '.*'))
|
||||
self.data[key] = SafeYAML.load_file(path)
|
||||
|
@ -225,7 +221,7 @@ module Jekyll
|
|||
#
|
||||
# Returns nothing.
|
||||
def generate
|
||||
self.generators.each do |generator|
|
||||
generators.each do |generator|
|
||||
generator.generate(self)
|
||||
end
|
||||
end
|
||||
|
@ -237,12 +233,12 @@ module Jekyll
|
|||
relative_permalinks_deprecation_method
|
||||
|
||||
payload = site_payload
|
||||
[self.posts, self.pages].flatten.each do |page_or_post|
|
||||
page_or_post.render(self.layouts, payload)
|
||||
[posts, pages].flatten.each do |page_or_post|
|
||||
page_or_post.render(layouts, payload)
|
||||
end
|
||||
|
||||
self.categories.values.map { |ps| ps.sort! { |a, b| b <=> a } }
|
||||
self.tags.values.map { |ps| ps.sort! { |a, b| b <=> a } }
|
||||
categories.values.map { |ps| ps.sort! { |a, b| b <=> a } }
|
||||
tags.values.map { |ps| ps.sort! { |a, b| b <=> a } }
|
||||
rescue Errno::ENOENT => e
|
||||
# ignore missing layout dir
|
||||
end
|
||||
|
@ -258,7 +254,7 @@ module Jekyll
|
|||
#
|
||||
# Returns nothing.
|
||||
def write
|
||||
each_site_file { |item| item.write(self.dest) }
|
||||
each_site_file { |item| item.write(dest) }
|
||||
end
|
||||
|
||||
# Construct a Hash of Posts indexed by the specified Post attribute.
|
||||
|
@ -277,8 +273,8 @@ module Jekyll
|
|||
def post_attr_hash(post_attr)
|
||||
# Build a hash map based on the specified post attribute ( post attr =>
|
||||
# array of posts ) then sort each array in reverse order.
|
||||
hash = Hash.new { |hsh, key| hsh[key] = Array.new }
|
||||
self.posts.each { |p| p.send(post_attr.to_sym).each { |t| hash[t] << p } }
|
||||
hash = Hash.new { |hash, key| hash[key] = [] }
|
||||
posts.each { |p| p.send(post_attr.to_sym).each { |t| hash[t] << p } }
|
||||
hash.values.map { |sortme| sortme.sort! { |a, b| b <=> a } }
|
||||
hash
|
||||
end
|
||||
|
@ -288,7 +284,7 @@ module Jekyll
|
|||
#
|
||||
# Returns the Hash to be hooked to site.data.
|
||||
def site_data
|
||||
self.config['data'] || self.data
|
||||
config['data'] || data
|
||||
end
|
||||
|
||||
# The Hash payload containing site-wide data.
|
||||
|
@ -306,12 +302,12 @@ module Jekyll
|
|||
# See Site#post_attr_hash for type info.
|
||||
def site_payload
|
||||
{"jekyll" => { "version" => Jekyll::VERSION },
|
||||
"site" => self.config.merge({
|
||||
"time" => self.time,
|
||||
"posts" => self.posts.sort { |a, b| b <=> a },
|
||||
"pages" => self.pages,
|
||||
"static_files" => self.static_files.sort { |a, b| a.relative_path <=> b.relative_path },
|
||||
"html_pages" => self.pages.reject { |page| !page.html? },
|
||||
"site" => config.merge({
|
||||
"time" => time,
|
||||
"posts" => posts.sort { |a, b| b <=> a },
|
||||
"pages" => pages,
|
||||
"static_files" => static_files.sort { |a, b| a.relative_path <=> b.relative_path },
|
||||
"html_pages" => pages.reject { |page| !page.html? },
|
||||
"categories" => post_attr_hash('categories'),
|
||||
"tags" => post_attr_hash('tags'),
|
||||
"data" => site_data})}
|
||||
|
@ -335,7 +331,7 @@ module Jekyll
|
|||
#
|
||||
# Returns the Converter instance implementing the given Converter.
|
||||
def getConverterImpl(klass)
|
||||
matches = self.converters.select { |c| c.class == klass }
|
||||
matches = converters.select { |c| c.class == klass }
|
||||
if impl = matches.first
|
||||
impl
|
||||
else
|
||||
|
@ -352,9 +348,9 @@ module Jekyll
|
|||
# Returns array of instances of subclasses of parameter
|
||||
def instantiate_subclasses(klass)
|
||||
klass.subclasses.select do |c|
|
||||
!self.safe || c.safe
|
||||
!safe || c.safe
|
||||
end.sort.map do |c|
|
||||
c.new(self.config)
|
||||
c.new(config)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -365,7 +361,7 @@ module Jekyll
|
|||
#
|
||||
# Returns the list of entries to process
|
||||
def get_entries(dir, subfolder)
|
||||
base = File.join(self.source, dir, subfolder)
|
||||
base = File.join(source, dir, subfolder)
|
||||
return [] unless File.exists?(base)
|
||||
entries = Dir.chdir(base) { filter_entries(Dir['**/*'], base) }
|
||||
entries.delete_if { |e| File.directory?(File.join(base, e)) }
|
||||
|
@ -377,9 +373,9 @@ module Jekyll
|
|||
#
|
||||
# Returns nothing
|
||||
def aggregate_post_info(post)
|
||||
self.posts << post
|
||||
post.categories.each { |c| self.categories[c] << post }
|
||||
post.tags.each { |c| self.tags[c] << post }
|
||||
posts << post
|
||||
post.categories.each { |c| categories[c] << post }
|
||||
post.tags.each { |c| tags[c] << post }
|
||||
end
|
||||
|
||||
def relative_permalinks_deprecation_method
|
||||
|
@ -396,7 +392,7 @@ module Jekyll
|
|||
|
||||
def each_site_file
|
||||
%w(posts pages static_files).each do |type|
|
||||
self.send(type).each do |item|
|
||||
send(type).each do |item|
|
||||
yield item
|
||||
end
|
||||
end
|
||||
|
@ -405,7 +401,7 @@ module Jekyll
|
|||
private
|
||||
|
||||
def has_relative_page?
|
||||
self.pages.any? { |page| page.uses_relative_permalinks }
|
||||
pages.any? { |page| page.uses_relative_permalinks }
|
||||
end
|
||||
|
||||
def has_yaml_header?(file)
|
||||
|
@ -413,8 +409,8 @@ module Jekyll
|
|||
end
|
||||
|
||||
def limit_posts!
|
||||
limit = self.posts.length < limit_posts ? self.posts.length : limit_posts
|
||||
self.posts = self.posts[-limit, limit]
|
||||
limit = posts.length < limit_posts ? posts.length : limit_posts
|
||||
self.posts = posts[-limit, limit]
|
||||
end
|
||||
|
||||
def site_cleaner
|
||||
|
@ -422,9 +418,9 @@ module Jekyll
|
|||
end
|
||||
|
||||
def sanitize_filename(name)
|
||||
name = name.gsub(/[^\w\s_-]+/, '')
|
||||
name = name.gsub(/(^|\b\s)\s+($|\s?\b)/, '\\1\\2')
|
||||
name = name.gsub(/\s+/, '_')
|
||||
name.gsub!(/[^\w\s_-]+/, '')
|
||||
name.gsub!(/(^|\b\s)\s+($|\s?\b)/, '\\1\\2')
|
||||
name.gsub(/\s+/, '_')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue