Skip to content

Commit 7f8eb6f

Browse files
committed
Split formatting from rendering
1 parent cdccf36 commit 7f8eb6f

File tree

1 file changed

+26
-24
lines changed

1 file changed

+26
-24
lines changed

src/Hie/Yaml.hs

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -9,38 +9,40 @@ where
99
import qualified Data.Text as T
1010
import Hie.Cabal.Parser
1111

12-
cabalHieYaml :: Package -> T.Text
12+
cabalHieYaml :: Package -> String
1313
cabalHieYaml (Package n cs) =
1414
"cradle:\n"
15-
<> indentT ("cabal:\n" <> indentT (T.unlines (map (cabalComponent n) cs)))
15+
<> indent'
16+
("cabal:\n" <> indent' (unlines (map (fmtComponent . cabalComponent n) cs)))
1617

17-
stackHieYaml :: Package -> T.Text
18+
stackHieYaml :: Package -> String
1819
stackHieYaml (Package n cs) =
1920
"cradle:\n"
20-
<> indentT ("stack:\n" <> indentT (T.unlines (map (stackComponent n) cs)))
21-
22-
indentT :: T.Text -> T.Text
23-
indentT = T.unlines . map (" " <>) . T.lines
24-
25-
cabalComponent :: Name -> Component -> T.Text
26-
cabalComponent n (Lib "" p) = comp p $ "lib:" <> n
27-
cabalComponent n (Lib cn p) = comp p $ "lib:" <> n <> ":" <> cn
28-
cabalComponent n (Exe cn p) = comp p $ n <> ":exe:" <> cn
29-
cabalComponent n (Test cn p) = comp p $ n <> ":test:" <> cn
30-
31-
stackComponent :: Name -> Component -> T.Text
32-
stackComponent n (Lib "" p) = comp p $ n <> ":lib"
33-
stackComponent n (Lib cn p) = comp p $ n <> ":lib:" <> cn
34-
stackComponent n (Exe cn p) = comp p $ n <> ":exe:" <> cn
35-
stackComponent n (Test cn p) = comp p $ n <> ":test:" <> cn
36-
37-
comp :: T.Text -> T.Text -> T.Text
38-
comp p c =
21+
<> indent'
22+
("stack:\n" <> indent' (unlines (map (fmtComponent . stackComponent n) cs)))
23+
24+
indent' :: String -> String
25+
indent' = unlines . map (" " <>) . lines
26+
27+
cabalComponent :: Name -> Component -> (FilePath, String)
28+
cabalComponent n (Lib "" p) = (T.unpack p, T.unpack $ "lib:" <> n)
29+
cabalComponent n (Lib cn p) = (T.unpack p, T.unpack $ "lib:" <> n <> ":" <> cn)
30+
cabalComponent n (Exe cn p) = (T.unpack p, T.unpack $ n <> ":exe:" <> cn)
31+
cabalComponent n (Test cn p) = (T.unpack p, T.unpack $ n <> ":test:" <> cn)
32+
33+
stackComponent :: Name -> Component -> (FilePath, String)
34+
stackComponent n (Lib "" p) = (T.unpack p, T.unpack $ n <> ":lib")
35+
stackComponent n (Lib cn p) = (T.unpack p, T.unpack $ n <> ":lib:" <> cn)
36+
stackComponent n (Exe cn p) = (T.unpack p, T.unpack $ n <> ":exe:" <> cn)
37+
stackComponent n (Test cn p) = (T.unpack p, T.unpack $ n <> ":test:" <> cn)
38+
39+
fmtComponent :: (FilePath, String) -> String
40+
fmtComponent (p, c) =
3941
"- path: "
4042
<> dQuote p
4143
<> "\n "
4244
<> "component: "
4345
<> dQuote c
4446

45-
dQuote :: T.Text -> T.Text
46-
dQuote t = T.cons '"' t `T.snoc` '"'
47+
dQuote :: String -> String
48+
dQuote t = '"' : t <> "\""

0 commit comments

Comments
 (0)