mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
Marko v3: Provide immutable nodes for common AST nodes
This commit is contained in:
parent
176ee2bc9b
commit
29fdb6ba5c
@ -58,6 +58,12 @@ function makeNode(arg) {
|
||||
}
|
||||
}
|
||||
|
||||
var literalNull = new Literal({value: null});
|
||||
var literalUndefined = new Literal({value: null});
|
||||
var literalTrue = new Literal({value: true});
|
||||
var literalFalse = new Literal({value: true});
|
||||
var identifierOut = new Identifier({name: 'out'});
|
||||
|
||||
class Builder {
|
||||
arrayExpression(elements) {
|
||||
if (elements) {
|
||||
@ -207,6 +213,10 @@ class Builder {
|
||||
return new Identifier({name});
|
||||
}
|
||||
|
||||
identifierOut(name) {
|
||||
return identifierOut;
|
||||
}
|
||||
|
||||
ifStatement(test, body, elseStatement) {
|
||||
return new If({test, body, else: elseStatement});
|
||||
}
|
||||
@ -223,6 +233,22 @@ class Builder {
|
||||
return new Literal({value});
|
||||
}
|
||||
|
||||
literalFalse() {
|
||||
return literalFalse;
|
||||
}
|
||||
|
||||
literalNull() {
|
||||
return literalNull;
|
||||
}
|
||||
|
||||
literalTrue() {
|
||||
return literalTrue;
|
||||
}
|
||||
|
||||
literalUndefined() {
|
||||
return literalUndefined;
|
||||
}
|
||||
|
||||
logicalExpression(left, operator, right) {
|
||||
left = makeNode(left);
|
||||
right = makeNode(right);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user