module Snap.Utilities.Configuration.Keys (
keyPre,
rebaseKey,
groupName
) where
import qualified Data.Configurator as C
import qualified Data.Configurator.Types as CT
import Data.List (groupBy, intercalate, find, sortBy)
import Data.HashMap.Strict (toList)
import Data.Text (Text, isPrefixOf, splitOn, pack, unpack)
import Snap.Utilities.Configuration.Types
keyPre :: Text -> [Text]
keyPre k = take l $ splitK k
where
l = length (splitK k) 1
rebaseKey :: ConfigPair -> ConfigPair
rebaseKey (k, v) = (head . drop l . splitK $ k, v)
where
l = length (splitK k) 1
groupName :: [ConfigPair] -> String
groupName = unpack . head . drop 1 . keyPre . fst . head
splitK :: Text -> [Text]
splitK = splitOn "."