More removal of File.join

This commit is contained in:
Parker Moore 2014-09-07 11:50:09 -07:00
parent 98182aab4a
commit 0bc88975c8
8 changed files with 30 additions and 21 deletions

View File

@ -54,8 +54,8 @@ module Jekyll
# relative to the collection's directory
def entries
return Array.new unless exists?
Dir.glob(File.join(directory, "**", "*.*")).map do |entry|
entry[File.join(directory, "")] = ''; entry
Dir.glob(collection_dir("**", "*.*")).map do |entry|
entry[collection_dir("")] = ''; entry
end
end
@ -94,7 +94,8 @@ module Jekyll
# Returns a String containing th directory name where the collection
# is stored on the filesystem.
def collection_dir(*files)
site.in_source_dir(File.join(directory, *files))
return directory if files.empty?
site.in_source_dir(relative_directory, *files)
end
# Checks whether the directory "exists" for this collection.

View File

@ -43,7 +43,7 @@ module Jekyll
# Returns nothing.
def read_yaml(base, name, opts = {})
begin
self.content = File.read(Jekyll.sanitized_path(base, name),
self.content = File.read(site.in_source_dir(base, name),
merged_file_read_opts(opts))
if content =~ /\A(---\s*\n.*?\n?)^((---|\.\.\.)\s*$\n?)/m
self.content = $POSTMATCH

View File

@ -159,7 +159,7 @@ module Jekyll
#
# Returns the full path to the output file of this document.
def destination(base_directory)
path = Jekyll.sanitized_path(base_directory, url)
path = site.in_dest_dir(base_directory, url)
path = File.join(path, "index.html") if url =~ /\/$/
path
end

View File

@ -38,7 +38,7 @@ module Jekyll
end
def layout_directory_inside_source
Jekyll.sanitized_path(site.source, site.config['layouts'])
site.in_source_dir(site.config['layouts'])
end
def layout_directory_in_cwd

View File

@ -140,7 +140,7 @@ module Jekyll
#
# Returns the destination file path String.
def destination(dest)
path = Jekyll.sanitized_path(dest, URL.unescape_path(url))
path = site.in_dest_dir(dest, URL.unescape_path(url))
path = File.join(path, "index.html") if url =~ /\/$/
path
end

View File

@ -66,7 +66,7 @@ module Jekyll
# Returns an Array of plugin search paths
def plugins_path
if (site.config['plugins'] == Jekyll::Configuration::DEFAULTS['plugins'])
[Jekyll.sanitized_path(site.source, site.config['plugins'])]
[site.in_source_dir(site.config['plugins'])]
else
Array(site.config['plugins']).map { |d| File.expand_path(d) }
end

View File

@ -268,8 +268,8 @@ module Jekyll
# Returns destination file path String.
def destination(dest)
# The url needs to be unescaped in order to preserve the correct filename
path = Jekyll.sanitized_path(dest, URL.unescape_path(url))
path = File.join(path, "index.html") if path[/\.html?$/].nil?
path = site.in_dest_dir(dest, URL.unescape_path(url))
path = File.join(path, "index.html") if path[/\.html$/].nil?
path
end

View File

@ -23,9 +23,9 @@ module Jekyll
self.send("#{opt}=", config[opt])
end
# Source and destination may not be changed after the site has been created.
@source = File.expand_path(config['source']).freeze
@dest = File.expand_path(config['destination']).freeze
self.permalink_style = config['permalink'].to_sym
self.plugin_manager = Jekyll::PluginManager.new(self)
self.plugins = plugin_manager.plugins_path
@ -33,6 +33,8 @@ module Jekyll
self.file_read_opts = {}
self.file_read_opts[:encoding] = config['encoding'] if config['encoding']
self.permalink_style = config['permalink'].to_sym
Jekyll.sites << self
reset
@ -93,16 +95,22 @@ module Jekyll
# Public: Prefix a given path with the source directory.
#
# paths - (optional) path elements to a file or directory within the
# source directory
#
# Returns a path which is prefixed with the source directory.
def in_source_dir(path)
Jekyll.sanitized_path(source, path)
def in_source_dir(*paths)
Jekyll.sanitized_path(source, File.join(*paths.flatten))
end
# Public: Prefix a given path with the destination directory.
#
# paths - (optional) path elements to a file or directory within the
# destination directory
#
# Returns a path which is prefixed with the destination directory.
def in_dest_dir(path)
Jekyll.sanitized_path(dest, path)
def in_dest_dir(*paths)
Jekyll.sanitized_path(dest, File.join(*paths))
end
# The list of collections and their corresponding Jekyll::Collection instances.
@ -149,7 +157,7 @@ module Jekyll
#
# Returns nothing.
def read_directories(dir = '')
base = File.join(source, dir)
base = in_source_dir(dir)
entries = Dir.chdir(base) { filter_entries(Dir.entries('.'), base) }
read_posts(dir)
@ -158,7 +166,7 @@ module Jekyll
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)
f_abs = in_source_dir(base, f)
if File.directory?(f_abs)
f_rel = File.join(dir, f)
read_directories(f_rel) unless dest.sub(/\/$/, '') == f_abs
@ -215,7 +223,7 @@ module Jekyll
#
# Returns nothing
def read_data(dir)
base = Jekyll.sanitized_path(source, dir)
base = in_source_dir(dir)
read_data_to(base, self.data)
end
@ -234,7 +242,7 @@ module Jekyll
end
entries.each do |entry|
path = Jekyll.sanitized_path(dir, entry)
path = in_source_dir(dir, entry)
next if File.symlink?(path) && safe
key = sanitize_filename(File.basename(entry, '.*'))
@ -424,10 +432,10 @@ module Jekyll
#
# Returns the list of entries to process
def get_entries(dir, subfolder)
base = File.join(source, dir, subfolder)
base = in_source_dir(dir, subfolder)
return [] unless File.exist?(base)
entries = Dir.chdir(base) { filter_entries(Dir['**/*'], base) }
entries.delete_if { |e| File.directory?(File.join(base, e)) }
entries.delete_if { |e| File.directory?(in_source_dir(base, e)) }
end
# Aggregate post information