module Darcs.UI.Options.Markdown ( optionsMarkdown ) where
import Prelude ()
import Darcs.Prelude
import Data.Functor.Compose ( Compose(..) )
import System.Console.GetOpt ( OptDescr(..), ArgDescr(..) )
import Darcs.UI.Options.Util ( DarcsOptDescr )
optionsMarkdown :: [DarcsOptDescr f] -> String
optionsMarkdown :: [DarcsOptDescr f] -> String
optionsMarkdown opts :: [DarcsOptDescr f]
opts = [String] -> String
unlines
[ "<table>", [String] -> String
unlines ((DarcsOptDescr f -> String) -> [DarcsOptDescr f] -> [String]
forall a b. (a -> b) -> [a] -> [b]
map DarcsOptDescr f -> String
forall f. DarcsOptDescr f -> String
optionMarkdown [DarcsOptDescr f]
opts), "</table>" ]
optionMarkdown :: DarcsOptDescr f -> String
optionMarkdown :: DarcsOptDescr f -> String
optionMarkdown (Compose (Option a :: String
a b :: [String]
b (NoArg _) h :: String
h)) = [String] -> String
unlines
[ "<tr>", "<td>", String -> String
showShortOptionsMd String
a, "</td>"
, "<td>", [String] -> String
showLongOptionsMd [String]
b , "</td>"
, "<td>", String
h, "</td>"
, "</tr>" ]
optionMarkdown (Compose (Option a :: String
a b :: [String]
b (ReqArg _ arg :: String
arg) h :: String
h)) = [String] -> String
unlines
[ "<tr>", "<td>", String -> String
showShortOptionsMd String
a, "</td>"
, "<td>", [String] -> String
showLongOptionsMd ((String -> String) -> [String] -> [String]
forall a b. (a -> b) -> [a] -> [b]
map (String -> String -> String
forall a. [a] -> [a] -> [a]
++(' ' Char -> String -> String
forall a. a -> [a] -> [a]
: String
arg)) [String]
b), "</td>"
, "<td>", String
h, "</td>", "</tr>" ]
optionMarkdown (Compose (Option a :: String
a b :: [String]
b (OptArg _ arg :: String
arg) h :: String
h)) = [String] -> String
unlines
[ "<tr>", "<td>", String -> String
showShortOptionsMd String
a, "</td>"
, "<td>", [String] -> String
showLongOptionsMd ((String -> String) -> [String] -> [String]
forall a b. (a -> b) -> [a] -> [b]
map (String -> String -> String
forall a. [a] -> [a] -> [a]
++("[="String -> String -> String
forall a. [a] -> [a] -> [a]
++String
argString -> String -> String
forall a. [a] -> [a] -> [a]
++"]")) [String]
b), "</td>"
, "<td>", String
h, "</td>", "</tr>" ]
showShortOptionsMd :: [Char] -> String
showShortOptionsMd :: String -> String
showShortOptionsMd [] = ""
showShortOptionsMd [c :: Char
c] = "`-"String -> String -> String
forall a. [a] -> [a] -> [a]
++[Char
c]String -> String -> String
forall a. [a] -> [a] -> [a]
++"` "
showShortOptionsMd (c :: Char
c:cs :: String
cs) = "`-"String -> String -> String
forall a. [a] -> [a] -> [a]
++[Char
c]String -> String -> String
forall a. [a] -> [a] -> [a]
++"`,"String -> String -> String
forall a. [a] -> [a] -> [a]
++String -> String
showShortOptionsMd String
cs
showLongOptionsMd :: [String] -> String
showLongOptionsMd :: [String] -> String
showLongOptionsMd [] = " "
showLongOptionsMd [s :: String
s] = "`--" String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
s String -> String -> String
forall a. [a] -> [a] -> [a]
++ "` "
showLongOptionsMd (s :: String
s:ss :: [String]
ss) = "`--" String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
s String -> String -> String
forall a. [a] -> [a] -> [a]
++ "`,"String -> String -> String
forall a. [a] -> [a] -> [a]
++ [String] -> String
showLongOptionsMd [String]
ss