append
lib.path.append
Docs pulled from | This Revision | 10 minutes ago
Append a subpath string to a path.
Like path + ("/" + string)
but safer, because it errors instead of returning potentially surprising results.
More specifically, it checks that the first argument is a path value type,
and that the second argument is a valid subpath string.
Laws:
-
Not influenced by subpath normalisation:
append p s == append p (subpath.normalise s)
Inputs
path
-
The absolute path to append to
subpath
-
The subpath string to append
Type
append :: Path -> String -> Path
Examples
append
usage example
append /foo "bar/baz"
=> /foo/bar/baz
# subpaths don't need to be normalised
append /foo "./bar//baz/./"
=> /foo/bar/baz
# can append to root directory
append /. "foo/bar"
=> /foo/bar
# first argument needs to be a path value type
append "/foo" "bar"
=> <error>
# second argument needs to be a valid subpath string
append /foo /bar
=> <error>
append /foo ""
=> <error>
append /foo "/bar"
=> <error>
append /foo "../bar"
=> <error>
Noogle detected
Implementation
The following is the current implementation of this function.
append =
# The absolute path to append to
path:
# The subpath string to append
subpath:
assert assertMsg (isPath path)
''lib.path.append: The first argument is of type ${builtins.typeOf path}, but a path was expected'';
assert assertMsg (isValid subpath) ''
lib.path.append: Second argument is not a valid subpath string:
${subpathInvalidReason subpath}'';
path + ("/" + subpath);