-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Simple, layout-based value language similar to YAML or JSON -- -- This package implments a language similar to YAML or JSON but with -- fewer special cases and fewer dependencies. It emphasizes layout -- structure for sections and lists, and requires quotes around strings. @package config-value @version 0.3 -- | This module parses files using the syntax demonstrated below. The full -- grammar is available in the Happy source file. -- --
--   -- Line comments until newline
--   layout:
--     based:
--       configuration:
--         {} -- empty section
--   
--       sections:
--        "glguy"
--   
--       booleans   : yes
--       complicated: no
--   
--       decimal    : -1234
--       hexadecimal: 0x1234
--       octal      : 0o1234
--       binary     : 0b1010
--   
--   lists:
--      * 1
--      * [ "inline", "lists" ]
--      * * "nestable"
--        * "layout"
--        * "lists"
--      * 3
--   
--   unicode : "standard Haskell format strings (1 ≤ 2)\x2228(2 ≤ 3)"
--   
module Config -- | A single section of a Value data Section [Section] :: Text -> Value -> Section [sectionName] :: Section -> Text [sectionValue] :: Section -> Value -- | Sum type of the values supported by this language. data Value [Sections] :: [Section] -> Value -- | base number [Number] :: Int -> Integer -> Value [Text] :: Text -> Value [Atom] :: Text -> Value [List] :: [Value] -> Value -- | Parse a configuration file and return the result on the right, or the -- position of an error on the left. Note: Text file lines are terminated -- by new-lines. parse :: Text -> Either String Value -- | Pretty-print a Value as shown in the example. Sections will -- nest complex values underneath with indentation and simple values will -- be rendered on the same line as their section. pretty :: Value -> Doc -- | Optics for compatibility with the lens package module Config.Lens -- | Apply a function to the subsections of the given value when that value -- is a Sections and the subsection name matches the given -- section name key :: Applicative f => Text -> (Value -> f Value) -> Value -> f Value -- | Apply a function to the Text contained inside the given -- Value when it is a Text. text :: Applicative f => (Text -> f Text) -> Value -> f Value -- | Apply a function to the Integer contained inside the given -- Value when it is a Number. number :: Applicative f => (Integer -> f Integer) -> Value -> f Value -- | Apply a function to the Text contained inside the given -- Value when it is a Text. This traversal is only valid -- if the output atom is a valid atom! atom :: Applicative f => (Text -> f Text) -> Value -> f Value -- | Apply a function to the [Value] contained inside the given -- Value when it is a List. list :: Applicative f => ([Value] -> f [Value]) -> Value -> f Value -- | Apply a function to the [Section] contained inside the given -- Value when it is a Sections. sections :: Applicative f => ([Section] -> f [Section]) -> Value -> f Value