1
0

anoia: make dirname handle tralning / like posix

This commit is contained in:
Daniel Barlow 2025-03-24 22:37:24 +00:00
parent e5cfd41013
commit 8440378a39
2 changed files with 21 additions and 1 deletions

View File

@ -9,6 +9,7 @@ check:
ln -s . anoia
fennel ./run-tests.fnl $(CHECK)
fennel test.fnl
mkdir -p $(outputdir)
fennel test-svc.fnl $(servicedir)
find $(outputdir) -ls
test -f $(outputdir)/fish

View File

@ -25,8 +25,27 @@
(fn basename [path]
(string.match path ".*/([^/]-)$"))
(fn dirname [path]
(string.match path "(.*)/[^/]-$"))
(let [stripped (string.match path "(.-)/*$")]
(pick-values
1
(if (not path) "."
(= path "") "."
(not stripped) "."
(= stripped "") "/"
(string.match stripped ".+/.-") (stripped:gsub "(.*)(/.*)" "%1")
(string.match stripped "/") "/"
"."))))
(define-tests
;; these are examples from dirname(3)
(expect= (dirname "/usr/lib") "/usr")
(expect= (dirname "/usr/") "/")
(expect= (dirname "usr") ".")
(expect= (dirname "/") "/")
(expect= (dirname ".") ".")
(expect= (dirname "..") "."))
(fn append-path [dirname filename]
(let [base (or (string.match dirname "(.*)/$") dirname)