Excludes should be relative to the site source

This commit is contained in:
Parker Moore 2014-01-05 10:43:41 -08:00
parent 437693e744
commit 42fc5e9ee7
3 changed files with 26 additions and 8 deletions

View File

@ -2,8 +2,24 @@ module Jekyll
class EntryFilter class EntryFilter
attr_reader :site attr_reader :site
def initialize(site) def initialize(site, base_directory = nil)
@site = site @site = site
@base_directory = derive_base_directory(@site, base_directory.dup)
end
def base_directory
@base_directory.to_s
end
def derive_base_directory(site, base_dir)
if base_dir.start_with?(site.source)
base_dir[site.source] = ""
end
base_dir
end
def relative_to_source(entry)
File.join(base_directory, entry)
end end
def filter(entries) def filter(entries)
@ -27,7 +43,9 @@ module Jekyll
end end
def excluded?(entry) def excluded?(entry)
site.exclude.glob_include?(entry) excluded = site.exclude.glob_include?(relative_to_source(entry))
Jekyll.logger.debug "excluded?(#{relative_to_source(entry)}) ==> #{excluded}"
excluded
end end
def symlink?(entry) def symlink?(entry)

View File

@ -140,7 +140,7 @@ module Jekyll
base = File.join(self.source, self.config['layouts']) base = File.join(self.source, self.config['layouts'])
return unless File.exists?(base) return unless File.exists?(base)
entries = [] entries = []
Dir.chdir(base) { entries = filter_entries(Dir['**/*.*']) } Dir.chdir(base) { entries = filter_entries(Dir['**/*.*'], base) }
entries.each do |f| entries.each do |f|
name = f.split(".")[0..-2].join(".") name = f.split(".")[0..-2].join(".")
@ -157,7 +157,7 @@ module Jekyll
# Returns nothing. # Returns nothing.
def read_directories(dir = '') def read_directories(dir = '')
base = File.join(self.source, dir) base = File.join(self.source, dir)
entries = Dir.chdir(base) { filter_entries(Dir.entries('.')) } entries = Dir.chdir(base) { filter_entries(Dir.entries('.'), base) }
self.read_posts(dir) self.read_posts(dir)
self.read_drafts(dir) if self.show_drafts self.read_drafts(dir) if self.show_drafts
@ -339,8 +339,8 @@ module Jekyll
# entries - The Array of String file/directory entries to filter. # entries - The Array of String file/directory entries to filter.
# #
# Returns the Array of filtered entries. # Returns the Array of filtered entries.
def filter_entries(entries) def filter_entries(entries, base_directory = nil)
EntryFilter.new(self).filter(entries) EntryFilter.new(self, base_directory).filter(entries)
end end
# Get the implementation class for the given Converter. # Get the implementation class for the given Converter.
@ -381,7 +381,7 @@ module Jekyll
def get_entries(dir, subfolder) def get_entries(dir, subfolder)
base = File.join(self.source, dir, subfolder) base = File.join(self.source, dir, subfolder)
return [] unless File.exists?(base) return [] unless File.exists?(base)
entries = Dir.chdir(base) { filter_entries(Dir['**/*']) } entries = Dir.chdir(base) { filter_entries(Dir['**/*'], base) }
entries.delete_if { |e| File.directory?(File.join(base, e)) } entries.delete_if { |e| File.directory?(File.join(base, e)) }
end end

View File

@ -1,4 +1,4 @@
highlight: pygments highlighter: pygments
relative_permalinks: false relative_permalinks: false
gauges_id: 503c5af6613f5d0f19000027 gauges_id: 503c5af6613f5d0f19000027
permalink: /news/:year/:month/:day/:title/ permalink: /news/:year/:month/:day/:title/