Box CLI Maker is a Highly Customized Terminal Box Creator.
- Make Terminal Box in 8οΈβ£ inbuilt different styles
- 16 Inbuilt Colors and Custom (24 bit) Colors Support π¨
- Custom Title Positions
- Make your own Terminal Box style π¦
- Align the text according to the need
- Unicode, Emoji and Windows Console Support π
- Written in π¬ π΄
go get github.com/Delta456/box-cli-maker
In main.go
package main
import "github.com/Delta456/box-cli-maker/v2"
func main() {
Box := box.New(box.Config{Px: 2, Py: 5, Type: "Single", Color: "Cyan"})
Box.Print("Box CLI Maker", "Highly Customized Terminal Box Maker")
}
box.New(config Config)
accepts a Config struct
with following parameters and returns a Box struct
.
- Parameters
Px
: Horizontal PaddingPy
: Vertical PaddingContentAlign
: Align the content inside the Box i.e.Center
,Left
andRight
Type
: Type of Box (by default it's Single) click this for more infoTitlePos
: Position of the Title i.e.Inside
,Top
andBottom
click this for more infoColor
: Color of the Box click this for more info
Box.Print(title, lines string)
prints Box from the specified arguments.
- Parameters
title
: Title of the Boxlines
: Content to be written inside the Box
Box.Println(title, lines string)
prints Box in a newline from the specified arguments.
- Parameters
title
: Title of the Boxlines
: Content to be written inside the Box
Box.String(title, lines string) string
return string
representation of Box.
- Parameters
title
: Title of the Boxlines
: Content to be written inside the Box
Single
Single Double
Double
Double Single
Bold
Round
Hidden
Classic
Inside
Top
Bottom
You can make your custom Box by using the inbuilt Box struct provided by the module.
type Box struct {
TopRight string // TopRight corner used for Symbols
TopLeft string // TopLeft corner used for Symbols
Vertical string // Symbols used for Vertical Bars
BottomRight string // BottomRight corner used for Symbols
BottomLeft string // BotromLeft corner used for Symbols
Horizontal string // Symbols used for Horizontal Bars
Config // Configuration for the Box to be made
}
Using it:
package main
import "github.com/Delta456/box-cli-maker/v2"
func main() {
config := box.Config{Px: 2, Py: 3, Type: "", TitlePos: "Inside"}
boxNew := box.Box{TopRight: "*", TopLeft: "*", BottomRight: "*", BottomLeft: "*", Horizontal: "-", Vertical: "|", Config: config}
boxNew.Print("Box CLI Maker", "Make Highly Customized Terminal Boxes")
}
Output:
It has color support from fatih/color module from which this module uses FgColor
and FgHiColor
. Color
is a key for the following maps:
var fgColors = map[string]color.Attribute{
"Black": color.FgBlack,
"Blue": color.FgBlue,
"Red": color.FgRed,
"Green": color.FgGreen,
"Yellow": color.FgYellow,
"Cyan": color.FgCyan,
"Magenta": color.FgMagenta,
}
var fgHiColors = map[string]color.Attribute{
"HiBlack": color.FgHiBlack,
"HiBlue": color.FgHiBlue,
"HiRed": color.FgHiRed,
"HiGreen": color.FgHiGreen,
"HiYellow": color.FgHiYellow,
"HiCyan": color.FgHiCyan,
"HiMagenta": color.FgHiMagenta,
}
If you want High Intensity Colors then the Color name should start with Hi
. If Color option is empty or invalid then Box with default Color is formed.
It can even have custom color which can be provided in [3]uint
and uint
though the elements of the array must be in a range of [0x0, 0xFF]
and uint
must be in a range of [0x000000, 0xFFFFFF]
.
If you want to use the string representation of the Box
and print them for Windows Console
then you would have to use box.Output
as the passing stream to the respective functions.
Windows Console
is 4 bit (16 colors) so Custom Colors will not work for them but the Box
will be printed correctly without the Color effect.
As different terminals have different font by default so the right vertical alignment may not be aligned well. You will have to change your font accordingly to make it work.
It uses mattn/go-runewidth for Unicode and Emoji support though there are some limitations:
Windows Terminal
andWindows System Linux
are the only know terminals which can render Unicode and Emojis properly on Windows.- Marathi Text only works on very few Terminals as less support it.
- It is recommended not to use Online Playgrounds like
Go Playground
andRepl.it
because they use a font that only has ASCII support and other Character Set is used which becomes problematic for finding the length as the font changes during runtime. - Change your font which supports Unicode and Emojis else the right vertical alignment will break.
I thank the following people and their packages whom I have studied and was able to port to Go accordingly.
Special thanks to @elimsteve who helped me to optimize the code and told me the best possible ways to fix my problems and @JalonSolov for tab lines support.
Kudos to moul/golang-repo-template for their Go template.
- boxcli : Port of this module in Python by NightShade256.
Licensed under MIT