From 0f9f452f9617310f8cfd99ab175eec0d673030da Mon Sep 17 00:00:00 2001 From: Tobias Krischer Date: Sat, 15 Apr 2017 15:46:54 +0200 Subject: [PATCH 1/2] fix wring unicode char --- gotree.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gotree.go b/gotree.go index 9783a99..5f41374 100644 --- a/gotree.go +++ b/gotree.go @@ -59,7 +59,7 @@ func printLine(name string, spaces []bool, last bool) { if space { fmt.Print(" ") } else { - fmt.Print("| ") + fmt.Print("│ ") } } From 7266dbf13dee4683ccdccfd55bfe01e1bd45cb11 Mon Sep 17 00:00:00 2001 From: Tobias Krischer Date: Sat, 15 Apr 2017 15:55:30 +0200 Subject: [PATCH 2/2] add toString methods --- gotree.go | 78 ++++++++++++++++++++++++++----------------------------- 1 file changed, 37 insertions(+), 41 deletions(-) diff --git a/gotree.go b/gotree.go index 5f41374..53a49de 100644 --- a/gotree.go +++ b/gotree.go @@ -12,14 +12,46 @@ type GTStructure struct { Items []GTStructure } -/*PrintTree - Print the tree in console */ -func PrintTree(object GTStructure) { +func StringTree(object GTStructure) (result string) { + result += object.Name + "\n" + var spaces []bool + result += stringObjItems(object.Items, spaces) + return +} - fmt.Println(object.Name) +func stringLine(name string, spaces []bool, last bool) (result string) { + for _, space := range spaces { + if space { + result += " " + } else { + result += "│ " + } + } - var spaces []bool + indicator := "├── " + if last { + indicator = "└── " + } - readObjItems(object.Items, spaces) + result += indicator + name + "\n" + return +} + +func stringObjItems(items []GTStructure, spaces []bool) (result string) { + for i, f := range items { + last := (i >= len(items)-1) + result += stringLine(f.Name, spaces, last) + if len(f.Items) > 0 { + spacesChild := append(spaces, last) + result += stringObjItems(f.Items, spacesChild) + } + } + return +} + +/*PrintTree - Print the tree in console */ +func PrintTree(object GTStructure) { + fmt.Println(StringTree(object)) } /*ReadFolder - Read a folder and return the generated object */ @@ -52,39 +84,3 @@ func createGTReadFolder(directory string) []GTStructure { } return items } - -func printLine(name string, spaces []bool, last bool) { - - for _, space := range spaces { - if space { - fmt.Print(" ") - } else { - fmt.Print("│ ") - } - } - - indicator := "├── " - - if last { - indicator = "└── " - } - - fmt.Println(indicator + name) - -} - -func readObjItems(items []GTStructure, spaces []bool) { - - for i, f := range items { - - last := (i >= len(items)-1) - - printLine(f.Name, spaces, last) - if len(f.Items) > 0 { - - spacesChild := append(spaces, last) - - readObjItems(f.Items, spacesChild) - } - } -}