Safe Haskell | None |
---|---|
Language | Haskell98 |
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
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 SelectorCase Source
data UnresolvedValue Source
An unresolved value, typically the parser's output.
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"
data HOLambdaCall Source
HOLambdaCall | |
|
data ChainableRes Source
class HasHOLambdaCall c where Source
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
data LambdaParameters Source
Lambda block parameters: Currently only two types of block parameters are supported: single values and pairs.
data CollectorType Source
data Virtuality Source
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) |
NodeName !Text | |
NodeMatch !CompRegex | |
NodeDefault |
Relationship link type.
Search Expressions
data SearchExpression Source
Search expression inside collector `searchexpr |`
Statements
data AttributeDecl Source
AttributeDecl !Text !ArrowOp !Expression |
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 ...")
ConditionalDecl !(Vector (Pair Expression (Vector Statement))) !PPosition |
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
ResDefaultDecl !Text !(Vector AttributeDecl) !PPosition |
DepDecl !(Pair Text Expression) !(Pair Text Expression) !LinkType !PPosition |
All the possible statements
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}`
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
ResOverrideDecl !Text !Expression !(Vector AttributeDecl) !PPosition |
data DefineDecl Source
DefineDecl !Text !(Vector (Pair Text (Maybe Expression))) !(Vector Statement) !PPosition |
A node is a collection of statements + maybe an inherit node
data MainFuncDecl Source
MainFuncDecl !Text !(Vector Expression) !PPosition |
data HigherOrderLambdaDecl Source
Higher order function call.
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
ResCollDecl !CollectorType !Text !SearchExpression !(Vector AttributeDecl) !PPosition |