UNPKG

decaffeinate-parser

Version:

A better AST for CoffeeScript, inspired by CoffeeScriptRedux.

37 lines (36 loc) 1.33 kB
"use strict"; exports.__esModule = true; var coffee_lex_1 = require("coffee-lex"); var nodes_1 = require("decaffeinate-coffeescript2/lib/coffeescript/nodes"); /** * Determine if the given CoffeeScript AST node is an interpolated heregex node * that's pretending to be a function call to the RegExp function. */ function isHeregexTemplateNode(node, context) { if (!(node instanceof nodes_1.Call) || !node.variable || !(node.variable instanceof nodes_1.Value) || !node.variable.base || !(node.variable.base instanceof nodes_1.Literal) || node.variable.base.value !== 'RegExp') { return false; } var sourceTokens = context.sourceTokens, linesAndColumns = context.linesAndColumns; var start = linesAndColumns.indexForLocation({ line: node.locationData.first_line, column: node.locationData.first_column }); if (start === null) { return false; } var startTokenIndex = sourceTokens.indexOfTokenContainingSourceIndex(start); if (startTokenIndex === null) { return false; } var startToken = sourceTokens.tokenAtIndex(startTokenIndex); if (startToken === null) { return false; } return startToken.type === coffee_lex_1.SourceType.HEREGEXP_START; } exports["default"] = isHeregexTemplateNode;