b9-0.5.35: A tool and library for building virtual machine images.

B9.Content.AST

Description

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.

Synopsis

# Documentation

class Semigroup a => ConcatableSyntax a where Source #

Types of values that can be parsedrendered fromto ByteStrings. This class is used as basis for the ASTish class.

Minimal complete definition

Methods

Instances

 Source # Methods Source # Methods Source # Methods

class ConcatableSyntax a => ASTish a where Source #

Types of values that describe content, that can be created from an AST.

Minimal complete definition

fromAST

Methods

fromAST :: CanRender c => AST c a -> ReaderT Environment B9 a Source #

Instances

 Source # Methods Source # Methods

data AST c a Source #

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.

Constructors

 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

Instances

class CanRender c where Source #

Types of values that can be rendered into a ByteString

Minimal complete definition

render

Methods

Instances

 Source # Methods