Giter Site home page Giter Site logo

ruby-file-tree's Introduction

#Ruby File Tree

Make a FileTree in Ruby.

@t = FileTree.new('path/to/dir')

##.to_h Makes a Hash of Hashes whose keys are the filename and (if directory) have "children" Hashes.

@t = FileTree.new('path/to/dir')
@t.to_h
#=> {"dir1"=>
  {:children=>
    {"file3.txt"=>
      {:children=>nil, :type=>"file", :full_path=>"test/data/dir1/file3.txt"}},
   :type=>"directory",
   :full_path=>"test/data/dir1"},
 "dir2"=>
  {:children=>
    {"dir3"=>
      {:children=>{}, :type=>"directory", :full_path=>"test/data/dir2/dir3"},
     "file3.js"=>
      {:children=>nil, :type=>"file", :full_path=>"test/data/dir2/file3.js"}},
   :type=>"directory",
   :full_path=>"test/data/dir2"},
 "file1.txt"=>
  {:children=>nil, :type=>"file", :full_path=>"test/data/file1.txt"},
 "file2.txt"=>
  {:children=>nil, :type=>"file", :full_path=>"test/data/file2.txt"}}

##.to_html Makes <ul> and <li> elements out of the files.

@t = FileTree.new('path/to/dir')
#=> "<ul><li>root</li><li><ul><li>dir1</li><li><ul><li>file3.txt</li></ul></li></ul></li><li><ul><li>dir2</li><li><ul><li>dir3</li></ul></li><li><ul><li>file3.js</li></ul></li></ul></li><li><ul><li>file1.txt</li></ul></li><li><ul><li>file2.txt</li></ul></li></ul>"

##.to_json Makes JSON out of the aforementioned Hash.

@t = FileTree.new('path/to/dir')
#=> { JSON }

###JSON example:

{
  "dir1": {
    "children": {
      "file3.txt": {
        "children": null,
        "type": "file",
        "full_path": "test/data/dir1/file3.txt"
      }
    },
    "type": "directory",
    "full_path": "test/data/dir1"
  },
  "dir2": {
    "children": {
      "dir3": { "children": { }, "type": "directory", "full_path": "test/data/dir2/dir3" },
      "file3.js": {
        "children": null,
        "type": "file",
        "full_path": "test/data/dir2/file3.js"
      }
    },
    "type": "directory",
    "full_path": "test/data/dir2"
  },
  "file1.txt": { "children": null, "type": "file", "full_path": "test/data/file1.txt" },
  "file2.txt": { "children": null, "type": "file", "full_path": "test/data/file2.txt" }
}

ruby-file-tree's People

Contributors

omardelarosa avatar

Stargazers

Y. Fred Kim avatar Josh Teneycke avatar Jannik Lorenz avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.