Juntar, normalizar e inspecionar caminhos do sistema de arquivos.
import path
Os caminhos usam / como separador e entendem tanto caminhos absolutos estilo Unix (/usr/bin) quanto prefixos de unidade do Windows (C:).
Junta dois segmentos com exatamente um separador, colapsando excessos.
path_join("a/", "/b")
-- Saída: "a/b"
Junta uma lista de segmentos da esquerda para a direita.
path_join_many(["a", "b", "c"]) -- Saída: "a/b/c"
Divide um caminho em seus segmentos não vazios.
path_split("/usr/local/bin")
-- Saída: ["usr", "local", "bin"]
O separador de caminho usado pela biblioteca.
path_sep() -- Saída: "/"
Se o caminho é absoluto (/ inicial ou prefixo de unidade).
path_is_absolute("/etc/hosts")
-- Saída: true
path_is_absolute("docs/api")
-- Saída: false
O último segmento do caminho.
path_basename("/usr/local/bin/bern")
-- Saída: "bern"
O diretório pai.
path_dirname("/usr/local/bin/bern")
-- Saída: "/usr/local/bin"
A extensão incluindo o ponto inicial, ou "" quando não há.
path_extname("archive.tar.gz")
-- Saída: ".gz"
O basename sem a extensão.
path_stem("report.pdf")
-- Saída: "report"
Resolve separadores redundantes e os segmentos . / ...
path_normalize("a/./b/../c")
-- Saída: "a/c"
path_normalize("/a//b/../c")
-- Saída: "/a/c"
As funções combinam para reescrever um caminho com segurança - aqui movemos um arquivo para um diretório irmão mantendo seu nome:
import path source = "/projects/bern/src/main.brn" dir = path_dirname(source) -- "/projects/bern/src" name = path_basename(source) -- "main.brn" dest = path_normalize(path_join_many([dir, "..", "build", name])) -- Saída: "/projects/bern/build/main.brn"
E derivar um nome de saída trocando a extensão via path_stem:
import path
def with_ext(file, ext) -> path_join(path_dirname(file), path_stem(file) + ext)
with_ext("docs/notes.md", ".html")
-- Saída: "docs/notes.html"