Skip to content

Instantly share code, notes, and snippets.

@naoto
Created November 1, 2012 12:17
Show Gist options
  • Save naoto/3993312 to your computer and use it in GitHub Desktop.
Save naoto/3993312 to your computer and use it in GitHub Desktop.
class Tree < Hash
def self.glob(path)
tree = Tree.new
Dir::glob("#{path}/**/*").sort.each do |dir|
next unless File.directory? dir
tree[File.dirname(dir)] ||= []
tree[File.dirname(dir)] << File.basename(dir)
end
tree.render tree.keys.first
end
def render(key)
"<ul>#{child key}</ul>"
end
def child(key)
html = ""
self[key].each do |dir|
if self["#{key}/#{dir}"].nil?
html << "<li>#{dir}</li>"
else
html << render("#{key}/#{dir}")
end
end
html
end
end
if __FILE__ == $0
puts Tree.glob("/path/to/dir")
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment