class Madness::Directory
Represents a directory with markdown file sand subflders.
Attributes
dir[R]
Public Class Methods
new(dir)
click to toggle source
# File lib/madness/directory.rb, line 10 def initialize(dir) @dir = dir end
Public Instance Methods
list()
click to toggle source
# File lib/madness/directory.rb, line 14 def list @list ||= (dirs + files) end
Private Instance Methods
config()
click to toggle source
# File lib/madness/directory.rb, line 57 def config @config ||= Settings.instance end
dir_paths()
click to toggle source
# File lib/madness/directory.rb, line 53 def dir_paths @dir_paths ||= dirs.map(&:path) end
dirs()
click to toggle source
# File lib/madness/directory.rb, line 31 def dirs @dirs ||= begin result = Dir["#{dir}/*"].select { |f| File.directory? f } result.reject! { |f| exclude? f } result.nat_sort.map { |path| Item.new path, :dir } end end
exclude?(path)
click to toggle source
# File lib/madness/directory.rb, line 39 def exclude?(path) return false unless config.exclude.is_a? Array basename = File.basename path config.exclude.each do |pattern| return true if basename&.match?(Regexp.new(pattern)) end false end
files()
click to toggle source
# File lib/madness/directory.rb, line 20 def files @files ||= begin result = Dir["#{dir}/#{config.dir_glob}"] result.reject! do |f| ['README.md', 'index.md'].include? File.basename(f) end result.reject! { |f| is_cover_page? f } result.nat_sort.map { |path| Item.new path, :file } end end
is_cover_page?(path)
click to toggle source
# File lib/madness/directory.rb, line 49 def is_cover_page?(path) dir_paths.include? path.remove(/\.md$/) end