UNPKG

decaffeinate-parser

Version:

A better AST for CoffeeScript, inspired by CoffeeScriptRedux.

31 lines (30 loc) 1.38 kB
"use strict"; exports.__esModule = true; var SourceType_1 = require("coffee-lex/dist/SourceType"); var getLocation_1 = require("./getLocation"); var locationDataFromSourceRange_1 = require("./locationDataFromSourceRange"); var sourceRangeFromLocationData_1 = require("./sourceRangeFromLocationData"); function expandToIncludeParens(context, locationData) { var sourceRange = sourceRangeFromLocationData_1["default"](context, locationData); // eslint-disable-next-line no-constant-condition while (true) { var tokens = getSurroundingParens(context, sourceRange); if (tokens === null) { break; } sourceRange = { start: tokens.openParen.start, end: tokens.closeParen.end }; } return locationDataFromSourceRange_1["default"](context, sourceRange); } exports["default"] = expandToIncludeParens; function getSurroundingParens(context, sourceRange) { var tokenBefore = getLocation_1.firstSemanticTokenBefore(context, sourceRange.start); var tokenAfter = getLocation_1.firstSemanticTokenAfter(context, sourceRange.end); if (tokenBefore === null || tokenBefore.type !== SourceType_1["default"].LPAREN) { return null; } if (tokenAfter === null || tokenAfter.type !== SourceType_1["default"].RPAREN) { return null; } return { openParen: tokenBefore, closeParen: tokenAfter }; }