RassKey: R(uby) ASCII library

RassKey provides a few simple ASCII helpers for Ruby. Since this is the first release, the current functionality is fairly limited:

  • RassKey::Box
  • String#to_box helper

RassKey::Box

RassKey::Box is a pretty basic ASCII box creator. It was designed to draw a box around a string. The primary use case was simple ASCII Visio-style charts.

Currently RassKey accepts two options describing the box:

  • padding
  • glyph

These can either be set via an options hash passed to the draw method or as setters:

>> require 'rasskey'
=> true
>> mybox = RassKey::Box.new :padding => 10, :glyph => "#"
=> #<RassKey::Box:0x7eff41e181f0 @padding=10, @glyph="#">
>> puts mybox.draw("This is a sample text")
###########################################
#                                         #
#                                         #
#                                         #
#                                         #
#                                         #
#          This is a sample text          #
#                                         #
#                                         #
#                                         #
#                                         #
#                                         #
###########################################
>> mybox.padding = 5
=> 5
>> mybox.glyph = "*"
=> "*"
>> puts mybox.draw("This is a sample text again")
***************************************
*                                     *
*                                     *
*     This is a sample text again     *
*                                     *
*                                     *
***************************************

String#to_box

You can also use it as a String method:

>> require 'rasskey'
=> true
>> mystr = "foobarbaz"
=> "foobarbaz"
>> puts mystr.to_box
*************
* foobarbaz *
*************
=> nil
>> puts mystr.to_box :padding => 12, :glyph => "%"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                 %
%                                 %
%                                 %
%                                 %
%                                 %
%                                 %
%            foobarbaz            %
%                                 %
%                                 %
%                                 %
%                                 %
%                                 %
%                                 %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

TODO

  • Tests
  • Get attr_accessors working for String helper
  • Get LICENSE headers and rdoc in place
  • Work on allowing multi-char glyphs
  • Word-wrapping for text
  • Other "shapes"
  • Custom elements (like say captions)
  • Draw links between shapes
  • Some type of canvas and auto-positioning