Commit Graph

8 Commits (6604a9746cfea510fda897078b719984c77e03ea)

Author SHA1 Message Date
Lennart Spitzner 6604a9746c Major changeset: Add applicative, Refactor monadic interface
- monadic interface now uses two-phase setup: First step is to create a
  full CommandDesc value, second is running the parser on input while the
  CommandDesc is chained along
- applicative interface has a somewhat nicer/cleaner implementation, is
  more secure by avoiding any demands on the API user that are not encoded
  in types, but is slightly less expressive and requires ApplicativeDo to
  get readable code.
- The applicative interface is *NOT* finished and the test-suite does not
  cover it.
- Add the `traverseBarbie` construct which introduces a dependency on
  the `barbies` library. This also effectively:
- Stop support for ghc < 8.4.
- Refactor the module structure a bit, and change the API of the central
  `runCmdParser` function. It now returns a `PartialParseInfo`. Essentially,
  `runCmdParser` is a combination of the previous `runCmdParser` and the
  previous `simpleCompletion`. This API design is a curious advantage to
  laziness: Returning a complex struct is harmless as fields that the user
  does not use won't be evaluated. The downside is that the core function now
  looks like a complex beast, but the upside is that there is no need to
  expose multiple functions that are supposed to be chained in a certain way
  to get all functionality (if desired), and we still _can_ provide simpler
  versions that are just projections on the `PartialParseInfo`.
- Stop support for an anti-feature: The implicit merging of multiple
  sub-commands definitions with the same name.
2020-10-06 10:56:55 +02:00
Lennart Spitzner 719d447701 Add function parsingErrorString 2017-05-16 22:03:25 +02:00
Lennart Spitzner b15f1ae585 Refactor module structure; Add haddock; Update README 2017-01-01 14:46:53 +01:00
Lennart Spitzner 76e3baad76 Make help print subcommand help as well (addHelpCommand) 2016-12-30 22:16:04 +01:00
Lennart Spitzner 04cb0bdea5 Clean up imports; Reduce dep footprint s/lens/microlens/ 2016-10-11 00:27:26 +02:00
Lennart Spitzner a4e3d155d6 Fix: Print errors to stderr, not stdout 2016-09-04 00:50:03 +02:00
Lennart Spitzner 7132a79b50 Add project-spec. prelude; Remove q-prelude dependency 2016-07-30 16:44:31 +02:00
Lennart Spitzner f033c9e0ab Rename to butcher, Change everything else 2016-07-30 16:25:28 +02:00