...

Package list

import "github.com/jedib0t/go-pretty/v6/list"
Overview
Index
Examples

Overview ▾

Example

Code:

lw := NewWriter()
// append a tree
lw.AppendItem("George. R. R. Martin")
lw.Indent()
lw.AppendItem("A Song of Ice and Fire")
lw.Indent()
lw.AppendItems([]interface{}{
    "Arya Stark",
    "Bran Stark",
    "Rickon Stark",
    "Robb Stark",
    "Sansa Stark",
    "Jon Snow",
})
lw.UnIndent()
lw.UnIndent()
// append another tree
lw.AppendItem("Stephen King")
lw.Indent()
lw.AppendItem("The Dark Tower")
lw.Indent()
lw.AppendItems([]interface{}{
    "Jake Chambers",
    "Randal Flagg",
    "Roland Deschain",
})
lw.UnIndent()
lw.AppendItem("the shawshank redemption")
lw.Indent()
lw.AppendItems([]interface{}{
    "andy dufresne",
    "byron hadley",
    "ellis boyd redding",
    "samuel norton",
})
// customize rendering
lw.SetStyle(StyleConnectedLight)
lw.Style().CharItemTop = "├"
lw.Style().Format = text.FormatTitle
// render it
fmt.Printf("Simple List:\n%s", lw.Render())

Output:

Simple List:
├ George. R. R. Martin
│  └─ A Song Of Ice And Fire
│     ├─ Arya Stark
│     ├─ Bran Stark
│     ├─ Rickon Stark
│     ├─ Robb Stark
│     ├─ Sansa Stark
│     └─ Jon Snow
└─ Stephen King
   ├─ The Dark Tower
   │  ├─ Jake Chambers
   │  ├─ Randal Flagg
   │  └─ Roland Deschain
   └─ The Shawshank Redemption
      ├─ Andy Dufresne
      ├─ Byron Hadley
      ├─ Ellis Boyd Redding
      └─ Samuel Norton

Constants

const (
    // DefaultHTMLCSSClass stores the css-class to use when none-provided via
    // SetHTMLCSSClass(cssClass string).
    DefaultHTMLCSSClass = "go-pretty-table"
)

Variables

