struct Grid
- Grid
- Struct
- Value
- Object
Overview
Grid is a simple string grid formatter library for crystal programming language.
Example:
grid = Grid.new("Rubys Crystals Emeralds Sapphires a b") # Create a new Grid instance
grid.auto(18, true) # generate top-down grid with 18 char as max canvas width
grid.to_s(true) # get the string format (true) in top-down direction
# Rubys Sapphires
# Crystals a
# Emeralds b
grid.auto(18, false) # generate left-right grid with 18 char as max canvas width
grid.to_s(false) # get the string format (false) in left-right direction
# Rubys Crystals
# Emeralds Sapphires
# a b
grid = Grid.new("Rubys Crystals Emeralds Sapphires a b", "|") # Create a new Grid instance with custom separator
grid.auto(18, true) # generate left-right grid with 18 char as max canvas width
grid.to_s(true, false) # get the string format (true) in top-down direction (false) align-right
# Rubys|Sapphires
# Crystals| a
# Emeralds| b
Included Modules
Defined in:
grid.crConstant Summary
-
VERSION =
"0.1.1"
Constructors
-
.new(list : Array(String), separator : String = " ")
Initialize grid list with type of
Array(String)as a input parameter. -
.new(str : String = "", separator : String = " ")
Initialize grid list with type of
Stringas a input parameter.
Instance Method Summary
-
#auto(max_w : Int32 = 24, top_down : Bool = true)
Generate the virtual canvas based on the current @list and specified max width.
-
#delimiter_count_of(col_count : Int32) : Int32
Count the delimiter of specified column count.
-
#list : Array(String)
Holds the list of String from the user.
-
#list=(str : String)
Set the list from a string.
-
#list=(list : Array(String))
Set the list from an Array().
-
#max_width : Int32
Holds the max width of the canvas.
-
#max_width=(max_width : Int32)
Holds the max width of the canvas.
-
#separator : String
Holds the separator specified by the user.
-
#to_s(top_down : Bool = true, align_left : Bool = true, sep : String = @separator) : String
Convert all elements in canvas to a single string using
String#build.
Instance methods inherited from module TopDown
canvas_td : Array(Array(String))
canvas_td,
canvas_td=(canvas_td : Array(Array(String)))
canvas_td=,
col_width_td : Array(Int32)
col_width_td,
col_width_td=(col_width_td : Array(Int32))
col_width_td=,
one_column_td : Array(Array(String))
one_column_td,
virtual_column_width_td(col_size : Int32) : Array(Int32)
virtual_column_width_td
Instance methods inherited from module LeftRight
canvas_lr : Array(Array(String))
canvas_lr,
canvas_lr=(canvas_lr : Array(Array(String)))
canvas_lr=,
col_width_lr : Array(Int32)
col_width_lr,
col_width_lr=(col_width_lr : Array(Int32))
col_width_lr=,
one_column_lr : Array(Array(String))
one_column_lr,
virtual_column_width_lr(row_size : Int32) : Array(Int32)
virtual_column_width_lr
Constructor Detail
Initialize grid list with type of Array(String) as a input parameter.
Example:
grid = Grid.new(["Ruby", "Crystal", "Emerald", "Sapphire"])
grid = Grid.new() # produce empty string
grid = Grid.new(["Ruby", "Crystal", "Emerald", "Sapphire"], " | ") # with custom separator
Initialize grid list with type of String as a input parameter.
Example:
grid = Grid.new("Ruby Crystal Emerald Sapphire")
grid = Grid.new() # produce empty list
grid = Grid.new("Ruby Crystal Emerald Sapphire", " | ") # with custom separator
Instance Method Detail
Generate the virtual canvas based on the current @list and specified max width. The max width default value is 24. The second parameter top_down specified the direction of item. True if top-down and false if left-right.
Example:
grid = Grid.new("Rubys Crystals Emeralds Sapphires a b") # Create a new Grid instance
grid.auto(18, true) # generate top-down grid with 18 char as max canvas width
# => [["Rubys", "Crystals", "Emeralds"], ["Sapphires", "a", "b"]]
grid.auto(18, false) # generate left-right grid with 18 char as max canvas width
# => [["Rubys", "Crystals"], ["Emeralds", "Sapphires"], ["a", "b"]]
Count the delimiter of specified column count.
Example:
delimiter_count_of(3) # => 2
delimiter_count_of(7) # => 6
Holds the list of String from the user.
Example:
grid = grid.new("str_1 str_2 str_3")
grid.list # => ["str_1", "str_2", "str_3"]
Set the list from a string.
Example:
grid = grid.new("")
grid.list = "str_1 str_2 str_3"
grid.list # => ["str_1", "str_2", "str_3"]
Set the list from an Array().
Example:
grid = grid.new("")
grid.list = ["str_1", "str_2", "str_3"]
grid.list # => ["str_1", "str_2", "str_3"]
Holds the max width of the canvas.
Its defined by the user.
Default value is 24.
Holds the max width of the canvas.
Its defined by the user.
Default value is 24.
Convert all elements in canvas to a single string using String#build.
The first parameter top_down default is true.
The second parameter align_left default is true.
The third parameter separator default is ' ' (single space) || it follows the separator specified from #auto.
Example:
grid = Grid.new("Rubys Crystals Emeralds Sapphires a b") # Create a new Grid instance
grid.auto(18, true) # generate top-down grid with 18 char as max canvas width
# => [["Rubys", "Crystals", "Emeralds"], ["Sapphires", "a", "b"]]
grid.to_s(true) # get the string format (true) in top-down direction
# Rubys Sapphires
# Crystals a
# Emeralds b
grid.to_s(true, false)
# Rubys Sapphires
# Crystals a
# Emeralds b
grid.auto(18, false) # generate left-right grid with 18 char as max canvas width
# => [["Rubys", "Crystals"], ["Emeralds", "Sapphires"], ["a", "b"]]
grid.to_s(false) # get the string format (false) in left-right direction
# Rubys Crystals
# Emeralds Sapphires
# a b
grid.to_s(false, false)
# Rubys Crystals
# Emeralds Sapphires
# a b
Let's see another example for custom separator.
grid = Grid.new("Rubys Crystals Emeralds Sapphires a b", " | ") grid.auto(20, true) grid.to_s(true, false)
Rubys | Sapphires
Crystals | a
Emeralds | b
grid.to_s(true, false, "---")
Rubys---Sapphires
Crystals--- a
Emeralds--- b
grid.to_s(true, false, "........") # It works even the separator exceed virtual separator size
Rubys...Sapphires
Crystals... a
Emeralds... b