Safe Haskell | None |
---|---|
Language | Haskell98 |
Puppet.Parser.Types
Description
All the types used for parsing, and helpers working on these types.
- type Position = SourcePos
- type PPosition = Pair Position Position
- initialPPos :: Text -> PPosition
- toPPos :: Text -> Int -> PPosition
- lSourceName :: Lens' Position String
- lSourceLine :: Lens' Position Pos
- lSourceColumn :: Lens' Position Pos
- capitalizeRT :: Text -> Text
- rel2text :: LinkType -> Text
- data Expression
- = Equal !Expression !Expression
- | Different !Expression !Expression
- | Not !Expression
- | And !Expression !Expression
- | Or !Expression !Expression
- | LessThan !Expression !Expression
- | MoreThan !Expression !Expression
- | LessEqualThan !Expression !Expression
- | MoreEqualThan !Expression !Expression
- | RegexMatch !Expression !Expression
- | NotRegexMatch !Expression !Expression
- | Contains !Expression !Expression
- | Addition !Expression !Expression
- | Substraction !Expression !Expression
- | Division !Expression !Expression
- | Multiplication !Expression !Expression
- | Modulo !Expression !Expression
- | RightShift !Expression !Expression
- | LeftShift !Expression !Expression
- | Lookup !Expression !Expression
- | Negate !Expression
- | ConditionalValue !Expression !(Vector (Pair SelectorCase Expression))
- | FunctionApplication !Expression !Expression
- | Terminal !UnresolvedValue
- data SelectorCase
- data UnresolvedValue
- = UBoolean !Bool
- | UString !Text
- | UInterpolable !(Vector Expression)
- | UUndef
- | UResourceReference !Text !Expression
- | UArray !(Vector Expression)
- | UHash !(Vector (Pair Expression Expression))
- | URegexp !CompRegex
- | UVariableReference !Text
- | UFunctionCall !Text !(Vector Expression)
- | UHOLambdaCall !HOLambdaCall
- | UNumber !Scientific
- data LambdaFunc
- data HOLambdaCall = HOLambdaCall {}
- data ChainableRes
- class HasHOLambdaCall c where
- data LambdaParameters
- data CompRegex = CompRegex !Text !Regex
- data CollectorType
- data Virtuality
- data NodeDesc
- data LinkType
- = RNotify
- | RRequire
- | RBefore
- | RSubscribe
- data DataType
- = DTType
- | DTString (Maybe Int) (Maybe Int)
- | DTInteger (Maybe Int) (Maybe Int)
- | DTFloat (Maybe Double) (Maybe Double)
- | DTBoolean
- | DTArray DataType Int (Maybe Int)
- | DTHash DataType DataType Int (Maybe Int)
- | DTUndef
- | DTScalar
- | DTData
- | DTOptional DataType
- | NotUndef
- | DTVariant (NonEmpty DataType)
- | DTPattern (NonEmpty CompRegex)
- | DTEnum (NonEmpty Text)
- | DTAny
- | DTCollection
- data SearchExpression
- data ArrowOp
- data AttributeDecl = AttributeDecl !Text !ArrowOp !Expression
- data ConditionalDecl = ConditionalDecl !(Vector (Pair Expression (Vector Statement))) !PPosition
- data ClassDecl = ClassDecl !Text !(Vector (Pair (Pair Text (Maybe DataType)) (Maybe Expression))) !(Maybe Text) !(Vector Statement) !PPosition
- data ResDefaultDecl = ResDefaultDecl !Text !(Vector AttributeDecl) !PPosition
- data DepDecl = DepDecl !(Pair Text Expression) !(Pair Text Expression) !LinkType !PPosition
- data Statement
- = ResourceDeclaration !ResDecl
- | ResourceDefaultDeclaration !ResDefaultDecl
- | ResourceOverrideDeclaration !ResOverrideDecl
- | ResourceCollectionDeclaration !ResCollDecl
- | ClassDeclaration !ClassDecl
- | DefineDeclaration !DefineDecl
- | NodeDeclaration !NodeDecl
- | ConditionalDeclaration !ConditionalDecl
- | VarAssignmentDeclaration !VarAssignDecl
- | MainFunctionDeclaration !MainFuncDecl
- | HigherOrderLambdaDeclaration !HigherOrderLambdaDecl
- | DependencyDeclaration !DepDecl
- | TopContainer !(Vector Statement) !Statement
- data ResDecl = ResDecl !Text !Expression !(Vector AttributeDecl) !Virtuality !PPosition
- data ResOverrideDecl = ResOverrideDecl !Text !Expression !(Vector AttributeDecl) !PPosition
- data DefineDecl = DefineDecl !Text !(Vector (Pair (Pair Text (Maybe DataType)) (Maybe Expression))) !(Vector Statement) !PPosition
- data NodeDecl = NodeDecl !NodeDesc !(Vector Statement) !(Maybe NodeDesc) !PPosition
- data VarAssignDecl = VarAssignDecl !Text !Expression !PPosition
- data MainFuncDecl = MainFuncDecl !Text !(Vector Expression) !PPosition
- data HigherOrderLambdaDecl = HigherOrderLambdaDecl !HOLambdaCall !PPosition
- data ResCollDecl = ResCollDecl !CollectorType !Text !SearchExpression !(Vector AttributeDecl) !PPosition
Position management
initialPPos :: Text -> PPosition #
Generates an initial position based on a filename.
Lenses
lSourceLine :: Lens' Position Pos #
Helpers
capitalizeRT :: Text -> Text #
Properly capitalizes resource types
Types
Expressions
data Expression #
The Expression
s
Constructors
Equal !Expression !Expression | |
Different !Expression !Expression | |
Not !Expression | |
And !Expression !Expression | |
Or !Expression !Expression | |
LessThan !Expression !Expression | |
MoreThan !Expression !Expression | |
LessEqualThan !Expression !Expression | |
MoreEqualThan !Expression !Expression | |
RegexMatch !Expression !Expression | |
NotRegexMatch !Expression !Expression | |
Contains !Expression !Expression | |
Addition !Expression !Expression | |
Substraction !Expression !Expression | |
Division !Expression !Expression | |
Multiplication !Expression !Expression | |
Modulo !Expression !Expression | |
RightShift !Expression !Expression | |
LeftShift !Expression !Expression | |
Lookup !Expression !Expression | |
Negate !Expression | |
ConditionalValue !Expression !(Vector (Pair SelectorCase Expression)) | All conditionals are stored in this format. |
FunctionApplication !Expression !Expression | This is for higher order functions. |
Terminal !UnresolvedValue | Terminal object contains no expression |
Instances
data SelectorCase #
Constructors
SelectorValue !UnresolvedValue | |
SelectorType !DataType | |
SelectorDefault |
Instances
data UnresolvedValue #
An unresolved value, typically the parser's output.
Constructors
UBoolean !Bool | Special tokens generated when parsing the |
UString !Text | Raw string. |
UInterpolable !(Vector Expression) | A string that might contain variable references. The type should be refined at one point. |
UUndef | Special token that is generated when parsing the |
UResourceReference !Text !Expression | A Resource[reference] |
UArray !(Vector Expression) | |
UHash !(Vector (Pair Expression Expression)) | |
URegexp !CompRegex | The regular expression compilation is performed during parsing. |
UVariableReference !Text | |
UFunctionCall !Text !(Vector Expression) | |
UHOLambdaCall !HOLambdaCall | |
UNumber !Scientific |
Instances
data LambdaFunc #
High Order "lambdas"
Constructors
LambEach | |
LambMap | |
LambReduce | |
LambFilter | |
LambSlice | |
LambLookup |
Instances
data HOLambdaCall #
Constructors
HOLambdaCall | |
Fields
|
Instances
data ChainableRes #
Constructors
ChainResColl !ResCollDecl | |
ChainResDecl !ResDecl | |
ChainResRefr !Text [Expression] !PPosition |
Instances
class HasHOLambdaCall c where #
Minimal complete definition
Methods
hOLambdaCall :: Lens' c HOLambdaCall #
hoLambdaExpr :: Lens' c (Maybe Expression) #
hoLambdaFunc :: Lens' c LambdaFunc #
hoLambdaLastExpr :: Lens' c (Maybe Expression) #
hoLambdaParams :: Lens' c LambdaParameters #
hoLambdaStatements :: Lens' c (Vector Statement) #
Instances
data LambdaParameters #
Lambda block parameters: Currently only two types of block parameters are supported: single values and pairs.
Instances
data Virtuality #
Constructors
Normal | Normal resource, that will be included in the catalog |
Virtual | Type for virtual resources |
Exported | Type for exported resources |
ExportedRealized | These are resources that are exported AND included in the catalogderiving (Generic, Eq, Show) |
Instances
Constructors
NodeName !Text | |
NodeMatch !CompRegex | |
NodeDefault |
Relationship link type.
Constructors
RNotify | |
RRequire | |
RBefore | |
RSubscribe |
Datatypes
Constructors
Search Expressions
data SearchExpression #
Search expression inside collector `searchexpr |`
Constructors
EqualitySearch !Text !Expression | |
NonEqualitySearch !Text !Expression | |
AndSearch !SearchExpression !SearchExpression | |
OrSearch !SearchExpression !SearchExpression | |
AlwaysTrue |
Instances
Statements
data ConditionalDecl #
All types of conditional statements (case
, if
, etc.) are stored as an ordered list of pair (condition, statements)
(interpreted as "if first cond is true, choose first statements, else take the next pair, check the condition ...")
Constructors
ConditionalDecl !(Vector (Pair Expression (Vector Statement))) !PPosition |
Instances
data ResDefaultDecl #
Resource default: e.g `File { mode => 755 }` https://docs.puppetlabs.com/puppet/latest/reference/lang_defaults.html#language:-resource-default-statements
Constructors
ResDefaultDecl !Text !(Vector AttributeDecl) !PPosition |
Instances
Constructors
DepDecl !(Pair Text Expression) !(Pair Text Expression) !LinkType !PPosition |
All the possible statements
Constructors
ResourceDeclaration !ResDecl | |
ResourceDefaultDeclaration !ResDefaultDecl | |
ResourceOverrideDeclaration !ResOverrideDecl | |
ResourceCollectionDeclaration !ResCollDecl | |
ClassDeclaration !ClassDecl | |
DefineDeclaration !DefineDecl | |
NodeDeclaration !NodeDecl | |
ConditionalDeclaration !ConditionalDecl | |
VarAssignmentDeclaration !VarAssignDecl | |
MainFunctionDeclaration !MainFuncDecl | |
HigherOrderLambdaDeclaration !HigherOrderLambdaDecl | |
DependencyDeclaration !DepDecl | |
TopContainer !(Vector Statement) !Statement | Special statement used to include the expressions that are top level. Certainly buggy, but probably just like the original implementation. |
Resource declaration: e.g `file { mode => 755}`
Constructors
ResDecl !Text !Expression !(Vector AttributeDecl) !Virtuality !PPosition |
data ResOverrideDecl #
Resource override: e.g `File[title
] { mode => 755}`
https://docs.puppetlabs.com/puppet/latest/reference/lang_resources_advanced.html#amending-attributes-with-a-resource-reference
Constructors
ResOverrideDecl !Text !Expression !(Vector AttributeDecl) !PPosition |
Instances
data DefineDecl #
Constructors
DefineDecl !Text !(Vector (Pair (Pair Text (Maybe DataType)) (Maybe Expression))) !(Vector Statement) !PPosition |
Instances
A node is a collection of statements + maybe an inherit node
data VarAssignDecl #
e.g $newvar = world
Constructors
VarAssignDecl !Text !Expression !PPosition |
Instances
data HigherOrderLambdaDecl #
Higher order function call.
Constructors
HigherOrderLambdaDecl !HOLambdaCall !PPosition |
Instances
data ResCollDecl #
Resource Collector including exported collector (``)
e.g `User title == 'jenkins' | { groups +> "docker"}`
https://docs.puppetlabs.com/puppet/latest/reference/lang_collectors.html#language:-resource-collectors
Constructors
ResCollDecl !CollectorType !Text !SearchExpression !(Vector AttributeDecl) !PPosition |
Instances