Permalink
Fetching contributors…
Cannot retrieve contributors at this time
104 lines (90 sloc) 3.59 KB
UNRELEASED:
* BREAKING CHANGE: "fileExtension" now throws an exception if the file has no
extension. You can use the result as a "Maybe" in pure
code or handle the exception appropriately in any other monad.
* Old extension operations "addFileExtension" and "setFileExtension" have
been deprecated and replaced by "addExtension" and "replaceExtension"
respectively with new behavior.
ADAPTING YOUR CODE TO THIS CHANGE:
* Code that sets an extension not starting with a "." e.g. "foo", must
be changed such that it starts with a "." i.e. ".foo".
* Code that sets multiple extensions in one go e.g. ".tar.gz" must be
changed to set them one at a time instead i.e. add ".tar" first and
then add ".gz".
* Code that sets an extension starting with multiple dots e.g.
"..foo" must be changed such as to make the extra dots part of the
file name instead.
Details:
The new operations "addExtension" and "replaceExtension" accept only "valid"
extension forms which is exactly the same as what "fileExtension" returns.
A valid extension starts with a @.@ followed by one or more characters
not including @.@ followed by zero or more @.@s in trailing position.
This change allows extension operations to be principled following
these laws:
* flip addExtension file >=> fileExtension == return
* (fileExtension >=> flip replaceExtension file) file == return file
* Add splitExtension operation such that:
* uncurry addExtension . swap >=> splitExtension == return
* splitExtension >=> uncurry addExtension . swap == return
* fileExtension == (fmap snd) . splitExtension@
* Add 'Path.Posix' and 'Path.Windows' modules for manipulating
Windows or Posix style paths independently of the current platform.
* Add 'Lift' instance for 'Path'.
* `Path.Windows` normalizes path separators throughout path,
including immediately following drive letter.
* `Path.Windows` handles UNC (`\\host\share\`) and Unicode (`\\?\C:\`) path
without breaking the double-separator prefix.
0.6.1:
* Add 'addFileExtension' function and its operator form: (<.>).
* Derive 'Eq' instance for 'PathException'.
0.6.0:
* Deprecate PathParseException and rename it to PathException
* Allow 'parent' to work on relative paths as well
* Deprecate isParentOf and stripDir and rename them to isProperPrefixOf and
stripProperPrefix respectively.
* Allow "." as a valid relative dir path with the following rules:
* "./" </> "./" = "./"
* "./" </> "x/" = "x/"
* "x/" </> "./" = "x/"
* dirname "x" = "./"
* dirname "/" = "./"
* dirname "./" = "./"
* Make dirname return "." instead of "/" (fixes #18).
* Remove the 'validity' flag.
* Add synonym for setFileExtension in the form of an operator: (-<.>).
0.5.13:
* Add QuasiQuoters absdir, reldir, absfile, relfile
0.5.11:
* Add replaceExtension and fileExtension
0.5.10:
* Disallow /. for absolute file
* Disallow foo/. for relative file
0.5.9:
* Lifted ~ restriction from parser https://github.com/chrisdone/path/issues/19
0.5.8
* Add Aeson instances.
0.5.7:
* Fix haddock problem.
0.5.6:
* Reject only .. and .
0.5.5:
* Use filepath's isValid function for additional sanity checks
0.5.4:
* Disable parsing of path consisting only of "."
* Add NFData instance for Path
* Some typo/docs improvements
* Add standard headers to modules
0.5.3:
* Added conversion functions.
0.2.0:
* Rename parentAbs to simply parent.
* Add dirname.
0.3.0:
* Removed Generic instance.
0.4.0:
* Implemented stricter parsing, disabling use of "..".
* Made stripDir generic over MonadThrow
0.5.0:
* Fix stripDir p p /= Nothing bug.
0.5.2:
* Removed unused DeriveGeneric.