Add the descendDescTo function, minor formatting
parent
34d94c2d2e
commit
bb646321fe
|
@ -36,6 +36,7 @@ module UI.Butcher.Monadic.Pretty
|
||||||
, ppPartDescUsage
|
, ppPartDescUsage
|
||||||
, ppPartDescHeader
|
, ppPartDescHeader
|
||||||
, parsingErrorString
|
, parsingErrorString
|
||||||
|
, descendDescTo
|
||||||
)
|
)
|
||||||
where
|
where
|
||||||
|
|
||||||
|
@ -43,11 +44,16 @@ where
|
||||||
|
|
||||||
#include "prelude.inc"
|
#include "prelude.inc"
|
||||||
import Control.Monad.Free
|
import Control.Monad.Free
|
||||||
import qualified Control.Monad.Trans.MultiRWS.Strict as MultiRWSS
|
import qualified Control.Monad.Trans.MultiRWS.Strict
|
||||||
import qualified Control.Monad.Trans.MultiState.Strict as MultiStateS
|
as MultiRWSS
|
||||||
|
import qualified Control.Monad.Trans.MultiState.Strict
|
||||||
|
as MultiStateS
|
||||||
|
|
||||||
import qualified Text.PrettyPrint as PP
|
import qualified Text.PrettyPrint as PP
|
||||||
import Text.PrettyPrint ( (<+>), ($$), ($+$) )
|
import Text.PrettyPrint ( (<+>)
|
||||||
|
, ($$)
|
||||||
|
, ($+$)
|
||||||
|
)
|
||||||
|
|
||||||
import Data.HList.ContainsType
|
import Data.HList.ContainsType
|
||||||
|
|
||||||
|
@ -79,7 +85,8 @@ ppUsage (CommandDesc mParent _syn _help parts out children _hidden) =
|
||||||
PP.fcat
|
PP.fcat
|
||||||
$ PP.punctuate (PP.text " | ")
|
$ PP.punctuate (PP.text " | ")
|
||||||
$ Data.Foldable.toList
|
$ Data.Foldable.toList
|
||||||
$ (PP.text . fst) <$> visibleChildren
|
$ (PP.text . fst)
|
||||||
|
<$> visibleChildren
|
||||||
|
|
||||||
-- | ppUsageShortSub exampleDesc yields:
|
-- | ppUsageShortSub exampleDesc yields:
|
||||||
--
|
--
|
||||||
|
@ -138,13 +145,19 @@ ppUsageWithHelp (CommandDesc mParent _syn help parts out children _hidden) =
|
||||||
-- fromJust $ ppUsageAt ["version"] exampleDesc yields:
|
-- fromJust $ ppUsageAt ["version"] exampleDesc yields:
|
||||||
--
|
--
|
||||||
-- > example version [--porcelain]
|
-- > example version [--porcelain]
|
||||||
ppUsageAt :: [String] -- (sub)command sequence
|
ppUsageAt
|
||||||
|
:: [String] -- (sub)command sequence
|
||||||
-> CommandDesc a
|
-> CommandDesc a
|
||||||
-> Maybe PP.Doc
|
-> Maybe PP.Doc
|
||||||
ppUsageAt strings desc =
|
ppUsageAt strings desc = ppUsage <$> descendDescTo strings desc
|
||||||
case strings of
|
|
||||||
[] -> Just $ ppUsage desc
|
-- | Access a child command's CommandDesc.
|
||||||
(s:sr) -> find ((Just s==) . fst) (_cmd_children desc) >>= ppUsageAt sr . snd
|
descendDescTo :: [String] -> CommandDesc a -> Maybe (CommandDesc a)
|
||||||
|
descendDescTo strings desc = case strings of
|
||||||
|
[] -> Just desc
|
||||||
|
(s : sr) -> do -- Maybe
|
||||||
|
(_, childDesc) <- find ((Just s ==) . fst) (_cmd_children desc)
|
||||||
|
descendDescTo sr childDesc
|
||||||
|
|
||||||
-- | ppHelpShallow exampleDesc yields:
|
-- | ppHelpShallow exampleDesc yields:
|
||||||
--
|
--
|
||||||
|
|
Loading…
Reference in New Issue