diff --git a/lib/jekyll/entry_filter.rb b/lib/jekyll/entry_filter.rb index a547ae8b..458aa4e1 100644 --- a/lib/jekyll/entry_filter.rb +++ b/lib/jekyll/entry_filter.rb @@ -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) diff --git a/lib/jekyll/site.rb b/lib/jekyll/site.rb index 95bb46f9..48173835 100644 --- a/lib/jekyll/site.rb +++ b/lib/jekyll/site.rb @@ -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 diff --git a/site/_config.yml b/site/_config.yml index fc1fd46d..7181a663 100644 --- a/site/_config.yml +++ b/site/_config.yml @@ -1,4 +1,4 @@ -highlight: pygments +highlighter: pygments relative_permalinks: false gauges_id: 503c5af6613f5d0f19000027 permalink: /news/:year/:month/:day/:title/