filepather-0.8.0.0: changelog.md
# Changelog
## 0.8.0.0
* Replace the optics of every data type with the classy optics recipe of
claude-haskell: each data type has a class, `TLike`, whose method is its
own name (`step`, `trail`, `repetition`, `cycle`, `filePather`,
`tracked`), each field and constructor has a name, a class in its own
module under System.FilePather.Name (`stepName`, `stepInput`, `steps`,
`once`, `repeatable`, `file`, `pathFunction`), and each data type has a
manifest (`lawNamesT`), a synonym and function of inheritance (`InheritT`,
`inheritT`) and, where it holds another data type, a check of inheritance
(`inheritsT`)
* Remove the GetX, HasX, ReviewX and AsX classes, the Field and Injection
instances of Step, Repetition and Cycle, and the Wrapped and Rewrapped
instances of FilePather, Tracked and Trail; read the function of a
FilePather with `view (cloneLens pathFunction)`
* Remove the lenses `cycleStep` and `cycleTrail`, and the prisms `_Once`,
`_Repeatable`, `_ReproducesInput` and `_RepeatsStep`: use `step`, `trail`
(affine traversals of a Cycle), `once`, `repeatable`, `reproducesInput` and
`repeatsStep`
* Split System.FilePather.Trail into System.FilePather.Step,
System.FilePather.Trail, System.FilePather.Repetition,
System.FilePather.ReproducesInput, System.FilePather.RepeatsStep and
System.FilePather.Cycle (checkStep and displayCycle)
* The constructors of Cycle each hold a product type of their own:
`CycleReproducesInput (ReproducesInput file step trail)` and
`CycleRepeatsStep (RepeatsStep step trail)`
* Rename step, stepWith, step' and stepWith' to track, trackWith, track' and
trackWith', because `step` is the name of Step
* System.FilePather exports the name `cycle`, which has the same name as
Prelude.cycle
* Remove the dependency on either-n
* Build with -Werror=incomplete-patterns, and without
-Wredundant-constraints
* Add hedgehog tests of the classy optics: generators in the shape of each
manifest, the coverage of each sum, the manifest laws, and the laws of the
kind of every instance of every name
## 0.7.0.0
* Start again, replacing filepather 0.6, in the document-build repository
* Add System.FilePather.FilePather: FilePather f a, a newtype for
FilePath -> f a, with type aliases (FilePather', FilePatherIO,
FilePatherMaybe, FilePatherList, FilePatherNonEmpty, FilePatherEither,
FilePatherMaybeT, FilePatherExceptT, FilePatherExitcode,
FilePatherExitcode'), and instances, derived through ReaderT FilePath f
where possible, for Generic, Generic1, NFData, Semigroup, Monoid, Functor,
Apply, Applicative, Bind, Monad, Alt, Plus, Alternative, MonadPlus,
MonadFail, MonadFix, MonadZip, MonadIO, MonadTrans, MonadReader FilePath,
MonadState, MonadWriter, MonadError, MonadCont, Selective, Filterable,
Distributive, Representable, Contravariant, Divisible, Decidable, Wrapped
and Rewrapped
* Add filePatherReaderT, the isomorphism between FilePather and ReaderT,
and the classy optics GetFilePather, HasFilePather, ReviewFilePather and
AsFilePather
* Add System.FilePather.Combinators: (~>), (~>>), onFile, hoistFilePather,
Rule, whenFile, rule, everyFile, hasExtension, isFile, isWithin,
directoryFiles and directoryFilesWhere
* Add System.FilePather.Trail: Step, Trail, Repetition and Cycle, with
lenses, prisms and classy optics, checkStep and displayCycle
* Add System.FilePather.Tracked: Tracked f a, named build steps that record
the files they make, with step, stepWith, step', stepWith', untracked,
askTrail, onPath, whenPath, whenTrail, hoistTracked, trackedFunction and
classy optics, and instances for Generic, NFData, Functor, Apply,
Applicative, Bind, Monad, Selective, Alt, Plus, Alternative, MonadPlus,
Semigroup, Monoid, Filterable, MonadTrans, MonadIO, MonadFail,
MonadReader FilePath, MonadState, MonadError, MonadWriter, Contravariant,
Wrapped and Rewrapped
* Add rewrite rules fusing compositions of fmap and mapMaybe for FilePather
and Tracked
* Add hedgehog property tests for the laws of every instance and optic, and
doctests