Skip to content

AST for <%= templateTag %> ​

You can use the type definition of this AST:

ts

export function create(context) {
    const microTemplateService = sourceCode.parserServices.getMicroTemplateService()
    return {
        "Program:exit"() {
            microTemplateService.traverseMicroTemplates({
                MicroTemplateEvaluate(node: MicroTemplateEvaluate): void {
                    // ...
                },
                MicroTemplateInterpolate(node: MicroTemplateInterpolate): void {
                    // ...
                },
                MicroTemplateEscape(node: MicroTemplateEscape): void {
                    // ...
                },
            })
        },
    }
}

See details: https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/ast/micro-template-nodes.js

Token ​

ts
extend interface Token {
    range: [ number ]
}
  • The range property is an array which has 2 integers. The 1st integer is the offset of the start location of the node. The 2nd integer is the offset of the end location of the node.

Node ​

ts
extend interface Node {
    range: [ number ]
}
  • The range property is an array which has 2 integers. The 1st integer is the offset of the start location of the node. The 2nd integer is the offset of the end location of the node.

MicroTemplateEvaluate ​

ts
interface MicroTemplateEvaluate <: Node {
    type: "MicroTemplateEvaluate",
    expressionStart: MicroTemplateExpressionStart,
    expressionEnd: MicroTemplateExpressionEnd,
    code: string
}
  • This is a template tag that is evaluated as script.
  • The start tag information is stored in the expressionStart property.
  • The end tag information is stored in the expressionEnd property.

MicroTemplateInterpolate ​

ts
interface MicroTemplateInterpolate <: Node  {
    type: "MicroTemplateInterpolate",
    expressionStart: MicroTemplateExpressionStart,
    expressionEnd: MicroTemplateExpressionEnd,
    code: string
}
  • This is a template tag that is interpolate as template.
  • The start tag information is stored in the expressionStart property.
  • The end tag information is stored in the expressionEnd property.

MicroTemplateEscape ​

ts
interface MicroTemplateInterpolate <: Node  {
    type: "MicroTemplateEscape",
    expressionStart: MicroTemplateExpressionStart,
    expressionEnd: MicroTemplateExpressionEnd,
    code: string
}
  • This is a template tag that is escapes to interpolate as template.
  • The start tag information is stored in the expressionStart property.
  • The end tag information is stored in the expressionEnd property.

MicroTemplateExpressionStart ​

ts
interface MicroTemplateExpressionStart <: Token  {
    type: "MicroTemplateExpressionStart",
    chars: string
}
  • This is the start tag of the template tag.
  • The delimiter string is stored in the chars property.

MicroTemplateExpressionEnd ​

ts
interface MicroTemplateExpressionEnd <: Token  {
    type: "MicroTemplateExpressionEnd",
    chars: string
}
  • This is the end tag of the template tag.
  • The delimiter string is stored in the chars property.