MCPcopy Create free account
hub / github.com/cogentcore/core / dirFileList

Method dirFileList

filetree/node.go:286–325  ·  view source on GitHub ↗

dirFileList returns the list of files in this directory, sorted according to DirsOnTop and SortByModTime options

()

Source from the content-addressed store, hash-verified

284// dirFileList returns the list of files in this directory,
285// sorted according to DirsOnTop and SortByModTime options
286func (fn *Node) dirFileList() []os.FileInfo {
287 path := string(fn.Filepath)
288 var files []os.FileInfo
289 var dirs []os.FileInfo // for DirsOnTop mode
290 filepath.Walk(path, func(pth string, info os.FileInfo, err error) error {
291 if err != nil {
292 emsg := fmt.Sprintf("filetree.Node DirFileList Path %q: Error: %v", path, err)
293 log.Println(emsg)
294 return nil // ignore
295 }
296 if pth == path { // proceed..
297 return nil
298 }
299 if fn.FileRoot.DirsOnTop {
300 if info.IsDir() {
301 dirs = append(dirs, info)
302 } else {
303 files = append(files, info)
304 }
305 } else {
306 files = append(files, info)
307 }
308 if info.IsDir() {
309 return filepath.SkipDir
310 }
311 return nil
312 })
313 doModSort := fn.FileRoot.dirSortByModTime(core.Filename(path))
314 if fn.FileRoot.DirsOnTop {
315 if doModSort {
316 sortByModTime(files) // just sort files, not dirs
317 }
318 files = append(dirs, files...)
319 } else {
320 if doModSort {
321 sortByModTime(files)
322 }
323 }
324 return files
325}
326
327func sortByModTime(files []os.FileInfo) {
328 slices.SortFunc(files, func(a, b os.FileInfo) int {

Callers 1

InitMethod · 0.95

Calls 5

FilenameTypeAlias · 0.92
sortByModTimeFunction · 0.85
PrintlnMethod · 0.80
dirSortByModTimeMethod · 0.80
IsDirMethod · 0.45

Tested by

no test coverage detected