Skip to content

Commit

Permalink
Merge pull request #369 from pterm/367-move-ptermnewtreefromleveledli…
Browse files Browse the repository at this point in the history
…st-to-putils
  • Loading branch information
MarvinJWendt committed Jun 14, 2022
2 parents c6e08e8 + 51d733e commit 3771338
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 39 deletions.
3 changes: 2 additions & 1 deletion _examples/tree/demo/main.go
Expand Up @@ -2,6 +2,7 @@ package main

import (
"github.com/pterm/pterm"
"github.com/pterm/pterm/putils"
)

func main() {
Expand Down Expand Up @@ -32,7 +33,7 @@ func main() {
}

// Generate tree from LeveledList.
root := pterm.NewTreeFromLeveledList(leveledList)
root := putils.NewTreeFromLeveledList(leveledList)

// Render TreePrinter
pterm.DefaultTree.WithRoot(root).Render()
Expand Down
40 changes: 40 additions & 0 deletions deprecated.go
Expand Up @@ -77,3 +77,43 @@ func NewBulletListItemFromString(text string, padding string) BulletListItem {
func NewBulletListFromString(s string, padding string) BulletListPrinter {
return NewBulletListFromStrings(strings.Split(s, "\n"), padding)
}

// NewTreeFromLeveledList converts a TreeItems list to a TreeNode and returns it.
//
// Deprecated: use putils.NewTreeFromLeveledList instead.
func NewTreeFromLeveledList(leveledListItems LeveledList) TreeNode {
if len(leveledListItems) == 0 {
return TreeNode{}
}

root := &TreeNode{
Children: []TreeNode{},
Text: leveledListItems[0].Text,
}

for i, record := range leveledListItems {
last := root

if record.Level < 0 {
record.Level = 0
leveledListItems[i].Level = 0
}

if len(leveledListItems)-1 != i {
if leveledListItems[i+1].Level-1 > record.Level {
leveledListItems[i+1].Level = record.Level + 1
}
}

for i := 0; i < record.Level; i++ {
lastIndex := len(last.Children) - 1
last = &last.Children[lastIndex]
}
last.Children = append(last.Children, TreeNode{
Children: []TreeNode{},
Text: record.Text,
})
}

return *root
}
41 changes: 41 additions & 0 deletions putils/new_tree_from_leveled_list.go
@@ -0,0 +1,41 @@
package putils

import "github.com/pterm/pterm"

// NewTreeFromLeveledList converts a TreeItems list to a TreeNode and returns it.
func NewTreeFromLeveledList(leveledListItems pterm.LeveledList) pterm.TreeNode {
if len(leveledListItems) == 0 {
return pterm.TreeNode{}
}

root := &pterm.TreeNode{
Children: []pterm.TreeNode{},
Text: leveledListItems[0].Text,
}

for i, record := range leveledListItems {
last := root

if record.Level < 0 {
record.Level = 0
leveledListItems[i].Level = 0
}

if len(leveledListItems)-1 != i {
if leveledListItems[i+1].Level-1 > record.Level {
leveledListItems[i+1].Level = record.Level + 1
}
}

for i := 0; i < record.Level; i++ {
lastIndex := len(last.Children) - 1
last = &last.Children[lastIndex]
}
last.Children = append(last.Children, pterm.TreeNode{
Children: []pterm.TreeNode{},
Text: record.Text,
})
}

return *root
}
38 changes: 0 additions & 38 deletions tree_printer.go
Expand Up @@ -153,41 +153,3 @@ func walkOverTree(list []TreeNode, p TreePrinter, prefix string) string {
}
return ret
}

// NewTreeFromLeveledList converts a TreeItems list to a TreeNode and returns it.
func NewTreeFromLeveledList(leveledListItems LeveledList) TreeNode {
if len(leveledListItems) == 0 {
return TreeNode{}
}

root := &TreeNode{
Children: []TreeNode{},
Text: leveledListItems[0].Text,
}

for i, record := range leveledListItems {
last := root

if record.Level < 0 {
record.Level = 0
leveledListItems[i].Level = 0
}

if len(leveledListItems)-1 != i {
if leveledListItems[i+1].Level-1 > record.Level {
leveledListItems[i+1].Level = record.Level + 1
}
}

for i := 0; i < record.Level; i++ {
lastIndex := len(last.Children) - 1
last = &last.Children[lastIndex]
}
last.Children = append(last.Children, TreeNode{
Children: []TreeNode{},
Text: record.Text,
})
}

return *root
}

0 comments on commit 3771338

Please sign in to comment.