Datamodel
messageformat2.datamodel.Pattern = list[str | Expression | Markup]
messageformat2.datamodel.Declaration = InputDeclaration | LocalDeclaration | UnsupportedStatement
messageformat2.datamodel.Message = PatternMessage | SelectMessage
messageformat2.datamodel.Node
messageformat2.datamodel.VariableRef
dataclass
messageformat2.datamodel.Literal
dataclass
messageformat2.datamodel.Attribute
dataclass
Bases: Node
Source code in messageformat2/datamodel.py
name
instance-attribute
value
instance-attribute
fields
property
messageformat2.datamodel.Option
dataclass
Bases: Node
Source code in messageformat2/datamodel.py
name
instance-attribute
value
instance-attribute
fields
property
messageformat2.datamodel.FunctionAnnotation
dataclass
Bases: Node
Source code in messageformat2/datamodel.py
name
instance-attribute
options
instance-attribute
fields
property
messageformat2.datamodel.UnsupportedAnnotation
dataclass
messageformat2.datamodel.Expression
messageformat2.datamodel.VariableExpression
dataclass
Bases: Expression
Source code in messageformat2/datamodel.py
arg
instance-attribute
annotation
instance-attribute
attributes
instance-attribute
fields
property
messageformat2.datamodel.LiteralExpression
dataclass
Bases: Expression
Source code in messageformat2/datamodel.py
arg
instance-attribute
annotation
instance-attribute
attributes
instance-attribute
fields
property
messageformat2.datamodel.FunctionExpression
dataclass
Bases: Expression
Source code in messageformat2/datamodel.py
annotation
instance-attribute
attributes
instance-attribute
fields
property
messageformat2.datamodel.UnsupportedExpression
dataclass
Bases: Expression
Source code in messageformat2/datamodel.py
annotation
instance-attribute
attributes
instance-attribute
fields
property
messageformat2.datamodel.Markup
dataclass
Bases: Node
Source code in messageformat2/datamodel.py
kind
instance-attribute
name
instance-attribute
options
instance-attribute
attributes
instance-attribute
fields
property
messageformat2.datamodel.CatchallKey
dataclass
messageformat2.datamodel.Variant
dataclass
Bases: Node
Source code in messageformat2/datamodel.py
keys
instance-attribute
value
instance-attribute
fields
property
messageformat2.datamodel.InputDeclaration
dataclass
Bases: Node
Source code in messageformat2/datamodel.py
name
instance-attribute
value
instance-attribute
fields
property
messageformat2.datamodel.LocalDeclaration
dataclass
Bases: Node
Source code in messageformat2/datamodel.py
name
instance-attribute
value
instance-attribute
fields
property
messageformat2.datamodel.UnsupportedStatement
dataclass
Bases: Node
Source code in messageformat2/datamodel.py
keyword
instance-attribute
body
instance-attribute
expressions
instance-attribute
fields
property
messageformat2.datamodel.PatternMessage
dataclass
Bases: Node
Source code in messageformat2/datamodel.py
declarations
instance-attribute
pattern
instance-attribute
fields
property
messageformat2.datamodel.SelectMessage
dataclass
Bases: Node
Source code in messageformat2/datamodel.py
declarations
instance-attribute
selectors
instance-attribute
variants
instance-attribute
fields
property
messageformat2.datamodel.DataModelVisitor
Data model AST visitor.
Works the same way as the ast.NodeVisitor from the Python stdlib.
Examples:
>>> from messageformat2 import Message
>>> from messageformat2.datamodel import DataModelVisitor
>>> class VariableVisitor(DataModelVisitor):
... def visit_VariableRef(self, node):
... print(f"${node.name}")
... self.generic_visit(node)
...
>>> message = Message("Hello, {$name}!")
>>> visitor = VariableVisitor()
>>> visitor.visit(message.datamodel)
$name
Source code in messageformat2/datamodel.py
visit(node)
generic_visit(node)
Source code in messageformat2/datamodel.py
messageformat2.datamodel.DataModelTransformer
Bases: DataModelVisitor
Data model AST transformer.
Works the same way as the ast.NodeTransformer from the Python stdlib.
Examples:
>>> from messageformat2 import Message
>>> from messageformat2.datamodel import Literal, DataModelTransformer
>>> class LiteralTransformer(DataModelTransformer):
... def visit_Literal(self, node):
... return Literal(node.value.upper())
...
>>> message = Message("{|foo|}")
>>> ast = LiteralTransformer().visit(message.datamodel)
>>> str(ast)
'{|FOO|}'
Source code in messageformat2/datamodel.py
generic_visit(node)
Source code in messageformat2/datamodel.py
messageformat2.datamodel.dump(node)
Return a string representation of the node and its children.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
node
|
Node
|
The node to dump. |
required |
Examples:
>>> from messageformat2.message import Message
>>> msg = Message("Hello, {$name}!")
>>> dump(msg.datamodel)
'Hello, {$name}!'