decaffeinate-parser
Version:
A better AST for CoffeeScript, inspired by CoffeeScriptRedux.
37 lines (36 loc) • 1.33 kB
JavaScript
;
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;