on develop help sign in
Reverving constructors
4d5e857Brendan Hay
gen/src/Gen/AST/Flatten.hs+1
@@ -45,6 +45,7 @@ flatten s = do
45 ss <- use schemas
45 ss <- use schemas
46
46
47 reserveBranches
47 reserveBranches
48+ reserveFields
48
49
49 let d = (s ^. sDescription)
50 let d = (s ^. sDescription)
50 { _dSchemas = Map.fromList $ map (join (,)) (Map.keys ss)
51 { _dSchemas = Map.fromList $ map (join (,)) (Map.keys ss)
gen/src/Gen/Types.hs+10
@@ -15,6 +15,7 @@
15{-# LANGUAGE RankNTypes #-}
15{-# LANGUAGE RankNTypes #-}
16{-# LANGUAGE RecordWildCards #-}
16{-# LANGUAGE RecordWildCards #-}
17{-# LANGUAGE TemplateHaskell #-}
17{-# LANGUAGE TemplateHaskell #-}
18+{-# LANGUAGE ViewPatterns #-}
18
19
19-- Module : Gen.Types
20-- Module : Gen.Types
20-- Copyright : (c) 2015 Brendan Hay
21-- Copyright : (c) 2015 Brendan Hay
@@ -50,6 +51,7 @@ import Data.Text (Text)
50import qualified Data.Text as Text
51import qualified Data.Text as Text
51import qualified Data.Text.Lazy as LText
52import qualified Data.Text.Lazy as LText
52import qualified Data.Text.Lazy.Builder as Build
53import qualified Data.Text.Lazy.Builder as Build
54+import Data.Text.Manipulate
53import Debug.Trace
55import Debug.Trace
54import qualified Filesystem.Path.CurrentOS as Path
56import qualified Filesystem.Path.CurrentOS as Path
55import Formatting
57import Formatting
@@ -287,3 +289,11 @@ reserveBranches = do
287 ss <- use schemas
289 ss <- use schemas
288 let bs = Set.fromList $ map (CI.mk . global) (Map.keys ss)
290 let bs = Set.fromList $ map (CI.mk . global) (Map.keys ss)
289 branches %= Map.insertWith (<>) mempty bs
291 branches %= Map.insertWith (<>) mempty bs
292+
293+reserveFields :: AST ()
294+reserveFields = do
295+ ss <- use schemas
296+ forM_ (Map.keys ss) $ \(global -> k) -> do
297+ let p:ps = splitWords k
298+ s = mconcat ps
299+ fields %= Map.insertWith (<>) (CI.mk p) (Set.singleton (CI.mk s))