You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
983 B
32 lines
983 B
let AST = { |
|
// Public API used to evaluate derived attributes regarding AST nodes |
|
helpers: { |
|
// a mustache is definitely a helper if: |
|
// * it is an eligible helper, and |
|
// * it has at least one parameter or hash segment |
|
helperExpression: function(node) { |
|
return ( |
|
node.type === 'SubExpression' || |
|
((node.type === 'MustacheStatement' || |
|
node.type === 'BlockStatement') && |
|
!!((node.params && node.params.length) || node.hash)) |
|
); |
|
}, |
|
|
|
scopedId: function(path) { |
|
return /^\.|this\b/.test(path.original); |
|
}, |
|
|
|
// an ID is simple if it only has one part, and that part is not |
|
// `..` or `this`. |
|
simpleId: function(path) { |
|
return ( |
|
path.parts.length === 1 && !AST.helpers.scopedId(path) && !path.depth |
|
); |
|
} |
|
} |
|
}; |
|
|
|
// Must be exported as an object rather than the root of the module as the jison lexer |
|
// must modify the object to operate properly. |
|
export default AST;
|
|
|