Move file extension methods up a level

This commit is contained in:
Thomas Reynolds 2012-04-19 15:47:42 -07:00
parent aa3e1a6c5a
commit b97f681ef1
2 changed files with 45 additions and 45 deletions

View file

@ -37,7 +37,7 @@ module Middleman::Sitemap::Extensions
def touch_file(file, rebuild=true) def touch_file(file, rebuild=true)
return false if file == @app.source_dir || File.directory?(file) return false if file == @app.source_dir || File.directory?(file)
path = file_to_path(file) path = @sitemap.file_to_path(file)
return false unless path return false unless path
ignored = @app.ignored_sitemap_matchers.any? do |name, callback| ignored = @app.ignored_sitemap_matchers.any? do |name, callback|
@ -68,53 +68,10 @@ module Middleman::Sitemap::Extensions
resources + @file_paths_on_disk.map do |file| resources + @file_paths_on_disk.map do |file|
::Middleman::Sitemap::Resource.new( ::Middleman::Sitemap::Resource.new(
@sitemap, @sitemap,
file_to_path(file), @sitemap.file_to_path(file),
File.expand_path(file, @app.root) File.expand_path(file, @app.root)
) )
end end
end end
# Get the URL path for an on-disk file
# @param [String] file
# @return [String]
def file_to_path(file)
file = File.expand_path(file, @app.root)
prefix = @app.source_dir.sub(/\/$/, "") + "/"
return false unless file.include?(prefix)
path = file.sub(prefix, "")
extensionless_path(path)
end
# Get a path without templating extensions
# @param [String] file
# @return [String]
def extensionless_path(file)
path = file.dup
end_of_the_line = false
while !end_of_the_line
if !::Tilt[path].nil?
path = path.sub(File.extname(path), "")
else
end_of_the_line = true
end
end
# If there is no extension, look for one
if File.extname(path).empty?
input_ext = File.extname(file)
if !input_ext.empty?
input_ext = input_ext.split(".").last.to_sym
if @app.template_extensions.has_key?(input_ext)
path << ".#{@app.template_extensions[input_ext]}"
end
end
end
path
end
end end
end end

View file

@ -144,5 +144,48 @@ module Middleman::Sitemap
result.deep_merge(metadata) result.deep_merge(metadata)
end end
end end
# Get the URL path for an on-disk file
# @param [String] file
# @return [String]
def file_to_path(file)
file = File.expand_path(file, @app.root)
prefix = @app.source_dir.sub(/\/$/, "") + "/"
return false unless file.include?(prefix)
path = file.sub(prefix, "")
extensionless_path(path)
end
# Get a path without templating extensions
# @param [String] file
# @return [String]
def extensionless_path(file)
path = file.dup
end_of_the_line = false
while !end_of_the_line
if !::Tilt[path].nil?
path = path.sub(File.extname(path), "")
else
end_of_the_line = true
end
end
# If there is no extension, look for one
if File.extname(path).empty?
input_ext = File.extname(file)
if !input_ext.empty?
input_ext = input_ext.split(".").last.to_sym
if @app.template_extensions.has_key?(input_ext)
path << ".#{@app.template_extensions[input_ext]}"
end
end
end
path
end
end end
end end