Added generateDirectoryTree()
This function which generates a Directory Tree from a given path string for e.g if the String that is given is "home/what/dir" , "home/hello/foo" then it will return a FileNode ( Struct ) which looks like this head{ [{ [ { [ { [] dir } ] what }, { [ { [] foo } ] hello } ] home }] "root" }
This commit is contained in:
parent
94e86335b2
commit
99e0e8e615
@ -2,6 +2,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"strings"
|
"strings"
|
||||||
|
"fmt"
|
||||||
)
|
)
|
||||||
|
|
||||||
type FileNode struct{
|
type FileNode struct{
|
||||||
@ -19,29 +20,32 @@ func (f *FileNode) addChildNode(m FileNode){
|
|||||||
f.children = append(f.children, m)
|
f.children = append(f.children, m)
|
||||||
}
|
}
|
||||||
|
|
||||||
func mapGenerator(fileList [] string) map[string][]string {
|
func generateDirectoryTree(path [] string) *FileNode{
|
||||||
var a map[string][]string = make(map[string][]string)
|
|
||||||
for i := range(fileList){
|
|
||||||
a[strings.Split(fileList[i] , "/")[0]] = append(a[strings.Split(fileList[i] , "/")[0]], strings.Split(fileList[i] , "/")[1])
|
|
||||||
}
|
|
||||||
return a
|
|
||||||
}
|
|
||||||
|
|
||||||
func generateDirectoryTree(fileList [] string) *FileNode{
|
|
||||||
var head *FileNode = new(FileNode)
|
var head *FileNode = new(FileNode)
|
||||||
for i:=0; i<len(fileList) ; i++ {
|
var head1 *FileNode = head
|
||||||
separatedPaths := strings.Split(fileList [i] , "/")
|
for i := range(path){
|
||||||
var currentNode *FileNode = new(FileNode)
|
sepPaths := strings.Split(path[i], "/")
|
||||||
tempNode := currentNode
|
for j := range(sepPaths){
|
||||||
for j := range(separatedPaths) {
|
if(len(head.children) == 0){
|
||||||
if j != (len(separatedPaths)-1) {
|
head.addChildren(sepPaths[j])
|
||||||
tempNode.addChildren(separatedPaths[j])
|
head = &(head.children[len(head.children) - 1])
|
||||||
tempNode = &tempNode.children[0]
|
} else {
|
||||||
} else{
|
var headIsChanged = false
|
||||||
tempNode.addChildren(separatedPaths[j])
|
for k := range(head.children){
|
||||||
|
if head.children[k].path == sepPaths[j] {
|
||||||
|
head = &(head.children[k])
|
||||||
|
headIsChanged = true
|
||||||
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
head.addChildNode(*currentNode)
|
if(!headIsChanged){
|
||||||
|
head.addChildren(sepPaths[j])
|
||||||
|
head = &(head.children[len(head.children) - 1])
|
||||||
}
|
}
|
||||||
return head;
|
}
|
||||||
|
}
|
||||||
|
head = head1
|
||||||
|
}
|
||||||
|
fmt.Println(head)
|
||||||
|
return head
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user