mdoc 0.4.0.0 → 0.4.1.0
raw patch · 2 files changed
+30/−29 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- mdoc.cabal +1/−1
- src/OptEnvConf/Mdoc.hs +29/−28
mdoc.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.18 name: mdoc-version: 0.4.0.0+version: 0.4.1.0 license: AGPL-3 license-file: COPYING maintainer: Pat Brisbin
src/OptEnvConf/Mdoc.hs view
@@ -46,20 +46,18 @@ addToPage :: Int -> Page- -> Either [CommandDoc (Maybe SetDoc)] (Described SetDoc)+ -> Described SetDoc -> Page-addToPage index acc = \case- Left cdocs -> addCommands (zipWith getCommand [1 ..] cdocs) acc- Right d ->- flip appEndo acc- $ mconcat- $ catMaybes- [ Endo . addSwitch <$> traverse setDocToFlag d- , Endo . addOption <$> traverse setDocToOption d- , Endo . addArgument <$> traverse (setDocToArgument index) d- , Endo . addEnvVar <$> traverse setDocToEnvVar d- , Just $ foldMap (Endo . addConfig) $ traverse setDocToConfigs d- ]+addToPage index acc d =+ flip appEndo acc+ $ mconcat+ $ catMaybes+ [ Endo . addSwitch <$> traverse setDocToFlag d+ , Endo . addOption <$> traverse setDocToOption d+ , Endo . addArgument <$> traverse (setDocToArgument index) d+ , Endo . addEnvVar <$> traverse setDocToEnvVar d+ , Just $ foldMap (Endo . addConfig) $ traverse setDocToConfigs d+ ] setDocToFlag :: SetDoc -> Maybe Flag setDocToFlag doc = do@@ -91,31 +89,33 @@ . setDocConfKeys foldSetDocs- :: (Int -> Page -> Either [CommandDoc (Maybe SetDoc)] (Described SetDoc) -> Page)+ :: (Int -> Page -> Described SetDoc -> Page) -> AnyDocs (Maybe SetDoc) -> Page foldSetDocs f = flip evalState 0 . foldSetDocsM f mempty foldSetDocsM :: MonadState Int m- => (Int -> Page -> Either [CommandDoc (Maybe SetDoc)] (Described SetDoc) -> Page)+ => (Int -> Page -> Described SetDoc -> Page) -> Page -> AnyDocs (Maybe SetDoc) -> m Page foldSetDocsM f acc = \case- AnyDocsCommands _ cdocs -> do- index <- get- modify (+ 1)- pure $ f index acc $ Left cdocs+ AnyDocsCommands _ cdocs ->+ pure $ addCommands (zipWith getCommand [1 ..] cdocs) acc AnyDocsAnd ds -> foldM (foldSetDocsM f) acc ds- AnyDocsOr ds -> foldM (foldSetDocsM fForOr) acc ds+ AnyDocsOr [d] -> foldSetDocsM f acc d+ -- Optionality represented as "<|> Nothing"+ AnyDocsOr [d, AnyDocsSingle Nothing] -> foldSetDocsM fForOr acc d+ AnyDocsOr ds -> do+ sub <- foldM (foldSetDocsM fForOr) mempty $ traceShowId ds+ pure $ addAlternation Optional (getPositionals sub) acc AnyDocsSingle Nothing -> pure acc -- hidden/internal AnyDocsSingle (Just d) -> do index <- get modify (+ 1) pure $ f index acc- $ Right $ Described { item = d , optionality = maybe Required Defaulted (setDocDefault d)@@ -125,13 +125,14 @@ } where -- This is crazy wrong but I keep adding shit based on test cases- fForOr i m e = f i m $ (<$> e) $ \d ->- d- { optionality = case d.optionality of- Required -> Optional- o -> o- , multiple = null $ setDocDasheds d.item- }+ fForOr i m d =+ f i m+ $ d+ { optionality = case d.optionality of+ Required -> Optional+ o -> o+ , multiple = null $ setDocDasheds d.item+ } exampleMdoc :: NonEmpty String -> Mdoc exampleMdoc = Mdoc . map (TextLine . esc . pack) . toList