Excludes should be relative to the site source
This commit is contained in:
parent
437693e744
commit
42fc5e9ee7
|
@ -2,8 +2,24 @@ module Jekyll
|
|||
class EntryFilter
|
||||
attr_reader :site
|
||||
|
||||
def initialize(site)
|
||||
def initialize(site, base_directory = nil)
|
||||
@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
|
||||
|
||||
def filter(entries)
|
||||
|
@ -27,7 +43,9 @@ module Jekyll
|
|||
end
|
||||
|
||||
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
|
||||
|
||||
def symlink?(entry)
|
||||
|
|
|
@ -140,7 +140,7 @@ module Jekyll
|
|||
base = File.join(self.source, self.config['layouts'])
|
||||
return unless File.exists?(base)
|
||||
entries = []
|
||||
Dir.chdir(base) { entries = filter_entries(Dir['**/*.*']) }
|
||||
Dir.chdir(base) { entries = filter_entries(Dir['**/*.*'], base) }
|
||||
|
||||
entries.each do |f|
|
||||
name = f.split(".")[0..-2].join(".")
|
||||
|
@ -157,7 +157,7 @@ module Jekyll
|
|||
# Returns nothing.
|
||||
def read_directories(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_drafts(dir) if self.show_drafts
|
||||
|
@ -339,8 +339,8 @@ module Jekyll
|
|||
# entries - The Array of String file/directory entries to filter.
|
||||
#
|
||||
# Returns the Array of filtered entries.
|
||||
def filter_entries(entries)
|
||||
EntryFilter.new(self).filter(entries)
|
||||
def filter_entries(entries, base_directory = nil)
|
||||
EntryFilter.new(self, base_directory).filter(entries)
|
||||
end
|
||||
|
||||
# Get the implementation class for the given Converter.
|
||||
|
@ -381,7 +381,7 @@ module Jekyll
|
|||
def get_entries(dir, subfolder)
|
||||
base = File.join(self.source, dir, subfolder)
|
||||
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)) }
|
||||
end
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
highlight: pygments
|
||||
highlighter: pygments
|
||||
relative_permalinks: false
|
||||
gauges_id: 503c5af6613f5d0f19000027
|
||||
permalink: /news/:year/:month/:day/:title/
|
||||
|
|
Loading…
Reference in New Issue