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 {
- _hoLambdaFunc :: !LambdaFunc
- _hoLambdaExpr :: !(Maybe Expression)
- _hoLambdaParams :: !LambdaParameters
- _hoLambdaStatements :: !(Vector Statement)
- _hoLambdaLastExpr :: !(Maybe Expression)
- data ChainableRes
- = ChainResColl !ResCollDecl
- | ChainResDecl !ResDecl
- | ChainResRefr !Text [Expression] !PPosition
- class HasHOLambdaCall c where
- 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)
- data LambdaParameters
- data CompRegex = CompRegex !Text !Regex
- data CollectorType
- data Virtuality
- data NodeDesc
- = NodeName !Text
- | NodeMatch !CompRegex
- | NodeDefault
- data LinkType
- = RNotify
- | RRequire
- | RBefore
- | RSubscribe
- 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 Text (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 Text (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 Source
Generates an initial position based on a filename.
Lenses
lSourceName :: Lens' Position String Source
lSourceLine :: Lens' Position Pos Source
lSourceColumn :: Lens' Position Pos Source
Helpers
capitalizeRT :: Text -> Text Source
Properly capitalizes resource types
Types
Expressions
data Expression Source
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 |
data UnresolvedValue Source
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 |
data LambdaFunc Source
High Order "lambdas"
Constructors
LambEach | |
LambMap | |
LambReduce | |
LambFilter | |
LambSlice |
Instances
data HOLambdaCall Source
Constructors
HOLambdaCall | |
Fields
|
data ChainableRes Source
Constructors
ChainResColl !ResCollDecl | |
ChainResDecl !ResDecl | |
ChainResRefr !Text [Expression] !PPosition |
Instances
class HasHOLambdaCall c where Source
Minimal complete definition
Methods
hOLambdaCall :: Lens' c HOLambdaCall Source
hoLambdaExpr :: Lens' c (Maybe Expression) Source
hoLambdaFunc :: Lens' c LambdaFunc Source
hoLambdaLastExpr :: Lens' c (Maybe Expression) Source
hoLambdaParams :: Lens' c LambdaParameters Source
hoLambdaStatements :: Lens' c (Vector Statement) Source
Instances
data LambdaParameters Source
Lambda block parameters: Currently only two types of block parameters are supported: single values and pairs.
Instances
Constructors
CompRegex !Text !Regex |
data Virtuality Source
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 |
Search Expressions
data SearchExpression Source
Search expression inside collector `searchexpr |`
Constructors
EqualitySearch !Text !Expression | |
NonEqualitySearch !Text !Expression | |
AndSearch !SearchExpression !SearchExpression | |
OrSearch !SearchExpression !SearchExpression | |
AlwaysTrue |
Instances
Statements
Constructors
AppendArrow |
|
AssignArrow | `=>` |
data ConditionalDecl Source
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
Constructors
ClassDecl !Text !(Vector (Pair Text (Maybe Expression))) !(Maybe Text) !(Vector Statement) !PPosition |
data ResDefaultDecl Source
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 Source
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 Source
Constructors
DefineDecl !Text !(Vector (Pair Text (Maybe Expression))) !(Vector Statement) !PPosition |
Instances
A node is a collection of statements + maybe an inherit node
data VarAssignDecl Source
e.g $newvar = world
Constructors
VarAssignDecl !Text !Expression !PPosition |
Instances
data HigherOrderLambdaDecl Source
Higher order function call.
Constructors
HigherOrderLambdaDecl !HOLambdaCall !PPosition |
data ResCollDecl Source
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