class Treely::Directory
Public Class Methods
new(path)
click to toggle source
# File lib/treely/directory.rb, line 3 def initialize(path) @pathname = Pathname(path) @directories, @files = [], [] @ignore_pattern = /\A\.(\.?|\w+)\z/ unless @pathname.directory? @contents = [] end end
Public Instance Methods
contents()
click to toggle source
# File lib/treely/directory.rb, line 13 def contents @contents ||= digger.call(@pathname) [*@contents, { directories: @directories.size, files: @files.size }] end
Private Instance Methods
digger()
click to toggle source
# File lib/treely/directory.rb, line 20 def digger lambda do |pathname| pathname.children.reject { |n| @ignore_pattern.match?(n.basename.to_s) }.map do |pathname| if pathname.directory? @directories << pathname { name: pathname.basename.to_s, contents: digger.call(pathname) } else @files << pathname { name: pathname.basename.to_s } end end.sort_by do |item| [ item[:contents].class.to_s, item[:name] ] end end end