Safe Haskell | None |
---|---|
Language | Haskell2010 |
B9 produces not only VM-Images but also text documents such as configuration files required by virtual machines. This module is about creating and merging files containing parsable syntactic structures, such as most configuration files do.
Imagine you would want to create a cloud-init 'user-data' file from a set of
'user-data' snippets which each are valid 'user-data' files in yaml syntax and
e.g. a write_files
section. Now the goal is, for b9 to be able to merge these
snippets into one, such that all writefiles sections are combined into a single
writefile section. Another example is OTP/Erlang sys.config files. This type
class is the greatest commonon denominator of types describing a syntax that can
be parsed, concatenated e.g. like in the above example and rendered. The actual
concatenation operation is the append from Monoid, i.e. like monoid but without
the need for an empty element.
Documentation
class Semigroup a => ConcatableSyntax a where Source #
Types of values that can be parsedrendered fromto ByteString
s. This
class is used as basis for the ASTish
class.
decodeSyntax :: FilePath -> ByteString -> Either String a Source #
encodeSyntax :: a -> ByteString Source #
class ConcatableSyntax a => ASTish a where Source #
Types of values that describe content, that can be created from an AST
.
Describe how to create structured content that has a tree-like syntactic
structure, e.g. yaml, JSON and erlang-proplists. The first parameter defines
a context into which the AST
is embeded,
e.g. B9.Content.Generator.Content'. The second parameter defines a specifix
syntax, e.g ErlangPropList
that the AST
value generates.
ASTObj [(String, AST c a)] | Create an object similar to a Json object. |
ASTArr [AST c a] | An array. |
ASTMerge [AST c a] | Merge the nested elements, this is a very powerful tool that allows to combine |
ASTEmbed c | |
ASTString String | |
ASTParse SourceFile | |
AST a |
(Eq a, Eq c) => Eq (AST c a) Source # | |
(Data a, Data c) => Data (AST c a) Source # | |
(Read a, Read c) => Read (AST c a) Source # | |
(Show a, Show c) => Show (AST c a) Source # | |
Generic (AST c a) Source # | |
(Arbitrary c, Arbitrary a) => Arbitrary (AST c a) Source # | |
(Hashable c, Hashable a) => Hashable (AST c a) Source # | |
(Binary c, Binary a) => Binary (AST c a) Source # | |
(NFData c, NFData a) => NFData (AST c a) Source # | |
type Rep (AST c a) Source # | |