Make frontmatter always return a hash, and freeze it. This reduces the need for nil checks and prevents users from accidentally trying to modify frontmatter data which may be cached elsewhere.

This commit is contained in:
Ben Hollis 2012-03-25 12:43:11 -07:00
parent c69fac9028
commit 92713dfe92
2 changed files with 5 additions and 7 deletions

View file

@ -139,7 +139,7 @@ module Middleman::CoreExtensions::FrontMatter
if result
data, content = result
data = ::Middleman.recursively_enhance(data)
data = ::Middleman.recursively_enhance(data).freeze
file = file.sub(@app.source_dir, "")
@local_data[file] = [data, content]
path = File.join(@app.source_dir, file)
@ -164,12 +164,12 @@ module Middleman::CoreExtensions::FrontMatter
# Get the frontmatter for a given path
# @param [String] path
# @return [Hash, nil]
# @return [Hash]
def data(path)
if @local_data.has_key?(path.to_s)
@local_data[path.to_s]
else
nil
{}.freeze
end
end

View file

@ -204,10 +204,9 @@ module Middleman::Sitemap
end
# This page's frontmatter
# @return [Hash, nil]
# @return [Hash]
def data
data, content = app.frontmatter(relative_path)
data || nil
app.frontmatter(relative_path).first
end
# This page's parent page
@ -216,7 +215,6 @@ module Middleman::Sitemap
parts = path.split("/")
if path.include?(app.index_file)
parts.pop
else
end
return nil if parts.length < 1