8000 ✨ Cleanup code by OussamaM1 · Pull Request #39 · OussamaM1/treels · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

✨ Cleanup code #39

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 18 additions & 22 deletions service/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,10 @@ package service

import (
"fmt"
"github.com/oussamaM1/treels/module"
"log"
"os"
"path/filepath"
"sort"

"github.com/oussamaM1/treels/module"
)

const (
Expand Down Expand Up @@ -39,10 +37,8 @@ func listDirectory(options module.Options) {
log.Fatalf("Error reading directory: %s\n", err)
}

// Sort files by name
sort.Slice(files, func(i, j int) bool {
return files[i].Name() < files[j].Name()
})
// sort files by name
sortSlice(files)

// Print files and directories
for _, file := range files {
Expand All @@ -68,21 +64,30 @@ func treeDirectory(options module.Options, indent string, isLastFolder bool) {
}

// Sort files by name
sort.Slice(files, func(i, j int) bool {
return files[i].Name() < files[j].Name()
})
sortSlice(files)

// Print files and directories
printFilesAndDirectoriesTreeFormat(files, options, indent, isLastFolder)
}

func getLastVisibleIndex(files []os.FileInfo, showHidden bool) int {
for i := len(files) - 1; i >= 0; i-- {
if !isHidden(files[i].Name()) || showHidden {
return i
}
}
return -1
}

// printFilesAndDirectoriesTreeFormat - prints files and directories in tree format
func printFilesAndDirectoriesTreeFormat(files []os.FileInfo, options module.Options, indent string, isLastFolder bool) {
lastVisibleIndex := getLastVisibleIndex(files, options.Flags.ShowHidden)
for i, file := range files {
if !isHidden(file.Name()) || options.Flags.ShowHidden {
var prefix, childIndentNext string
if i == lastVisibleIndex && isLastFolder {
prefix = indent + boxUpAndRight
childIndentNext = indent + whiteSpaces
} else if i == lastVisibleIndex {
prefix = indent + boxUpAndRight
childIndentNext = indent + whiteSpaces
} else {
prefix = indent + boxLightVerticalAndRight
childIndentNext = indent + boxLightVertical
Expand All @@ -102,12 +107,3 @@ func treeDirectory(options module.Options, indent string, isLastFolder bool) {
}
}
}

func getLastVisibleIndex(files []os.FileInfo, showHidden bool) int {
for i := len(files) - 1; i >= 0; i-- {
if !isHidden(files[i].Name()) || showHidden {
return i
}
}
return -1
}
40 changes: 28 additions & 12 deletions service/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,16 @@ import (
"github.com/oussamaM1/treels/module"
"log"
"os"
"sort"
"strings"
)

// Define constant for formatting
const (
IconFileFormat = "%s%s%s %s%s"
IconFolderFormat = "%s%s%s%s %s%s"
)

// CheckDefaultDirectory func - returns current working directory if no directory is specified
func CheckDefaultDirectory(directory *string) {
if *directory == "" {
Expand Down Expand Up @@ -97,23 +104,23 @@ func printIconFiles(prefix string, file os.FileInfo, extension string) string {
var format string
switch extension {
case module.Go, module.Mod, module.Sum:
format = fmt.Sprintf("%s%s%s %s%s", prefix, module.LightBlue, module.GoLang, module.Reset, file.Name())
format = fmt.Sprintf(IconFileFormat, prefix, module.LightBlue, module.GoLang, module.Reset, file.Name())
case module.Md:
format = fmt.Sprintf("%s%s%s %s%s", prefix, module.Grey, module.Markdown, module.Reset, file.Name())
format = fmt.Sprintf(IconFileFormat, prefix, module.Grey, module.Markdown, module.Reset, file.Name())
case module.Gitignore:
format = fmt.Sprintf("%s%s%s %s%s", prefix, module.Orange, module.Git, module.Reset, file.Name())
format = fmt.Sprintf(IconFileFormat, prefix, module.Orange, module.Git, module.Reset, file.Name())
case module.JSON:
format = fmt.Sprintf("%s%s%s %s%s", prefix, module.Yellow, module.JSONIcon, module.Reset, file.Name())
format = fmt.Sprintf(IconFileFormat, prefix, module.Yellow, module.JSONIcon, module.Reset, file.Name())
case module.Yml, module.Yaml:
format = fmt.Sprintf("%s%s%s %s%s", prefix, module.LightGreen, module.YamlIcon, module.Reset, file.Name())
format = fmt.Sprintf(IconFileFormat, prefix, module.LightGreen, module.YamlIcon, module.Reset, file.Name())
case module.Pls, module.Plb, module.SQL:
format = fmt.Sprintf("%s%s%s %s%s", prefix, module.Red, module.Database, module.Reset, file.Name())
format = fmt.Sprintf(IconFileFormat, prefix, module.Red, module.Database, module.Reset, file.Name())
case module.Java, module.Class:
format = fmt.Sprintf("%s%s%s %s%s", prefix, module.LightRed, module.JavaLang, module.Reset, file.Name())
format = fmt.Sprintf(IconFileFormat, prefix, module.LightRed, module.JavaLang, module.Reset, file.Name())
case module.Cpp:
format = fmt.Sprintf("%s%s%s %s%s", prefix, module.LightBlue, module.CppLang, module.Reset, file.Name())
format = fmt.Sprintf(IconFileFormat, prefix, module.LightBlue, module.CppLang, module.Reset, file.Name())
case module.C:
format = fmt.Sprintf("%s%s%s %s%s", prefix, module.LightBlue, module.CLang, module.Reset, file.Name())
format = fmt.Sprintf(IconFileFormat, prefix, module.LightBlue, module.CLang, module.Reset, file.Name())
default:
format = fmt.Sprintf("%s%s %s", prefix, module.File, file.Name())
}
Expand All @@ -125,11 +132,11 @@ func printIconFolders(prefix string, file os.FileInfo, extension string) string
var format string
switch extension {
case module.Github, module.GitFolder:
format = fmt.Sprintf("%s%s%s%s %s%s", prefix, module.Bold, module.Orange, module.Git, file.Name(), module.Reset)
format = fmt.Sprintf(IconFolderFormat, prefix, module.Bold, module.Orange, module.Git, file.Name(), module.Reset)
case module.IntellijFolder:
format = fmt.Sprintf("%s%s%s%s %s%s", prefix, module.Bold, module.LightBlue, module.Intellij, file.Name(), module.Reset)
format = fmt.Sprintf(IconFolderFormat, prefix, module.Bold, module.LightBlue, module.Intellij, file.Name(), module.Reset)
default:
format = fmt.Sprintf("%s%s%s%s %s%s", prefix, module.Bold, module.Pink, module.Folder, file.Name(), module.Reset)
format = fmt.Sprintf(IconFolderFormat, prefix, module.Bold, module.Pink, module.Folder, file.Name(), module.Reset)
}
return format
}
Expand All @@ -144,3 +151,12 @@ func printFilesAndFolderWithoutIcons(prefix string, file os.FileInfo) string {
}
return format
}

// sortSlice func - sorts a slice of os.FileInfo objects alphabetically by file name.
// It modifies the original slice in place.
func sortSlice(files []os.FileInfo) {
// Sort files by name
sort.Slice(files, func(i, j int) bool {
return files[i].Name() < files[j].Name()
})
}
Loading
0