class Jekyll::EntryFilter
Constants
- SPECIAL_LEADING_CHARACTERS
Attributes
site[R]
Public Class Methods
new(site, base_directory = nil)
click to toggle source
# File lib/jekyll/entry_filter.rb, line 7 def initialize(site, base_directory = nil) @site = site @base_directory = derive_base_directory(@site, base_directory.to_s.dup) end
Public Instance Methods
backup?(entry)
click to toggle source
# File lib/jekyll/entry_filter.rb, line 44 def backup?(entry) entry[-1..-1] == '~' end
base_directory()
click to toggle source
# File lib/jekyll/entry_filter.rb, line 12 def base_directory @base_directory.to_s end
derive_base_directory(site, base_dir)
click to toggle source
# File lib/jekyll/entry_filter.rb, line 16 def derive_base_directory(site, base_dir) if base_dir.start_with?(site.source) base_dir[site.source] = "" end base_dir end
ensure_leading_slash(path)
click to toggle source
# File lib/jekyll/entry_filter.rb, line 58 def ensure_leading_slash(path) path[0..0] == "/" ? path : "/#{path}" end
excluded?(entry)
click to toggle source
# File lib/jekyll/entry_filter.rb, line 48 def excluded?(entry) excluded = glob_include?(site.exclude, relative_to_source(entry)) Jekyll.logger.debug "EntryFilter:", "excluded?(#{relative_to_source(entry)}) ==> #{excluded}" excluded end
filter(entries)
click to toggle source
# File lib/jekyll/entry_filter.rb, line 27 def filter(entries) entries.reject do |e| unless included?(e) special?(e) || backup?(e) || excluded?(e) || symlink?(e) end end end
glob_include?(enum, e)
click to toggle source
Returns true if path matches against any glob pattern. Look for more detail about glob pattern in method File::fnmatch.
# File lib/jekyll/entry_filter.rb, line 64 def glob_include?(enum, e) entry = ensure_leading_slash(e) enum.any? do |exp| item = ensure_leading_slash(exp) File.fnmatch?(item, entry) || entry.start_with?(item) end end
included?(entry)
click to toggle source
# File lib/jekyll/entry_filter.rb, line 35 def included?(entry) glob_include?(site.include, entry) end
relative_to_source(entry)
click to toggle source
# File lib/jekyll/entry_filter.rb, line 23 def relative_to_source(entry) File.join(base_directory, entry) end
special?(entry)
click to toggle source
# File lib/jekyll/entry_filter.rb, line 39 def special?(entry) SPECIAL_LEADING_CHARACTERS.include?(entry[0..0]) || SPECIAL_LEADING_CHARACTERS.include?(File.basename(entry)[0..0]) end
symlink?(entry)
click to toggle source
# File lib/jekyll/entry_filter.rb, line 54 def symlink?(entry) File.symlink?(entry) && site.safe end