packages feed

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