Copyright | (c) 2019 Lucas David Traverso |
---|---|
License | MPL-2.0 |
Maintainer | Lucas David Traverso <lucas6246@gmail.com> |
Stability | stable |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
Source for json config files using Aeson
Synopsis
- data JsonSource = JsonSource {}
- fromConfig :: Key -> SourceCreator
- fromFilePath :: FilePath -> IO Source
- fromValue :: Value -> Source
- traverseJSON :: Key -> Value -> Maybe Value
- listKeysInJSON :: Value -> [Key]
- valueToText :: Value -> Maybe Text
- boolToString :: Bool -> Text
- resultToMaybe :: Result a -> Maybe a
Documentation
data JsonSource Source #
Source
that read a config file as json and uses that value in a way that
makes sense for Conferer but doesn't respect json perfectly.
Instances
Eq JsonSource Source # | |
Defined in Conferer.Source.Aeson (==) :: JsonSource -> JsonSource -> Bool # (/=) :: JsonSource -> JsonSource -> Bool # | |
Show JsonSource Source # | |
Defined in Conferer.Source.Aeson showsPrec :: Int -> JsonSource -> ShowS # show :: JsonSource -> String # showList :: [JsonSource] -> ShowS # | |
IsSource JsonSource Source # | |
Defined in Conferer.Source.Aeson getKeyInSource :: JsonSource -> Key -> IO (Maybe Text) # getSubkeysInSource :: JsonSource -> Key -> IO [Key] # |
fromConfig :: Key -> SourceCreator Source #
Create a SourceCreator
which uses files with config/{env}.json
template and then uses fromFilePath
fromFilePath :: FilePath -> IO Source Source #
Create a Source
from a filepath
If the file is not present it will behave as if it had no keys.
If the file doesn't have valid json it will throw an error.
traverseJSON :: Key -> Value -> Maybe Value Source #
Traverse a Value
using a Key
to get a Value
.
This function can nest objects and arrays when keys are nested
traverseJSON
"a.b" {a: {b: 12}} == Just "12"traverseJSON
"a.b" {a: {b: false}} == Just "false"traverseJSON
"a" {a: {b: false}} == NothingtraverseJSON
"1" [false, true] == Just "true"traverseJSON
"0.a" [{a: "hi"}] == Just "hi"traverseJSON
"0" [] == Nothing
listKeysInJSON :: Value -> [Key] Source #
Get the list of available keys inside a json value
resultToMaybe :: Result a -> Maybe a Source #
Because we use an old version of aeson