var (
    // StyleDefault renders a List like below:
    //  * Game Of Thrones
    //    * Winter
    //    * Is
    //    * Coming
    //      * This
    //      * Is
    //      * Known
    //  * The Dark Tower
    //    * The Gunslinger
    StyleDefault = Style{
        Format:           text.FormatDefault,
        CharItemSingle:   "*",
        CharItemTop:      "*",
        CharItemFirst:    "*",
        CharItemMiddle:   "*",
        CharItemVertical: "  ",
        CharItemBottom:   "*",
        CharNewline:      "\n",
        LinePrefix:       "",
        Name:             "StyleDefault",
    }

    // StyleBulletCircle renders a List like below:
    //  ● Game Of Thrones
    //    ● Winter
    //    ● Is
    //    ● Coming
    //      ● This
    //      ● Is
    //      ● Known
    //  ● The Dark Tower
    //    ● The Gunslinger
    StyleBulletCircle = Style{
        Format:           text.FormatDefault,
        CharItemSingle:   "●",
        CharItemTop:      "●",
        CharItemFirst:    "●",
        CharItemMiddle:   "●",
        CharItemVertical: "  ",
        CharItemBottom:   "●",
        CharNewline:      "\n",
        LinePrefix:       "",
        Name:             "StyleBulletCircle",
    }

    // StyleBulletFlower renders a List like below:
    //  ✽ Game Of Thrones
    //    ✽ Winter
    //    ✽ Is
    //    ✽ Coming
    //      ✽ This
    //      ✽ Is
    //      ✽ Known
    //  ✽ The Dark Tower
    //    ✽ The Gunslinger
    StyleBulletFlower = Style{
        Format:           text.FormatDefault,
        CharItemSingle:   "✽",
        CharItemTop:      "✽",
        CharItemFirst:    "✽",
        CharItemMiddle:   "✽",
        CharItemVertical: "  ",
        CharItemBottom:   "✽",
        CharNewline:      "\n",
        LinePrefix:       "",
        Name:             "StyleBulletFlower",
    }

    // StyleBulletSquare renders a List like below:
    //  ■ Game Of Thrones
    //    ■ Winter
    //    ■ Is
    //    ■ Coming
    //      ■ This
    //      ■ Is
    //      ■ Known
    //  ■ The Dark Tower
    //    ■ The Gunslinger
    StyleBulletSquare = Style{
        Format:           text.FormatDefault,
        CharItemSingle:   "■",
        CharItemTop:      "■",
        CharItemFirst:    "■",
        CharItemMiddle:   "■",
        CharItemVertical: "  ",
        CharItemBottom:   "■",
        CharNewline:      "\n",
        LinePrefix:       "",
        Name:             "StyleBulletSquare",
    }

    // StyleBulletStar renders a List like below:
    //  ★ Game Of Thrones
    //    ★ Winter
    //    ★ Is
    //    ★ Coming
    //      ★ This
    //      ★ Is
    //      ★ Known
    //  ★ The Dark Tower
    //    ★ The Gunslinger
    StyleBulletStar = Style{
        Format:           text.FormatDefault,
        CharItemSingle:   "★",
        CharItemTop:      "★",
        CharItemFirst:    "★",
        CharItemMiddle:   "★",
        CharItemVertical: "  ",
        CharItemBottom:   "★",
        CharNewline:      "\n",
        LinePrefix:       "",
        Name:             "StyleBulletStar",
    }

    // StyleBulletTriangle renders a List like below:
    //  ▶ Game Of Thrones
    //    ▶ Winter
    //    ▶ Is
    //    ▶ Coming
    //      ▶ This
    //      ▶ Is
    //      ▶ Known
    //  ▶ The Dark Tower
    //    ▶ The Gunslinger
    StyleBulletTriangle = Style{
        Format:           text.FormatDefault,
        CharItemSingle:   "▶",
        CharItemTop:      "▶",
        CharItemFirst:    "▶",
        CharItemMiddle:   "▶",
        CharItemVertical: "  ",
        CharItemBottom:   "▶",
        CharNewline:      "\n",
        LinePrefix:       "",
        Name:             "StyleBulletTriangle",
    }

    // StyleConnectedBold renders a List like below:
    //  ┏━ Game Of Thrones
    //  ┃  ┣━ Winter
    //  ┃  ┣━ Is
    //  ┃  ┗━ Coming
    //  ┃     ┣━ This
    //  ┃     ┣━ Is
    //  ┃     ┗━ Known
    //  ┗━ The Dark Tower
    //     ┗━ The Gunslinger
    StyleConnectedBold = Style{
        Format:           text.FormatDefault,
        CharItemSingle:   "━━",
        CharItemTop:      "┏━",
        CharItemFirst:    "┣━",
        CharItemMiddle:   "┣━",
        CharItemVertical: "┃  ",
        CharItemBottom:   "┗━",
        CharNewline:      "\n",
        LinePrefix:       "",
        Name:             "StyleConnectedBold",
    }

    // StyleConnectedDouble renders a List like below:
    //  ╔═ Game Of Thrones
    //  ║  ╠═ Winter
    //  ║  ╠═ Is
    //  ║  ╚═ Coming
    //  ║     ╠═ This
    //  ║     ╠═ Is
    //  ║     ╚═ Known
    //  ╚═ The Dark Tower
    //     ╚═ The Gunslinger
    StyleConnectedDouble = Style{
        Format:           text.FormatDefault,
        CharItemSingle:   "══",
        CharItemTop:      "╔═",
        CharItemFirst:    "╠═",
        CharItemMiddle:   "╠═",
        CharItemVertical: "║  ",
        CharItemBottom:   "╚═",
        CharNewline:      "\n",
        LinePrefix:       "",
        Name:             "StyleConnectedDouble",
    }

    // StyleConnectedLight renders a List like below:
    //  ┌─ Game Of Thrones
    //  │  ├─ Winter
    //  │  ├─ Is
    //  │  └─ Coming
    //  │     ├─ This
    //  │     ├─ Is
    //  │     └─ Known
    //  └─ The Dark Tower
    //     └─ The Gunslinger
    StyleConnectedLight = Style{
        Format:           text.FormatDefault,
        CharItemSingle:   "──",
        CharItemTop:      "┌─",
        CharItemFirst:    "├─",
        CharItemMiddle:   "├─",
        CharItemVertical: "│  ",
        CharItemBottom:   "└─",
        CharNewline:      "\n",
        LinePrefix:       "",
        Name:             "StyleConnectedLight",
    }

    // StyleConnectedRounded renders a List like below:
    //  ╭─ Game Of Thrones
    //  │  ├─ Winter
    //  │  ├─ Is
    //  │  ╰─ Coming
    //  │     ├─ This
    //  │     ├─ Is
    //  │     ╰─ Known
    //  ╰─ The Dark Tower
    //     ╰─ The Gunslinger
    StyleConnectedRounded = Style{
        Format:           text.FormatDefault,
        CharItemSingle:   "──",
        CharItemTop:      "╭─",
        CharItemFirst:    "├─",
        CharItemMiddle:   "├─",
        CharItemVertical: "│  ",
        CharItemBottom:   "╰─",
        CharNewline:      "\n",
        LinePrefix:       "",
        Name:             "StyleConnectedRounded",
    }

    // StyleMarkdown renders a List like below:
    //    * Game Of Thrones
    //      * Winter
    //      * Is
    //      * Coming
    //        * This
    //        * Is
    //        * Known
    //    * The Dark Tower
    //      * The Gunslinger
    StyleMarkdown = Style{
        Format:           text.FormatDefault,
        CharItemSingle:   "*",
        CharItemTop:      "*",
        CharItemFirst:    "*",
        CharItemMiddle:   "*",
        CharItemVertical: "  ",
        CharItemBottom:   "*",
        CharNewline:      "<br/>",
        LinePrefix:       "  ",
        Name:             "StyleMarkdown",
    }
)

