Cache variables that won't change through the life of an object
This commit is contained in:
parent
44c9f81921
commit
fbe98df488
|
@ -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.
|
||||||
|
|
|
@ -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,6 +63,7 @@ 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
|
||||||
|
@cleaned_relative_path ||=
|
||||||
relative_path[0 .. -extname.length - 1].sub(collection.relative_directory, "")
|
relative_path[0 .. -extname.length - 1].sub(collection.relative_directory, "")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue