Within is a type for simply scoping well-typed paths. A
Within b a is
Env comonad with the environment specialised to
Path b Dir. This
is useful for when you want to keep track of things that live within a parent
folder and need the extra degree of articulation. You can construct a value
living within a
Path b Dir using the
within infix operator.
5 `within` $(mkRelDir "foo")
There are also convenience functions for dealing with the special case where
the inner type is a
Path Rel File, which represents a path to a file within a
directory. This does not need to be an immediate child of the directory, and
does not have to exist. You can assert that you can assert that an existing
path lies in a directory by using
asWithin, which throws if the directory is
not a proper prefix of the
$(mkRelFile "foo/a.txt") `asWithin` $(mkRelDir "foo") -- fine
$(mkRelFile "a.txt") `asWithin` $(mkRelDir "foo") -- throws NotAProperPrefix Exception
You can also use
fromWithin to get from a
Within a (Path Rel t) to a
Path a t.
There are also
Hashable instances when the extract target is of
Changelog for within
- Add path-like and
- Change approach to
Withincan now store an arbitrary inner type whilst maintaining the convenience functions in the special case where the inner type is a
- Add Within Type based on path. Within is a path within another path.
- Add several functions for moving between directories and mapping source names.