type List

List helps print a 2-dimensional array in a human readable pretty-List.

type List struct {
    // contains filtered or unexported fields
}

func (*List) AppendItem

func (l *List) AppendItem(item interface{})

AppendItem appends the item to the List of items to render.

func (*List) AppendItems

func (l *List) AppendItems(items []interface{})

AppendItems appends the items to the List of items to render.

func (*List) Indent

func (l *List) Indent()

Indent indents the following items to appear right-shifted.

func (*List) Length

func (l *List) Length() int

Length returns the number of items to be rendered.

func (*List) Render

func (l *List) Render() string

Render renders the List in a human-readable "pretty" format. Example:

func (*List) RenderHTML

func (l *List) RenderHTML() string

RenderHTML renders the List in the HTML format. Example:

<ul class="go-pretty-table">
  <li>Game Of Thrones</li>
  <ul class="go-pretty-table-1">
    <li>Winter</li>
    <li>Is</li>
    <li>Coming</li>
    <ul class="go-pretty-table-2">
      <li>This</li>
      <li>Is</li>
      <li>Known</li>
    </ul>
  </ul>
  <li>The Dark Tower</li>
  <ul class="go-pretty-table-1">
    <li>The Gunslinger</li>
  </ul>
</ul>

func (*List) RenderMarkdown

func (l *List) RenderMarkdown() string

RenderMarkdown renders the List in the Markdown format. Example:

func (*List) Reset

func (l *List) Reset()

Reset sets the List to its initial state.

func (*List) SetHTMLCSSClass

func (l *List) SetHTMLCSSClass(cssClass string)

SetHTMLCSSClass sets the the HTML CSS Class to use on the <ul> node when rendering the List in HTML format. Recursive lists would use a numbered index suffix. For ex., if the cssClass is set as "foo"; the <ul> for level 0 would have the class set as "foo"; the <ul> for level 1 would have "foo-1".

func (*List) SetOutputMirror

func (l *List) SetOutputMirror(mirror io.Writer)

SetOutputMirror sets an io.Writer for all the Render functions to "Write" to in addition to returning a string.

func (*List) SetStyle

func (l *List) SetStyle(style Style)

SetStyle overrides the DefaultStyle with the provided one.

func (*List) Style

func (l *List) Style() *Style

Style returns the current style.

func (*List) UnIndent

func (l *List) UnIndent()

UnIndent un-indents the following items to appear left-shifted.

func (*List) UnIndentAll

func (l *List) UnIndentAll()

type Style

Style declares how to render the List (items).

type Style struct {
    Format           text.Format // formatting for the Text
    CharItemSingle   string      // the bullet for a single-item list
    CharItemTop      string      // the bullet for the top-most item
    CharItemFirst    string      // the bullet for the first item
    CharItemMiddle   string      // the bullet for non-first/non-last item
    CharItemVertical string      // the vertical connector from one bullet to the next
    CharItemBottom   string      // the bullet for the bottom-most item
    CharNewline      string      // new-line character to use
    LinePrefix       string      // prefix for every single line
    Name             string      // name of the Style
}

type Writer

Writer declares the interfaces that can be used to setup and render a list.

type Writer interface {
    AppendItem(item interface{})
    AppendItems(items []interface{})
    Indent()
    Length() int
    Render() string
    RenderHTML() string
    RenderMarkdown() string
    Reset()
    SetHTMLCSSClass(cssClass string)
    SetOutputMirror(mirror io.Writer)
    SetStyle(style Style)
    Style() *Style
    UnIndent()
    UnIndentAll()
}

func NewWriter

func NewWriter() Writer

NewWriter initializes and returns a Writer.