0.0
No commit activity in last 3 years
No release in over 3 years
Stringify trees in a fashion similar the output known from the unix tool 'tree'
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

Build Status Test Coverage Code Climate

TreeOutline

Use TreeOutline to stringify trees. It uses characters from the extended ASCII character encoding to make them the most beautiful they can be.

The style the tree is formatted in is similar to the way the unix tool tree outputs the the tree of a directory.

Installation

Add this line to your application's Gemfile:

gem 'tree_outline'

And then execute:

$ bundle

Or install it yourself as:

$ gem install tree_outline

Usage

All you need is a recursive datastructure such as the below Node class. It contains the attribute children, which is an enumeration of Nodes as well. The to_s method is called to stringify a node itself.

require 'tree_outline'

class Node
  attr_reader :name, :children

  def initialize(name, children = [])
    @name = name
    @children = children
  end

  alias_method :to_s, :name
end

my_tree = Node.new('root', [
  Node.new('first'),
  Node.new('second'),
  Node.new('third')
])

puts TreeOutline.new(my_tree).to_s
# root
# ├── first
# ├── second
# └── third

Side-Note

When implementing we noticed that this also makes a interesting, good (and hard) kata. Try implementing it and see for yourself.

Development

After checking out the repo, run bin/setup to install dependencies. Then, run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, git tag for the version, push git commits and tags. Travis CI then runs the tests and when passed automatically pushes the new gem to rubygems.org.

Contributing

  1. Fork it ( https://github.com/[my-github-username]/tree_outline/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request