Cache variables that won't change through the life of an object

This commit is contained in:
Parker Moore 2014-10-12 02:30:10 -07:00
parent 44c9f81921
commit fbe98df488
3 changed files with 20 additions and 20 deletions

View File

@ -75,7 +75,7 @@ module Jekyll
# Returns a String containing the directory name where the collection # Returns a String containing the directory name where the collection
# is stored on the filesystem. # is stored on the filesystem.
def relative_directory def relative_directory
"_#{label}" @relative_directory ||= "_#{label}"
end end
# The full path to the directory containing the # The full path to the directory containing the
@ -83,7 +83,7 @@ module Jekyll
# Returns a String containing th directory name where the collection # Returns a String containing th directory name where the collection
# is stored on the filesystem. # is stored on the filesystem.
def directory def directory
Jekyll.sanitized_path(site.source, relative_directory) @directory ||= Jekyll.sanitized_path(site.source, relative_directory)
end end
# Checks whether the directory "exists" for this collection. # Checks whether the directory "exists" for this collection.

View File

@ -4,7 +4,7 @@ module Jekyll
class Document class Document
include Comparable include Comparable
attr_reader :path, :site attr_reader :path, :site, :extname
attr_accessor :content, :collection, :output attr_accessor :content, :collection, :output
# Create a new Document. # Create a new Document.
@ -16,6 +16,7 @@ module Jekyll
def initialize(path, relations) def initialize(path, relations)
@site = relations[:site] @site = relations[:site]
@path = path @path = path
@extname = File.extname(path)
@collection = relations[:collection] @collection = relations[:collection]
@has_yaml_header = nil @has_yaml_header = nil
end end
@ -33,23 +34,21 @@ module Jekyll
# Returns a String path which represents the relative path # Returns a String path which represents the relative path
# from the site source to this document # from the site source to this document
def relative_path def relative_path
Pathname.new(path).relative_path_from(Pathname.new(site.source)).to_s @relative_path ||= Pathname.new(path).relative_path_from(Pathname.new(site.source)).to_s
end
# The base filename of the document, without the file extname.
#
# Returns the basename without the file extname.
def basename_without_ext
@basename_without_ext ||= File.basename(path, '.*')
end end
# The base filename of the document. # The base filename of the document.
# #
# suffix - (optional) the suffix to be removed from the end of the filename
#
# Returns the base filename of the document. # Returns the base filename of the document.
def basename(suffix = "") def basename
File.basename(path, suffix) @basename ||= File.basename(path)
end
# The extension name of the document.
#
# Returns the extension name of the document.
def extname
File.extname(path)
end end
# Produces a "cleaned" relative path. # Produces a "cleaned" relative path.
@ -64,7 +63,8 @@ module Jekyll
# #
# Returns the cleaned relative path of the document. # Returns the cleaned relative path of the document.
def cleaned_relative_path def cleaned_relative_path
relative_path[0 .. -extname.length - 1].sub(collection.relative_directory, "") @cleaned_relative_path ||=
relative_path[0 .. -extname.length - 1].sub(collection.relative_directory, "")
end end
# Determine whether the document is a YAML file. # Determine whether the document is a YAML file.
@ -129,8 +129,8 @@ module Jekyll
collection: collection.label, collection: collection.label,
path: cleaned_relative_path, path: cleaned_relative_path,
output_ext: Jekyll::Renderer.new(site, self).output_ext, output_ext: Jekyll::Renderer.new(site, self).output_ext,
name: Utils.slugify(basename(".*")), name: Utils.slugify(basename_without_ext),
title: Utils.slugify(data['title']) || Utils.slugify(basename(".*")) title: Utils.slugify(data['title']) || Utils.slugify(basename_without_ext)
} }
end end

View File

@ -98,7 +98,7 @@ eos
end end
def includes_dir def includes_dir
'_includes' @includes_dir ||= '_includes'
end end
def render(context) def render(context)
@ -150,7 +150,7 @@ eos
class IncludeRelativeTag < IncludeTag class IncludeRelativeTag < IncludeTag
def includes_dir def includes_dir
'.' @includes_dir ||= '.'
end end
def resolved_includes_dir(context) def resolved_includes_dir(context)