git.iko.soy/typeable/cabal2nix
on master help sign in
Adapt pretty-printing to coding guidelines. Closes #9.
fc3a2adAndres Loeh
src/Cabal2Nix/Package.hs+13−4
@@ -39,14 +39,23 @@ data Pkg = Pkg PkgName
39 PkgMaintainers
39 PkgMaintainers
40 deriving (Show)
40 deriving (Show)
41
41
42+prepunctuate :: Doc -> [Doc] -> [Doc]
43+prepunctuate _ [] = []
44+prepunctuate p (d:ds) = d : map (p <>) ds
45+
46+
42showNixPkg :: Pkg -> String
47showNixPkg :: Pkg -> String
43showNixPkg (Pkg name ver sha256 url desc lic deps tools libs platforms maintainers) = render doc
48showNixPkg (Pkg name ver sha256 url desc lic deps tools libs platforms maintainers) = render doc
44 where
49 where
45− doc = braces (fsep $ punctuate comma $
50+ doc = sep [
51+ lbrace <+> (fcat $ prepunctuate (comma <> text " ") $
52+ map (nest 2 . text)
46− map text ("cabal" : pkgBuildTools ++ pkgDeps)) <+>
53+ ("cabal" : pkgBuildTools ++ pkgDeps)),
47− colon $$ text "" $$
54+ rbrace <> colon
55+ ] $$
48 vcat [
56 vcat [
57+ text "",
49− text "cabal.mkDerivation" <+> lparen <> text "self" <+>
58+ text "cabal.mkDerivation" <+> lparen <> text "self" <>
50 colon <+> lbrace,
59 colon <+> lbrace,
51 nest 2 $ vcat [
60 nest 2 $ vcat [
52 attr "pname" $ doubleQuotes (text name),
61 attr "pname" $ doubleQuotes (text name),