Skip to contents

Pretty-prints a character vector of hierarchical paths as a tree. Uses Unicode box drawing characters to draw the nesting structure.

Usage

draw_path_tree(paths, quiet = FALSE)

Arguments

paths

A character vector of paths as returned by flatten_path_tree() or fs::dir_ls().

quiet

Whether or not to suppress drawing the directory tree.

Value

paths, invisibly.

Details

This function is the equivalent of fs::dir_tree() for an artificial/fictional path hierarchy. To print a tree of an actual filesystem path hierarchy, it's recommended to rely on fs::dir_tree() which additionally colorizes the output based on real filesystem information. Apart from that, the algorithm to draw the tree is the same.

See also

Other path functions: flatten_path_tree(), path_mod_time()

Examples

# using an artificial/fictional path hierarchy
list("root_dir" = list("subdir1",
                       "subdir2" = list("file1.ext"),
                       "file2.ext")) |>
  pal::flatten_path_tree() |>
  pal::draw_path_tree()
#> root_dir
#> ├── subdir1
#> ├── subdir2
#> │   └── file1.ext
#> └── file2.ext

# using an actual path hierarchy
fs::path_package("dplyr") |>
  fs::dir_ls(recurse = TRUE) |>
  pal::draw_path_tree()
#> /home/salim/.software/managed/r/dplyr
#> ├── DESCRIPTION
#> ├── INDEX
#> ├── LICENSE
#> ├── Meta
#> │   ├── Rd.rds
#> │   ├── data.rds
#> │   ├── features.rds
#> │   ├── hsearch.rds
#> │   ├── links.rds
#> │   ├── nsInfo.rds
#> │   ├── package.rds
#> │   └── vignette.rds
#> ├── NAMESPACE
#> ├── NEWS.md
#> ├── R
#> │   ├── dplyr
#> │   ├── dplyr.rdb
#> │   └── dplyr.rdx
#> ├── data
#> │   ├── Rdata.rdb
#> │   ├── Rdata.rds
#> │   └── Rdata.rdx
#> ├── doc
#> │   ├── base.R
#> │   ├── base.Rmd
#> │   ├── base.html
#> │   ├── colwise.R
#> │   ├── colwise.Rmd
#> │   ├── colwise.html
#> │   ├── dplyr.R
#> │   ├── dplyr.Rmd
#> │   ├── dplyr.html
#> │   ├── grouping.R
#> │   ├── grouping.Rmd
#> │   ├── grouping.html
#> │   ├── in-packages.R
#> │   ├── in-packages.Rmd
#> │   ├── in-packages.html
#> │   ├── index.html
#> │   ├── programming.R
#> │   ├── programming.Rmd
#> │   ├── programming.html
#> │   ├── rowwise.R
#> │   ├── rowwise.Rmd
#> │   ├── rowwise.html
#> │   ├── two-table.R
#> │   ├── two-table.Rmd
#> │   ├── two-table.html
#> │   ├── window-functions.R
#> │   ├── window-functions.Rmd
#> │   └── window-functions.html
#> ├── help
#> │   ├── AnIndex
#> │   ├── aliases.rds
#> │   ├── dplyr.rdb
#> │   ├── dplyr.rdx
#> │   ├── figures
#> │   │   ├── lifecycle-archived.svg
#> │   │   ├── lifecycle-defunct.svg
#> │   │   ├── lifecycle-deprecated.svg
#> │   │   ├── lifecycle-experimental.svg
#> │   │   ├── lifecycle-maturing.svg
#> │   │   ├── lifecycle-questioning.svg
#> │   │   ├── lifecycle-retired.svg
#> │   │   ├── lifecycle-soft-deprecated.svg
#> │   │   ├── lifecycle-stable.svg
#> │   │   ├── lifecycle-superseded.svg
#> │   │   └── logo.png
#> │   └── paths.rds
#> ├── html
#> │   ├── 00Index.html
#> │   └── R.css
#> └── libs
#>     └── dplyr.so

# to get colorized output, use `fs::dir_tree()` instead
fs::path_package("dplyr") |> fs::dir_tree()
#> /home/salim/.software/managed/r/dplyr
#> ├── DESCRIPTION
#> ├── INDEX
#> ├── LICENSE
#> ├── Meta
#> │   ├── Rd.rds
#> │   ├── data.rds
#> │   ├── features.rds
#> │   ├── hsearch.rds
#> │   ├── links.rds
#> │   ├── nsInfo.rds
#> │   ├── package.rds
#> │   └── vignette.rds
#> ├── NAMESPACE
#> ├── NEWS.md
#> ├── R
#> │   ├── dplyr
#> │   ├── dplyr.rdb
#> │   └── dplyr.rdx
#> ├── data
#> │   ├── Rdata.rdb
#> │   ├── Rdata.rds
#> │   └── Rdata.rdx
#> ├── doc
#> │   ├── base.R
#> │   ├── base.Rmd
#> │   ├── base.html
#> │   ├── colwise.R
#> │   ├── colwise.Rmd
#> │   ├── colwise.html
#> │   ├── dplyr.R
#> │   ├── dplyr.Rmd
#> │   ├── dplyr.html
#> │   ├── grouping.R
#> │   ├── grouping.Rmd
#> │   ├── grouping.html
#> │   ├── in-packages.R
#> │   ├── in-packages.Rmd
#> │   ├── in-packages.html
#> │   ├── index.html
#> │   ├── programming.R
#> │   ├── programming.Rmd
#> │   ├── programming.html
#> │   ├── rowwise.R
#> │   ├── rowwise.Rmd
#> │   ├── rowwise.html
#> │   ├── two-table.R
#> │   ├── two-table.Rmd
#> │   ├── two-table.html
#> │   ├── window-functions.R
#> │   ├── window-functions.Rmd
#> │   └── window-functions.html
#> ├── help
#> │   ├── AnIndex
#> │   ├── aliases.rds
#> │   ├── dplyr.rdb
#> │   ├── dplyr.rdx
#> │   ├── figures
#> │   │   ├── lifecycle-archived.svg
#> │   │   ├── lifecycle-defunct.svg
#> │   │   ├── lifecycle-deprecated.svg
#> │   │   ├── lifecycle-experimental.svg
#> │   │   ├── lifecycle-maturing.svg
#> │   │   ├── lifecycle-questioning.svg
#> │   │   ├── lifecycle-retired.svg
#> │   │   ├── lifecycle-soft-deprecated.svg
#> │   │   ├── lifecycle-stable.svg
#> │   │   ├── lifecycle-superseded.svg
#> │   │   └── logo.png
#> │   └── paths.rds
#> ├── html
#> │   ├── 00Index.html
#> │   └── R.css
#> └── libs
#>     └── dplyr.so