coffee-lex
Advanced tools
Comparing version 8.0.0 to 8.1.0
"use strict"; | ||
exports.__esModule = true; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var SourceLocation_1 = require("./SourceLocation"); | ||
@@ -7,3 +7,3 @@ var SourceToken_1 = require("./SourceToken"); | ||
var SourceType_1 = require("./SourceType"); | ||
exports.SourceType = SourceType_1["default"]; | ||
exports.SourceType = SourceType_1.default; | ||
var BufferedStream_1 = require("./utils/BufferedStream"); | ||
@@ -20,19 +20,20 @@ var calculateHeregexpPadding_1 = require("./utils/calculateHeregexpPadding"); | ||
var tokens = []; | ||
var pending = new BufferedStream_1["default"](stream(source)); | ||
var pending = new BufferedStream_1.default(stream(source)); | ||
do { | ||
pending.unshift.apply(pending, calculateNormalStringPadding_1["default"](source, pending)); | ||
pending.unshift.apply(pending, calculateTripleQuotedStringPadding_1["default"](source, pending)); | ||
pending.unshift.apply(pending, calculateHeregexpPadding_1["default"](source, pending)); | ||
pending.unshift.apply(pending, calculateNormalStringPadding_1.default(source, pending)); | ||
pending.unshift.apply(pending, calculateTripleQuotedStringPadding_1.default(source, pending)); | ||
pending.unshift.apply(pending, calculateHeregexpPadding_1.default(source, pending)); | ||
pending.unshift.apply(pending, combinedLocationsForMultiwordOperators(pending, source)); | ||
location = pending.shift(); | ||
if (previousLocation && previousLocation.type !== SourceType_1["default"].SPACE) { | ||
tokens.push(new SourceToken_1["default"](previousLocation.type, previousLocation.index, location.index)); | ||
if (previousLocation && previousLocation.type !== SourceType_1.default.SPACE) { | ||
tokens.push(new SourceToken_1.default(previousLocation.type, previousLocation.index, location.index)); | ||
} | ||
previousLocation = location; | ||
} while (location.type !== SourceType_1["default"].EOF); | ||
return new SourceTokenList_1["default"](tokens); | ||
} while (location.type !== SourceType_1.default.EOF); | ||
return new SourceTokenList_1.default(tokens); | ||
} | ||
exports["default"] = lex; | ||
exports.default = lex; | ||
function combinedLocationsForMultiwordOperators(stream, source) { | ||
if (!stream.hasNext(SourceType_1["default"].OPERATOR, SourceType_1["default"].SPACE, SourceType_1["default"].OPERATOR) && !stream.hasNext(SourceType_1["default"].OPERATOR, SourceType_1["default"].SPACE, SourceType_1["default"].RELATION)) { | ||
if (!stream.hasNext(SourceType_1.default.OPERATOR, SourceType_1.default.SPACE, SourceType_1.default.OPERATOR) && | ||
!stream.hasNext(SourceType_1.default.OPERATOR, SourceType_1.default.SPACE, SourceType_1.default.RELATION)) { | ||
return []; | ||
@@ -49,9 +50,5 @@ } | ||
case 'of': | ||
return [ | ||
new SourceLocation_1["default"](SourceType_1["default"].RELATION, not.index) | ||
]; | ||
return [new SourceLocation_1.default(SourceType_1.default.RELATION, not.index)]; | ||
case 'instanceof': | ||
return [ | ||
new SourceLocation_1["default"](SourceType_1["default"].OPERATOR, not.index) | ||
]; | ||
return [new SourceLocation_1.default(SourceType_1.default.OPERATOR, not.index)]; | ||
} | ||
@@ -66,13 +63,25 @@ } | ||
*/ | ||
var STRING = [SourceType_1["default"].SSTRING_END, SourceType_1["default"].DSTRING_END, SourceType_1["default"].TSSTRING_END, SourceType_1["default"].TDSTRING_END]; | ||
var STRING = [SourceType_1.default.SSTRING_END, SourceType_1.default.DSTRING_END, SourceType_1.default.TSSTRING_END, SourceType_1.default.TDSTRING_END]; | ||
var CALLABLE = [ | ||
SourceType_1["default"].IDENTIFIER, SourceType_1["default"].CALL_END, SourceType_1["default"].RPAREN, SourceType_1["default"].RBRACKET, SourceType_1["default"].EXISTENCE, SourceType_1["default"].AT, SourceType_1["default"].THIS, SourceType_1["default"].SUPER | ||
SourceType_1.default.IDENTIFIER, | ||
SourceType_1.default.CALL_END, | ||
SourceType_1.default.RPAREN, | ||
SourceType_1.default.RBRACKET, | ||
SourceType_1.default.EXISTENCE, | ||
SourceType_1.default.AT, | ||
SourceType_1.default.THIS, | ||
SourceType_1.default.SUPER | ||
]; | ||
var INDEXABLE = CALLABLE.concat([ | ||
SourceType_1["default"].NUMBER | ||
SourceType_1.default.NUMBER | ||
].concat(STRING, [ | ||
SourceType_1["default"].REGEXP, SourceType_1["default"].HEREGEXP_END, | ||
SourceType_1["default"].BOOL, SourceType_1["default"].NULL, SourceType_1["default"].UNDEFINED, SourceType_1["default"].RBRACE, SourceType_1["default"].PROTO | ||
SourceType_1.default.REGEXP, | ||
SourceType_1.default.HEREGEXP_END, | ||
SourceType_1.default.BOOL, | ||
SourceType_1.default.NULL, | ||
SourceType_1.default.UNDEFINED, | ||
SourceType_1.default.RBRACE, | ||
SourceType_1.default.PROTO | ||
])); | ||
var NOT_REGEXP = INDEXABLE.concat([SourceType_1["default"].INCREMENT, SourceType_1["default"].DECREMENT]); | ||
var NOT_REGEXP = INDEXABLE.concat([SourceType_1.default.INCREMENT, SourceType_1.default.DECREMENT]); | ||
var IDENTIFIER_PATTERN = /^(?!\d)((?:(?!\s)[$\w\x7f-\uffff])+)/; | ||
@@ -85,23 +94,58 @@ var NUMBER_PATTERN = /^0b[01]+|^0o[0-7]+|^0x[\da-f]+|^\d*\.?\d+(?:e[+-]?\d+)?/i; | ||
// equality | ||
'===', '==', '!==', '!=', | ||
'===', | ||
'==', | ||
'!==', | ||
'!=', | ||
// assignment | ||
'=', | ||
'+=', '-=', '/=', '*=', '%=', '%%=', | ||
'||=', '&&=', '^=', 'or=', 'and=', | ||
'+=', | ||
'-=', | ||
'/=', | ||
'*=', | ||
'%=', | ||
'%%=', | ||
'||=', | ||
'&&=', | ||
'^=', | ||
'or=', | ||
'and=', | ||
'?=', | ||
'|=', '&=', '~=', '<<=', '>>>=', '>>=', | ||
'|=', | ||
'&=', | ||
'~=', | ||
'<<=', | ||
'>>>=', | ||
'>>=', | ||
// increment/decrement | ||
'++', '--', | ||
'++', | ||
'--', | ||
// math | ||
'+', '-', '//', '/', '*', '%', '%%', | ||
'+', | ||
'-', | ||
'//', | ||
'/', | ||
'*', | ||
'%', | ||
'%%', | ||
// logical | ||
'||', '&&', '^', '!', | ||
'||', | ||
'&&', | ||
'^', | ||
'!', | ||
// existence | ||
'?', | ||
// bitwise | ||
'|', '&', '~', '<<', '>>>', '>>', | ||
'|', | ||
'&', | ||
'~', | ||
'<<', | ||
'>>>', | ||
'>>', | ||
// comparison | ||
'<=', '<', '>=', '>', | ||
'<=', | ||
'<', | ||
'>=', | ||
'>', | ||
// prototype access | ||
'::', | ||
'::' | ||
]; | ||
@@ -113,3 +157,3 @@ /** | ||
if (index === void 0) { index = 0; } | ||
var location = new SourceLocation_1["default"](SourceType_1["default"].NORMAL, index); | ||
var location = new SourceLocation_1.default(SourceType_1.default.NORMAL, index); | ||
var interpolationStack = []; | ||
@@ -127,80 +171,83 @@ var braceStack = []; | ||
if (index >= source.length) { | ||
setType(SourceType_1["default"].EOF); | ||
setType(SourceType_1.default.EOF); | ||
} | ||
switch (location.type) { | ||
case SourceType_1["default"].NORMAL: | ||
case SourceType_1["default"].SPACE: | ||
case SourceType_1["default"].IDENTIFIER: | ||
case SourceType_1["default"].DOT: | ||
case SourceType_1["default"].NUMBER: | ||
case SourceType_1["default"].OPERATOR: | ||
case SourceType_1["default"].INCREMENT: | ||
case SourceType_1["default"].DECREMENT: | ||
case SourceType_1["default"].COMMA: | ||
case SourceType_1["default"].LPAREN: | ||
case SourceType_1["default"].RPAREN: | ||
case SourceType_1["default"].CALL_START: | ||
case SourceType_1["default"].CALL_END: | ||
case SourceType_1["default"].NEW: | ||
case SourceType_1["default"].LBRACE: | ||
case SourceType_1["default"].RBRACE: | ||
case SourceType_1["default"].LBRACKET: | ||
case SourceType_1["default"].RBRACKET: | ||
case SourceType_1["default"].NEWLINE: | ||
case SourceType_1["default"].COLON: | ||
case SourceType_1["default"].FUNCTION: | ||
case SourceType_1["default"].THIS: | ||
case SourceType_1["default"].AT: | ||
case SourceType_1["default"].SEMICOLON: | ||
case SourceType_1["default"].IF: | ||
case SourceType_1["default"].ELSE: | ||
case SourceType_1["default"].THEN: | ||
case SourceType_1["default"].FOR: | ||
case SourceType_1["default"].OWN: | ||
case SourceType_1["default"].WHILE: | ||
case SourceType_1["default"].BOOL: | ||
case SourceType_1["default"].NULL: | ||
case SourceType_1["default"].UNDEFINED: | ||
case SourceType_1["default"].REGEXP: | ||
case SourceType_1["default"].SSTRING_END: | ||
case SourceType_1["default"].DSTRING_END: | ||
case SourceType_1["default"].TSSTRING_END: | ||
case SourceType_1["default"].TDSTRING_END: | ||
case SourceType_1["default"].INTERPOLATION_START: | ||
case SourceType_1["default"].SUPER: | ||
case SourceType_1["default"].TRY: | ||
case SourceType_1["default"].CATCH: | ||
case SourceType_1["default"].FINALLY: | ||
case SourceType_1["default"].SWITCH: | ||
case SourceType_1["default"].WHEN: | ||
case SourceType_1["default"].BREAK: | ||
case SourceType_1["default"].CONTINUE: | ||
case SourceType_1["default"].EXISTENCE: | ||
case SourceType_1["default"].CLASS: | ||
case SourceType_1["default"].PROTO: | ||
case SourceType_1["default"].RANGE: | ||
case SourceType_1["default"].DELETE: | ||
case SourceType_1["default"].RETURN: | ||
case SourceType_1["default"].RELATION: | ||
case SourceType_1["default"].LOOP: | ||
case SourceType_1["default"].DO: | ||
case SourceType_1["default"].YIELD: | ||
case SourceType_1["default"].YIELDFROM: | ||
case SourceType_1["default"].THROW: | ||
case SourceType_1["default"].EXTENDS: | ||
case SourceType_1["default"].CONTINUATION: | ||
case SourceType_1.default.NORMAL: | ||
case SourceType_1.default.SPACE: | ||
case SourceType_1.default.IDENTIFIER: | ||
case SourceType_1.default.DOT: | ||
case SourceType_1.default.NUMBER: | ||
case SourceType_1.default.OPERATOR: | ||
case SourceType_1.default.INCREMENT: | ||
case SourceType_1.default.DECREMENT: | ||
case SourceType_1.default.COMMA: | ||
case SourceType_1.default.LPAREN: | ||
case SourceType_1.default.RPAREN: | ||
case SourceType_1.default.CALL_START: | ||
case SourceType_1.default.CALL_END: | ||
case SourceType_1.default.NEW: | ||
case SourceType_1.default.LBRACE: | ||
case SourceType_1.default.RBRACE: | ||
case SourceType_1.default.LBRACKET: | ||
case SourceType_1.default.RBRACKET: | ||
case SourceType_1.default.NEWLINE: | ||
case SourceType_1.default.COLON: | ||
case SourceType_1.default.FUNCTION: | ||
case SourceType_1.default.THIS: | ||
case SourceType_1.default.AT: | ||
case SourceType_1.default.SEMICOLON: | ||
case SourceType_1.default.IF: | ||
case SourceType_1.default.ELSE: | ||
case SourceType_1.default.THEN: | ||
case SourceType_1.default.FOR: | ||
case SourceType_1.default.OWN: | ||
case SourceType_1.default.WHILE: | ||
case SourceType_1.default.BOOL: | ||
case SourceType_1.default.NULL: | ||
case SourceType_1.default.UNDEFINED: | ||
case SourceType_1.default.REGEXP: | ||
case SourceType_1.default.SSTRING_END: | ||
case SourceType_1.default.DSTRING_END: | ||
case SourceType_1.default.TSSTRING_END: | ||
case SourceType_1.default.TDSTRING_END: | ||
case SourceType_1.default.INTERPOLATION_START: | ||
case SourceType_1.default.SUPER: | ||
case SourceType_1.default.TRY: | ||
case SourceType_1.default.CATCH: | ||
case SourceType_1.default.FINALLY: | ||
case SourceType_1.default.SWITCH: | ||
case SourceType_1.default.WHEN: | ||
case SourceType_1.default.BREAK: | ||
case SourceType_1.default.CONTINUE: | ||
case SourceType_1.default.EXISTENCE: | ||
case SourceType_1.default.CLASS: | ||
case SourceType_1.default.PROTO: | ||
case SourceType_1.default.RANGE: | ||
case SourceType_1.default.DELETE: | ||
case SourceType_1.default.RETURN: | ||
case SourceType_1.default.RELATION: | ||
case SourceType_1.default.LOOP: | ||
case SourceType_1.default.DO: | ||
case SourceType_1.default.YIELD: | ||
case SourceType_1.default.YIELDFROM: | ||
case SourceType_1.default.THROW: | ||
case SourceType_1.default.EXTENDS: | ||
case SourceType_1.default.IMPORT: | ||
case SourceType_1.default.EXPORT: | ||
case SourceType_1.default.DEFAULT: | ||
case SourceType_1.default.CONTINUATION: | ||
if (consume(SPACE_PATTERN)) { | ||
setType(SourceType_1["default"].SPACE); | ||
setType(SourceType_1.default.SPACE); | ||
} | ||
else if (consume('\n')) { | ||
setType(SourceType_1["default"].NEWLINE); | ||
setType(SourceType_1.default.NEWLINE); | ||
} | ||
else if (consume('...') || consume('..')) { | ||
setType(SourceType_1["default"].RANGE); | ||
setType(SourceType_1.default.RANGE); | ||
} | ||
else if (consume(NUMBER_PATTERN)) { | ||
setType(SourceType_1["default"].NUMBER); | ||
setType(SourceType_1.default.NUMBER); | ||
} | ||
else if (consume('.')) { | ||
setType(SourceType_1["default"].DOT); | ||
setType(SourceType_1.default.DOT); | ||
} | ||
@@ -211,5 +258,5 @@ else if (consume('"""')) { | ||
endingDelimiter: '"""', | ||
endSourceType: SourceType_1["default"].TDSTRING_END | ||
endSourceType: SourceType_1.default.TDSTRING_END | ||
}); | ||
setType(SourceType_1["default"].TDSTRING_START); | ||
setType(SourceType_1.default.TDSTRING_START); | ||
} | ||
@@ -220,27 +267,27 @@ else if (consume('"')) { | ||
endingDelimiter: '"', | ||
endSourceType: SourceType_1["default"].DSTRING_END | ||
endSourceType: SourceType_1.default.DSTRING_END | ||
}); | ||
setType(SourceType_1["default"].DSTRING_START); | ||
setType(SourceType_1.default.DSTRING_START); | ||
} | ||
else if (consume('\'\'\'')) { | ||
else if (consume("'''")) { | ||
stringStack.push({ | ||
allowInterpolations: false, | ||
endingDelimiter: '\'\'\'', | ||
endSourceType: SourceType_1["default"].TSSTRING_END | ||
endingDelimiter: "'''", | ||
endSourceType: SourceType_1.default.TSSTRING_END | ||
}); | ||
setType(SourceType_1["default"].TSSTRING_START); | ||
setType(SourceType_1.default.TSSTRING_START); | ||
} | ||
else if (consume('\'')) { | ||
else if (consume("'")) { | ||
stringStack.push({ | ||
allowInterpolations: false, | ||
endingDelimiter: '\'', | ||
endSourceType: SourceType_1["default"].SSTRING_END | ||
endingDelimiter: "'", | ||
endSourceType: SourceType_1.default.SSTRING_END | ||
}); | ||
setType(SourceType_1["default"].SSTRING_START); | ||
setType(SourceType_1.default.SSTRING_START); | ||
} | ||
else if (consume(/^###[^#]/)) { | ||
setType(SourceType_1["default"].HERECOMMENT); | ||
setType(SourceType_1.default.HERECOMMENT); | ||
} | ||
else if (consume('#')) { | ||
setType(SourceType_1["default"].COMMENT); | ||
setType(SourceType_1.default.COMMENT); | ||
} | ||
@@ -251,14 +298,14 @@ else if (consume('///')) { | ||
endingDelimiter: '///', | ||
endSourceType: SourceType_1["default"].HEREGEXP_END | ||
endSourceType: SourceType_1.default.HEREGEXP_END | ||
}); | ||
setType(SourceType_1["default"].HEREGEXP_START); | ||
setType(SourceType_1.default.HEREGEXP_START); | ||
} | ||
else if (consume('(')) { | ||
if (CALLABLE.indexOf(location.type) >= 0) { | ||
parenStack.push(SourceType_1["default"].CALL_START); | ||
setType(SourceType_1["default"].CALL_START); | ||
parenStack.push(SourceType_1.default.CALL_START); | ||
setType(SourceType_1.default.CALL_START); | ||
} | ||
else { | ||
parenStack.push(SourceType_1["default"].LPAREN); | ||
setType(SourceType_1["default"].LPAREN); | ||
parenStack.push(SourceType_1.default.LPAREN); | ||
setType(SourceType_1.default.LPAREN); | ||
} | ||
@@ -273,7 +320,7 @@ } | ||
switch (lparen) { | ||
case SourceType_1["default"].LPAREN: | ||
setType(SourceType_1["default"].RPAREN); | ||
case SourceType_1.default.LPAREN: | ||
setType(SourceType_1.default.RPAREN); | ||
break; | ||
case SourceType_1["default"].CALL_START: | ||
setType(SourceType_1["default"].CALL_END); | ||
case SourceType_1.default.CALL_START: | ||
setType(SourceType_1.default.CALL_END); | ||
break; | ||
@@ -286,10 +333,10 @@ default: | ||
else if (consume('[')) { | ||
setType(SourceType_1["default"].LBRACKET); | ||
setType(SourceType_1.default.LBRACKET); | ||
} | ||
else if (consume(']')) { | ||
setType(SourceType_1["default"].RBRACKET); | ||
setType(SourceType_1.default.RBRACKET); | ||
} | ||
else if (consume('{')) { | ||
braceStack.push(start); | ||
setType(SourceType_1["default"].LBRACE); | ||
setType(SourceType_1.default.LBRACE); | ||
} | ||
@@ -302,49 +349,52 @@ else if (consume('}')) { | ||
braceStack.pop(); | ||
setType(SourceType_1["default"].RBRACE); | ||
setType(SourceType_1.default.RBRACE); | ||
} | ||
} | ||
else if (consumeAny(['->', '=>'])) { | ||
setType(SourceType_1["default"].FUNCTION); | ||
setType(SourceType_1.default.FUNCTION); | ||
} | ||
else if (consumeRegexp()) { | ||
setType(SourceType_1["default"].REGEXP); | ||
setType(SourceType_1.default.REGEXP); | ||
} | ||
else if (consume('::')) { | ||
setType(SourceType_1["default"].PROTO); | ||
setType(SourceType_1.default.PROTO); | ||
} | ||
else if (consume(':')) { | ||
setType(SourceType_1["default"].COLON); | ||
setType(SourceType_1.default.COLON); | ||
} | ||
else if (consume(',')) { | ||
setType(SourceType_1["default"].COMMA); | ||
setType(SourceType_1.default.COMMA); | ||
} | ||
else if (consume('@')) { | ||
setType(SourceType_1["default"].AT); | ||
setType(SourceType_1.default.AT); | ||
} | ||
else if (consume(';')) { | ||
setType(SourceType_1["default"].SEMICOLON); | ||
setType(SourceType_1.default.SEMICOLON); | ||
} | ||
else if (consume('```')) { | ||
setType(SourceType_1.default.HEREJS); | ||
} | ||
else if (consume('`')) { | ||
setType(SourceType_1["default"].JS); | ||
setType(SourceType_1.default.JS); | ||
} | ||
else if (consumeAny(OPERATORS)) { | ||
if (consumed() === '?') { | ||
setType(SourceType_1["default"].EXISTENCE); | ||
setType(SourceType_1.default.EXISTENCE); | ||
} | ||
else if (consumed() === '++') { | ||
setType(SourceType_1["default"].INCREMENT); | ||
setType(SourceType_1.default.INCREMENT); | ||
} | ||
else if (consumed() === '--') { | ||
setType(SourceType_1["default"].DECREMENT); | ||
setType(SourceType_1.default.DECREMENT); | ||
} | ||
else { | ||
setType(SourceType_1["default"].OPERATOR); | ||
setType(SourceType_1.default.OPERATOR); | ||
} | ||
} | ||
else if (consume(YIELDFROM_PATTERN)) { | ||
setType(SourceType_1["default"].YIELDFROM); | ||
setType(SourceType_1.default.YIELDFROM); | ||
} | ||
else if (consume(IDENTIFIER_PATTERN)) { | ||
var prevLocationIndex = locations.length - 1; | ||
while (prevLocationIndex > 0 && locations[prevLocationIndex].type === SourceType_1["default"].NEWLINE) { | ||
while (prevLocationIndex > 0 && locations[prevLocationIndex].type === SourceType_1.default.NEWLINE) { | ||
prevLocationIndex--; | ||
@@ -354,4 +404,5 @@ } | ||
var nextIsColon = match(/^\s*:/); | ||
if (nextIsColon || (prev && (prev.type === SourceType_1["default"].DOT || prev.type === SourceType_1["default"].PROTO || prev.type === SourceType_1["default"].AT))) { | ||
setType(SourceType_1["default"].IDENTIFIER); | ||
if (nextIsColon || | ||
(prev && (prev.type === SourceType_1.default.DOT || prev.type === SourceType_1.default.PROTO || prev.type === SourceType_1.default.AT))) { | ||
setType(SourceType_1.default.IDENTIFIER); | ||
} | ||
@@ -362,46 +413,46 @@ else { | ||
case 'unless': | ||
setType(SourceType_1["default"].IF); | ||
setType(SourceType_1.default.IF); | ||
break; | ||
case 'else': | ||
setType(SourceType_1["default"].ELSE); | ||
setType(SourceType_1.default.ELSE); | ||
break; | ||
case 'return': | ||
setType(SourceType_1["default"].RETURN); | ||
setType(SourceType_1.default.RETURN); | ||
break; | ||
case 'for': | ||
setType(SourceType_1["default"].FOR); | ||
setType(SourceType_1.default.FOR); | ||
break; | ||
case 'own': | ||
setType(SourceType_1["default"].OWN); | ||
setType(SourceType_1.default.OWN); | ||
break; | ||
case 'while': | ||
case 'until': | ||
setType(SourceType_1["default"].WHILE); | ||
setType(SourceType_1.default.WHILE); | ||
break; | ||
case 'loop': | ||
setType(SourceType_1["default"].LOOP); | ||
setType(SourceType_1.default.LOOP); | ||
break; | ||
case 'then': | ||
setType(SourceType_1["default"].THEN); | ||
setType(SourceType_1.default.THEN); | ||
break; | ||
case 'switch': | ||
setType(SourceType_1["default"].SWITCH); | ||
setType(SourceType_1.default.SWITCH); | ||
break; | ||
case 'when': | ||
setType(SourceType_1["default"].WHEN); | ||
setType(SourceType_1.default.WHEN); | ||
break; | ||
case 'null': | ||
setType(SourceType_1["default"].NULL); | ||
setType(SourceType_1.default.NULL); | ||
break; | ||
case 'undefined': | ||
setType(SourceType_1["default"].UNDEFINED); | ||
setType(SourceType_1.default.UNDEFINED); | ||
break; | ||
case 'this': | ||
setType(SourceType_1["default"].THIS); | ||
setType(SourceType_1.default.THIS); | ||
break; | ||
case 'new': | ||
setType(SourceType_1["default"].NEW); | ||
setType(SourceType_1.default.NEW); | ||
break; | ||
case 'super': | ||
setType(SourceType_1["default"].SUPER); | ||
setType(SourceType_1.default.SUPER); | ||
break; | ||
@@ -414,3 +465,3 @@ case 'true': | ||
case 'off': | ||
setType(SourceType_1["default"].BOOL); | ||
setType(SourceType_1.default.BOOL); | ||
break; | ||
@@ -423,43 +474,52 @@ case 'and': | ||
case 'instanceof': | ||
setType(SourceType_1["default"].OPERATOR); | ||
setType(SourceType_1.default.OPERATOR); | ||
break; | ||
case 'class': | ||
setType(SourceType_1["default"].CLASS); | ||
setType(SourceType_1.default.CLASS); | ||
break; | ||
case 'break': | ||
setType(SourceType_1["default"].BREAK); | ||
setType(SourceType_1.default.BREAK); | ||
break; | ||
case 'continue': | ||
setType(SourceType_1["default"].CONTINUE); | ||
setType(SourceType_1.default.CONTINUE); | ||
break; | ||
case 'try': | ||
setType(SourceType_1["default"].TRY); | ||
setType(SourceType_1.default.TRY); | ||
break; | ||
case 'catch': | ||
setType(SourceType_1["default"].CATCH); | ||
setType(SourceType_1.default.CATCH); | ||
break; | ||
case 'finally': | ||
setType(SourceType_1["default"].FINALLY); | ||
setType(SourceType_1.default.FINALLY); | ||
break; | ||
case 'delete': | ||
setType(SourceType_1["default"].DELETE); | ||
setType(SourceType_1.default.DELETE); | ||
break; | ||
case 'in': | ||
case 'of': | ||
setType(SourceType_1["default"].RELATION); | ||
setType(SourceType_1.default.RELATION); | ||
break; | ||
case 'do': | ||
setType(SourceType_1["default"].DO); | ||
setType(SourceType_1.default.DO); | ||
break; | ||
case 'yield': | ||
setType(SourceType_1["default"].YIELD); | ||
setType(SourceType_1.default.YIELD); | ||
break; | ||
case 'throw': | ||
setType(SourceType_1["default"].THROW); | ||
setType(SourceType_1.default.THROW); | ||
break; | ||
case 'extends': | ||
setType(SourceType_1["default"].EXTENDS); | ||
setType(SourceType_1.default.EXTENDS); | ||
break; | ||
case 'import': | ||
setType(SourceType_1.default.IMPORT); | ||
break; | ||
case 'export': | ||
setType(SourceType_1.default.EXPORT); | ||
break; | ||
case 'default': | ||
setType(SourceType_1.default.DEFAULT); | ||
break; | ||
default: | ||
setType(SourceType_1["default"].IDENTIFIER); | ||
setType(SourceType_1.default.IDENTIFIER); | ||
} | ||
@@ -469,16 +529,16 @@ } | ||
else if (consume('\\')) { | ||
setType(SourceType_1["default"].CONTINUATION); | ||
setType(SourceType_1.default.CONTINUATION); | ||
} | ||
else { | ||
setType(SourceType_1["default"].UNKNOWN); | ||
setType(SourceType_1.default.UNKNOWN); | ||
} | ||
break; | ||
case SourceType_1["default"].SSTRING_START: | ||
case SourceType_1["default"].DSTRING_START: | ||
case SourceType_1["default"].TSSTRING_START: | ||
case SourceType_1["default"].TDSTRING_START: | ||
case SourceType_1["default"].HEREGEXP_START: | ||
setType(SourceType_1["default"].STRING_CONTENT); | ||
case SourceType_1.default.SSTRING_START: | ||
case SourceType_1.default.DSTRING_START: | ||
case SourceType_1.default.TSSTRING_START: | ||
case SourceType_1.default.TDSTRING_START: | ||
case SourceType_1.default.HEREGEXP_START: | ||
setType(SourceType_1.default.STRING_CONTENT); | ||
break; | ||
case SourceType_1["default"].STRING_CONTENT: { | ||
case SourceType_1.default.STRING_CONTENT: { | ||
var stringOptions = stringStack[stringStack.length - 1]; | ||
@@ -503,5 +563,5 @@ if (!stringOptions) { | ||
} | ||
case SourceType_1["default"].COMMENT: | ||
case SourceType_1.default.COMMENT: | ||
if (consume('\n')) { | ||
setType(SourceType_1["default"].NEWLINE); | ||
setType(SourceType_1.default.NEWLINE); | ||
} | ||
@@ -512,5 +572,5 @@ else { | ||
break; | ||
case SourceType_1["default"].HERECOMMENT: | ||
case SourceType_1.default.HERECOMMENT: | ||
if (consume('###')) { | ||
setType(SourceType_1["default"].NORMAL); | ||
setType(SourceType_1.default.NORMAL); | ||
} | ||
@@ -521,3 +581,3 @@ else { | ||
break; | ||
case SourceType_1["default"].INTERPOLATION_END: | ||
case SourceType_1.default.INTERPOLATION_END: | ||
var lastInterpolation = interpolationStack.pop(); | ||
@@ -531,9 +591,9 @@ if (!lastInterpolation) { | ||
break; | ||
case SourceType_1["default"].HEREGEXP_END: | ||
case SourceType_1.default.HEREGEXP_END: | ||
while (consumeAny(REGEXP_FLAGS)) { | ||
// condition has side-effect | ||
} | ||
setType(SourceType_1["default"].NORMAL); | ||
setType(SourceType_1.default.NORMAL); | ||
break; | ||
case SourceType_1["default"].JS: | ||
case SourceType_1.default.JS: | ||
if (consume('\\')) { | ||
@@ -543,3 +603,3 @@ index++; | ||
else if (consume('`')) { | ||
setType(SourceType_1["default"].NORMAL); | ||
setType(SourceType_1.default.NORMAL); | ||
} | ||
@@ -550,6 +610,16 @@ else { | ||
break; | ||
case SourceType_1["default"].EOF: | ||
case SourceType_1.default.HEREJS: | ||
if (consume('\\')) { | ||
index++; | ||
} | ||
else if (consume('```')) { | ||
setType(SourceType_1.default.NORMAL); | ||
} | ||
else { | ||
index++; | ||
} | ||
break; | ||
case SourceType_1.default.EOF: | ||
if (braceStack.length !== 0) { | ||
throw new Error("unexpected EOF while looking for '}' to match '{' " + | ||
("at " + braceStack[braceStack.length - 1])); | ||
throw new Error("unexpected EOF while looking for '}' to match '{' " + ("at " + braceStack[braceStack.length - 1])); | ||
} | ||
@@ -560,3 +630,3 @@ if (stringStack.length !== 0) { | ||
break; | ||
case SourceType_1["default"].UNKNOWN: | ||
case SourceType_1.default.UNKNOWN: | ||
// Jump to the end. | ||
@@ -566,10 +636,9 @@ index = source.length; | ||
default: | ||
throw new Error("unknown source type at offset " + location.index + ": " + SourceType_1["default"][location.type]); | ||
throw new Error("unknown source type at offset " + location.index + ": " + SourceType_1.default[location.type]); | ||
} | ||
shouldStepAgain = ( | ||
// Don't report on going back to "normal" source code. | ||
location.type === SourceType_1["default"].NORMAL || | ||
// Don't report if nothing has changed, unless we're at the end. | ||
(location === lastLocation && | ||
location.type !== SourceType_1["default"].EOF)); | ||
shouldStepAgain = | ||
// Don't report on going back to "normal" source code. | ||
location.type === SourceType_1.default.NORMAL || | ||
// Don't report if nothing has changed, unless we're at the end. | ||
(location === lastLocation && location.type !== SourceType_1.default.EOF); | ||
} while (shouldStepAgain); | ||
@@ -601,3 +670,3 @@ locations.push(location); | ||
var spaced = false; | ||
if (prev.type === SourceType_1["default"].SPACE) { | ||
if (prev.type === SourceType_1.default.SPACE) { | ||
spaced = true; | ||
@@ -628,3 +697,3 @@ prev = locations[locations.length - 2]; | ||
function setType(newType) { | ||
location = new SourceLocation_1["default"](newType, start); | ||
location = new SourceLocation_1.default(newType, start); | ||
} | ||
@@ -642,3 +711,3 @@ function match(value) { | ||
interpolationStack.push({ type: location.type, braces: braceStack }); | ||
setType(SourceType_1["default"].INTERPOLATION_START); | ||
setType(SourceType_1.default.INTERPOLATION_START); | ||
braceStack = []; | ||
@@ -650,3 +719,3 @@ } | ||
} | ||
setType(SourceType_1["default"].INTERPOLATION_END); | ||
setType(SourceType_1.default.INTERPOLATION_END); | ||
} | ||
@@ -661,5 +730,5 @@ } | ||
result.push(location); | ||
} while (location.type !== SourceType_1["default"].EOF); | ||
} while (location.type !== SourceType_1.default.EOF); | ||
return result; | ||
} | ||
exports.consumeStream = consumeStream; |
"use strict"; | ||
exports.__esModule = true; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
/** | ||
* Represents a change in source code type at a particular index. | ||
*/ | ||
var SourceLocation = (function () { | ||
var SourceLocation = /** @class */ (function () { | ||
function SourceLocation(type, index) { | ||
@@ -13,2 +13,2 @@ this.type = type; | ||
}()); | ||
exports["default"] = SourceLocation; | ||
exports.default = SourceLocation; |
"use strict"; | ||
exports.__esModule = true; | ||
var SourceToken = (function () { | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var SourceToken = /** @class */ (function () { | ||
function SourceToken(type, start, end) { | ||
@@ -14,2 +14,2 @@ if (start > end) { | ||
}()); | ||
exports["default"] = SourceToken; | ||
exports.default = SourceToken; |
"use strict"; | ||
exports.__esModule = true; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var SourceTokenListIndex_1 = require("./SourceTokenListIndex"); | ||
@@ -9,3 +9,3 @@ var SourceType_1 = require("./SourceType"); | ||
*/ | ||
var SourceTokenList = (function () { | ||
var SourceTokenList = /** @class */ (function () { | ||
function SourceTokenList(tokens) { | ||
@@ -44,3 +44,5 @@ this._validateTokens(tokens); | ||
var result = []; | ||
this.forEach(function (token, index, list) { result.push(mapper(token, index, list)); }); | ||
this.forEach(function (token, index, list) { | ||
result.push(mapper(token, index, list)); | ||
}); | ||
return result; | ||
@@ -87,9 +89,11 @@ }; | ||
for (var _i = 0, _a = [ | ||
[SourceType_1["default"].DSTRING_START, SourceType_1["default"].DSTRING_END], [SourceType_1["default"].TDSTRING_START, SourceType_1["default"].TDSTRING_END], [SourceType_1["default"].HEREGEXP_START, SourceType_1["default"].HEREGEXP_END] | ||
[SourceType_1.default.DSTRING_START, SourceType_1.default.DSTRING_END], | ||
[SourceType_1.default.TDSTRING_START, SourceType_1.default.TDSTRING_END], | ||
[SourceType_1.default.HEREGEXP_START, SourceType_1.default.HEREGEXP_END] | ||
]; _i < _a.length; _i++) { | ||
var _b = _a[_i], startType = _b[0], endType = _b[1]; | ||
var range = this.rangeOfMatchingTokensContainingTokenIndex(startType, endType, index); | ||
if (bestRange === null || bestRange === undefined || | ||
(range !== null && range !== undefined && | ||
range[0].distance(range[1]) < bestRange[0].distance(bestRange[1]))) { | ||
if (bestRange === null || | ||
bestRange === undefined || | ||
(range !== null && range !== undefined && range[0].distance(range[1]) < bestRange[0].distance(bestRange[1]))) { | ||
bestRange = range; | ||
@@ -114,80 +118,77 @@ } | ||
switch (token.type) { | ||
case startType: | ||
{ | ||
var level_1 = 0; | ||
var start = index; | ||
var endIndex = this.indexOfTokenMatchingPredicate(function (token) { | ||
if (token.type === startType) { | ||
level_1 += 1; | ||
case startType: { | ||
var level_1 = 0; | ||
var start = index; | ||
var endIndex = this.indexOfTokenMatchingPredicate(function (token) { | ||
if (token.type === startType) { | ||
level_1 += 1; | ||
} | ||
else if (token.type === endType) { | ||
level_1 -= 1; | ||
if (level_1 === 0) { | ||
return true; | ||
} | ||
else if (token.type === endType) { | ||
level_1 -= 1; | ||
if (level_1 === 0) { | ||
return true; | ||
} | ||
} | ||
return false; | ||
}, start); | ||
if (!endIndex) { | ||
} | ||
return false; | ||
}, start); | ||
if (!endIndex) { | ||
return null; | ||
} | ||
else { | ||
var rangeEnd = endIndex.next(); | ||
if (!rangeEnd) { | ||
return null; | ||
} | ||
else { | ||
var rangeEnd = endIndex.next(); | ||
if (!rangeEnd) { | ||
return null; | ||
return [start, rangeEnd]; | ||
} | ||
} | ||
case endType: { | ||
var level_2 = 0; | ||
var endIndex = index; | ||
var startIndex = this.lastIndexOfTokenMatchingPredicate(function (token) { | ||
if (token.type === startType) { | ||
level_2 -= 1; | ||
if (level_2 === 0) { | ||
return true; | ||
} | ||
return [start, rangeEnd]; | ||
} | ||
else if (token.type === endType) { | ||
level_2 += 1; | ||
} | ||
return false; | ||
}, endIndex); | ||
if (!startIndex) { | ||
return null; | ||
} | ||
case endType: | ||
{ | ||
var level_2 = 0; | ||
var endIndex = index; | ||
var startIndex = this.lastIndexOfTokenMatchingPredicate(function (token) { | ||
if (token.type === startType) { | ||
level_2 -= 1; | ||
if (level_2 === 0) { | ||
return true; | ||
} | ||
} | ||
else if (token.type === endType) { | ||
level_2 += 1; | ||
} | ||
return false; | ||
}, endIndex); | ||
if (!startIndex) { | ||
else { | ||
var rangeEnd = endIndex.next(); | ||
if (!rangeEnd) { | ||
return null; | ||
} | ||
else { | ||
var rangeEnd = endIndex.next(); | ||
if (!rangeEnd) { | ||
return null; | ||
} | ||
else { | ||
return [startIndex, rangeEnd]; | ||
} | ||
return [startIndex, rangeEnd]; | ||
} | ||
} | ||
default: | ||
{ | ||
var level_3 = 0; | ||
var startIndex = this.lastIndexOfTokenMatchingPredicate(function (token) { | ||
if (token.type === startType) { | ||
if (level_3 === 0) { | ||
return true; | ||
} | ||
level_3 -= 1; | ||
} | ||
default: { | ||
var level_3 = 0; | ||
var startIndex = this.lastIndexOfTokenMatchingPredicate(function (token) { | ||
if (token.type === startType) { | ||
if (level_3 === 0) { | ||
return true; | ||
} | ||
else if (token.type === endType) { | ||
level_3 += 1; | ||
} | ||
return false; | ||
}, index); | ||
if (!startIndex) { | ||
return null; | ||
level_3 -= 1; | ||
} | ||
else { | ||
return this.rangeOfMatchingTokensContainingTokenIndex(startType, endType, startIndex); | ||
else if (token.type === endType) { | ||
level_3 += 1; | ||
} | ||
return false; | ||
}, index); | ||
if (!startIndex) { | ||
return null; | ||
} | ||
else { | ||
return this.rangeOfMatchingTokensContainingTokenIndex(startType, endType, startIndex); | ||
} | ||
} | ||
} | ||
@@ -318,4 +319,3 @@ }; | ||
if (tokens[i].end > tokens[i + 1].start) { | ||
throw new Error("Tokens not in order. Expected " + JSON.stringify(tokens[i]) + " before " + | ||
("" + JSON.stringify(tokens[i + 1]))); | ||
throw new Error("Tokens not in order. Expected " + JSON.stringify(tokens[i]) + " before " + ("" + JSON.stringify(tokens[i + 1]))); | ||
} | ||
@@ -329,8 +329,6 @@ } | ||
if (!index) { | ||
throw new Error("unexpected 'null' index, perhaps you forgot to check the result of " + | ||
"'indexOfTokenContainingSourceIndex'?"); | ||
throw new Error("unexpected 'null' index, perhaps you forgot to check the result of " + "'indexOfTokenContainingSourceIndex'?"); | ||
} | ||
if (typeof index === 'number') { | ||
throw new Error("to get a token at index " + index + ", " + | ||
("use list.tokenAtIndex(list.startIndex.advance(" + index + "))")); | ||
throw new Error("to get a token at index " + index + ", " + ("use list.tokenAtIndex(list.startIndex.advance(" + index + "))")); | ||
} | ||
@@ -355,3 +353,3 @@ if (index['_sourceTokenList'] !== this) { | ||
if (!cached) { | ||
cached = new SourceTokenListIndex_1["default"](this, index); | ||
cached = new SourceTokenListIndex_1.default(this, index); | ||
this._indexCache[index] = cached; | ||
@@ -369,2 +367,2 @@ } | ||
}()); | ||
exports["default"] = SourceTokenList; | ||
exports.default = SourceTokenList; |
"use strict"; | ||
exports.__esModule = true; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
/** | ||
* Represents a token at a particular index within a list of tokens. | ||
*/ | ||
var SourceTokenListIndex = (function () { | ||
var SourceTokenListIndex = /** @class */ (function () { | ||
function SourceTokenListIndex(sourceTokenList, index) { | ||
@@ -66,2 +66,2 @@ this._sourceTokenList = sourceTokenList; | ||
}()); | ||
exports["default"] = SourceTokenListIndex; | ||
exports.default = SourceTokenListIndex; |
@@ -18,2 +18,3 @@ /** | ||
DECREMENT = "DECREMENT", | ||
DEFAULT = "DEFAULT", | ||
DELETE = "DELETE", | ||
@@ -25,2 +26,3 @@ DO = "DO", | ||
ELSE = "ELSE", | ||
EXPORT = "EXPORT", | ||
EOF = "EOF", | ||
@@ -33,5 +35,7 @@ EXISTENCE = "EXISTENCE", | ||
HERECOMMENT = "HERECOMMENT", | ||
HEREJS = "HEREJS", | ||
HEREGEXP_START = "HEREGEXP_START", | ||
HEREGEXP_END = "HEREGEXP_END", | ||
IF = "IF", | ||
IMPORT = "IMPORT", | ||
INCREMENT = "INCREMENT", | ||
@@ -38,0 +42,0 @@ INTERPOLATION_START = "INTERPOLATION_START", |
"use strict"; | ||
exports.__esModule = true; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
/** | ||
@@ -21,2 +21,3 @@ * Represents a particular type of CoffeeScript code. | ||
SourceType["DECREMENT"] = "DECREMENT"; | ||
SourceType["DEFAULT"] = "DEFAULT"; | ||
SourceType["DELETE"] = "DELETE"; | ||
@@ -28,2 +29,3 @@ SourceType["DO"] = "DO"; | ||
SourceType["ELSE"] = "ELSE"; | ||
SourceType["EXPORT"] = "EXPORT"; | ||
SourceType["EOF"] = "EOF"; | ||
@@ -36,5 +38,7 @@ SourceType["EXISTENCE"] = "EXISTENCE"; | ||
SourceType["HERECOMMENT"] = "HERECOMMENT"; | ||
SourceType["HEREJS"] = "HEREJS"; | ||
SourceType["HEREGEXP_START"] = "HEREGEXP_START"; | ||
SourceType["HEREGEXP_END"] = "HEREGEXP_END"; | ||
SourceType["IF"] = "IF"; | ||
SourceType["IMPORT"] = "IMPORT"; | ||
SourceType["INCREMENT"] = "INCREMENT"; | ||
@@ -88,2 +92,2 @@ SourceType["INTERPOLATION_START"] = "INTERPOLATION_START"; | ||
})(SourceType || (SourceType = {})); | ||
exports["default"] = SourceType; | ||
exports.default = SourceType; |
"use strict"; | ||
exports.__esModule = true; | ||
var BufferedStream = (function () { | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var BufferedStream = /** @class */ (function () { | ||
function BufferedStream(stream) { | ||
@@ -41,2 +41,2 @@ this.pending = []; | ||
}()); | ||
exports["default"] = BufferedStream; | ||
exports.default = BufferedStream; |
"use strict"; | ||
exports.__esModule = true; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var SourceType_1 = require("../SourceType"); | ||
@@ -10,6 +10,6 @@ var PaddingTracker_1 = require("./PaddingTracker"); | ||
function calculateHeregexpPadding(source, stream) { | ||
if (!stream.hasNext(SourceType_1["default"].HEREGEXP_START)) { | ||
if (!stream.hasNext(SourceType_1.default.HEREGEXP_START)) { | ||
return []; | ||
} | ||
var paddingTracker = new PaddingTracker_1["default"](source, stream, SourceType_1["default"].HEREGEXP_END); | ||
var paddingTracker = new PaddingTracker_1.default(source, stream, SourceType_1.default.HEREGEXP_END); | ||
for (var _i = 0, _a = paddingTracker.fragments; _i < _a.length; _i++) { | ||
@@ -44,3 +44,3 @@ var fragment = _a[_i]; | ||
} | ||
exports["default"] = calculateHeregexpPadding; | ||
exports.default = calculateHeregexpPadding; | ||
/** | ||
@@ -47,0 +47,0 @@ * A space, tab, or newline is escaped if it is preceded by an odd number of |
"use strict"; | ||
exports.__esModule = true; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var SourceType_1 = require("../SourceType"); | ||
@@ -16,7 +16,7 @@ var PaddingTracker_1 = require("./PaddingTracker"); | ||
var paddingTracker; | ||
if (stream.hasNext(SourceType_1["default"].SSTRING_START)) { | ||
paddingTracker = new PaddingTracker_1["default"](source, stream, SourceType_1["default"].SSTRING_END); | ||
if (stream.hasNext(SourceType_1.default.SSTRING_START)) { | ||
paddingTracker = new PaddingTracker_1.default(source, stream, SourceType_1.default.SSTRING_END); | ||
} | ||
else if (stream.hasNext(SourceType_1["default"].DSTRING_START)) { | ||
paddingTracker = new PaddingTracker_1["default"](source, stream, SourceType_1["default"].DSTRING_END); | ||
else if (stream.hasNext(SourceType_1.default.DSTRING_START)) { | ||
paddingTracker = new PaddingTracker_1.default(source, stream, SourceType_1.default.DSTRING_END); | ||
} | ||
@@ -43,8 +43,7 @@ else { | ||
// are also allowed and should be skipped. | ||
while ((pos < content.length && ' \t\n'.includes(content[pos])) || | ||
(content.slice(pos, pos + 2) === '\\\n')) { | ||
while ((pos < content.length && ' \t\n'.includes(content[pos])) || content.slice(pos, pos + 2) === '\\\n') { | ||
pos++; | ||
} | ||
var endIndex = pos; | ||
if (isNewlineEscaped_1["default"](content, newlinePos)) { | ||
if (isNewlineEscaped_1.default(content, newlinePos)) { | ||
// Escaped newlines behave a bit strangely: whitespace is removed from | ||
@@ -82,2 +81,2 @@ // the right side but not the left side, and the newline and its | ||
} | ||
exports["default"] = calculateNormalStringPadding; | ||
exports.default = calculateNormalStringPadding; |
"use strict"; | ||
exports.__esModule = true; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var SourceType_1 = require("../SourceType"); | ||
@@ -32,7 +32,7 @@ var isNewlineEscaped_1 = require("./isNewlineEscaped"); | ||
var paddingTracker; | ||
if (stream.hasNext(SourceType_1["default"].TSSTRING_START)) { | ||
paddingTracker = new PaddingTracker_1["default"](source, stream, SourceType_1["default"].TSSTRING_END); | ||
if (stream.hasNext(SourceType_1.default.TSSTRING_START)) { | ||
paddingTracker = new PaddingTracker_1.default(source, stream, SourceType_1.default.TSSTRING_END); | ||
} | ||
else if (stream.hasNext(SourceType_1["default"].TDSTRING_START)) { | ||
paddingTracker = new PaddingTracker_1["default"](source, stream, SourceType_1["default"].TDSTRING_END); | ||
else if (stream.hasNext(SourceType_1.default.TDSTRING_START)) { | ||
paddingTracker = new PaddingTracker_1.default(source, stream, SourceType_1.default.TDSTRING_END); | ||
} | ||
@@ -63,7 +63,6 @@ else { | ||
for (var i = 0; i < fragment.content.length; i++) { | ||
if (fragment.content[i] === '\n' && isNewlineEscaped_1["default"](fragment.content, i)) { | ||
if (fragment.content[i] === '\n' && isNewlineEscaped_1.default(fragment.content, i)) { | ||
var backslashPos = fragment.content.lastIndexOf('\\', i); | ||
var paddingEnd = i; | ||
while (paddingEnd < fragment.content.length && | ||
' \t\n'.includes(fragment.content[paddingEnd])) { | ||
while (paddingEnd < fragment.content.length && ' \t\n'.includes(fragment.content[paddingEnd])) { | ||
paddingEnd++; | ||
@@ -74,4 +73,3 @@ } | ||
var isStartOfLine = i > 0 && fragment.content[i - 1] === '\n'; | ||
var isStartOfString = fragment.index === 0 && i === 0; | ||
if (isStartOfLine || isStartOfString) { | ||
if (isStartOfLine) { | ||
var paddingStart = i; | ||
@@ -87,3 +85,3 @@ var paddingEnd = i + sharedIndent.length; | ||
} | ||
exports["default"] = calculateTripleQuotedStringPadding; | ||
exports.default = calculateTripleQuotedStringPadding; | ||
function getIndentForFragments(fragments) { | ||
@@ -152,11 +150,12 @@ var hasSeenLine = false; | ||
var isEatingWhitespace = false; | ||
for (var i = 0; i < str.length; i++) { | ||
if (str[i] === '\n' && numBackslashes % 2 === 0 && !isEatingWhitespace) { | ||
for (var _i = 0, str_1 = str; _i < str_1.length; _i++) { | ||
var chr = str_1[_i]; | ||
if (chr === '\n' && numBackslashes % 2 === 0 && !isEatingWhitespace) { | ||
lines.push(''); | ||
} | ||
else { | ||
if (str[i] === '\n' && numBackslashes % 2 === 1) { | ||
if (chr === '\n' && numBackslashes % 2 === 1) { | ||
isEatingWhitespace = true; | ||
} | ||
if (str[i] === '\\') { | ||
if (chr === '\\') { | ||
numBackslashes++; | ||
@@ -167,6 +166,6 @@ } | ||
} | ||
if (!' \t\n'.includes(str[i])) { | ||
if (!' \t\n'.includes(chr)) { | ||
isEatingWhitespace = false; | ||
} | ||
lines[lines.length - 1] += str[i]; | ||
lines[lines.length - 1] += chr; | ||
} | ||
@@ -173,0 +172,0 @@ } |
"use strict"; | ||
exports.__esModule = true; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
/** | ||
@@ -26,2 +26,2 @@ * In both normal multiline strings and triple quoted strings, a newline | ||
} | ||
exports["default"] = isNewlineEscaped; | ||
exports.default = isNewlineEscaped; |
"use strict"; | ||
exports.__esModule = true; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var SourceLocation_1 = require("../SourceLocation"); | ||
@@ -26,3 +26,3 @@ var SourceType_1 = require("../SourceType"); | ||
*/ | ||
var PaddingTracker = (function () { | ||
var PaddingTracker = /** @class */ (function () { | ||
function PaddingTracker(source, stream, endType) { | ||
@@ -36,3 +36,3 @@ this.fragments = []; | ||
this._originalLocations.push(location); | ||
if (interpolationLevel === 0 && location.type === SourceType_1["default"].STRING_CONTENT) { | ||
if (interpolationLevel === 0 && location.type === SourceType_1.default.STRING_CONTENT) { | ||
var start = location.index; | ||
@@ -44,6 +44,6 @@ var end = stream.peek().index; | ||
} | ||
else if (location.type === SourceType_1["default"].INTERPOLATION_START) { | ||
else if (location.type === SourceType_1.default.INTERPOLATION_START) { | ||
interpolationLevel += 1; | ||
} | ||
else if (location.type === SourceType_1["default"].INTERPOLATION_END) { | ||
else if (location.type === SourceType_1.default.INTERPOLATION_END) { | ||
interpolationLevel -= 1; | ||
@@ -59,4 +59,3 @@ } | ||
var currentRange = this.fragments[rangeIndex]; | ||
if (location.type === SourceType_1["default"].STRING_CONTENT && | ||
currentRange && location.index === currentRange.start) { | ||
if (location.type === SourceType_1.default.STRING_CONTENT && currentRange && location.index === currentRange.start) { | ||
resultLocations.push.apply(resultLocations, currentRange.computeSourceLocations()); | ||
@@ -76,4 +75,4 @@ rangeIndex++; | ||
}()); | ||
exports["default"] = PaddingTracker; | ||
var TrackedFragment = (function () { | ||
exports.default = PaddingTracker; | ||
var TrackedFragment = /** @class */ (function () { | ||
function TrackedFragment(content, start, end, index) { | ||
@@ -95,3 +94,3 @@ this.content = content; | ||
if (this.start === this.end) { | ||
return [new SourceLocation_1["default"](SourceType_1["default"].STRING_CONTENT, this.start)]; | ||
return [new SourceLocation_1.default(SourceType_1.default.STRING_CONTENT, this.start)]; | ||
} | ||
@@ -140,12 +139,12 @@ // Break the marked ranges down into events, similar to how you might count | ||
if (paddingDepth > 0) { | ||
sourceType = SourceType_1["default"].STRING_PADDING; | ||
sourceType = SourceType_1.default.STRING_PADDING; | ||
} | ||
else if (lineSeparatorDepth > 0) { | ||
sourceType = SourceType_1["default"].STRING_LINE_SEPARATOR; | ||
sourceType = SourceType_1.default.STRING_LINE_SEPARATOR; | ||
} | ||
else { | ||
sourceType = SourceType_1["default"].STRING_CONTENT; | ||
sourceType = SourceType_1.default.STRING_CONTENT; | ||
} | ||
if (sourceType !== lastSourceType) { | ||
resultLocations.push(new SourceLocation_1["default"](sourceType, sourceIndex)); | ||
resultLocations.push(new SourceLocation_1.default(sourceType, sourceIndex)); | ||
lastSourceType = sourceType; | ||
@@ -152,0 +151,0 @@ } |
@@ -8,4 +8,8 @@ { | ||
"scripts": { | ||
"lint": "tslint --config tslint.json --project tsconfig.json --type-check", | ||
"lint-fix": "tslint --config tslint.json --project tsconfig.json --type-check --fix", | ||
"check-format": "prettier-check --parser typescript '{src,test}/**/*.ts'", | ||
"reformat": "prettier --parser typescript --write '{src,test}/**/*.ts'", | ||
"prelint": "yarn run check-format", | ||
"lint": "tslint --config tslint.json --project tsconfig.json", | ||
"prelint-fix": "yarn run reformat", | ||
"lint-fix": "tslint --config tslint.json --project tsconfig.json --fix", | ||
"pretest": "yarn run lint", | ||
@@ -34,10 +38,12 @@ "test": "mocha" | ||
"devDependencies": { | ||
"@types/mocha": "^2.2.41", | ||
"@types/node": "^8.0.9", | ||
"decaffeinate-coffeescript": "^1.10.0-patch25", | ||
"mocha": "^3.2.0", | ||
"@types/mocha": "^2.2.46", | ||
"@types/node": "^9.3.0", | ||
"decaffeinate-coffeescript": "1.12.7-patch.1", | ||
"mocha": "^5.0.0", | ||
"prettier": "1.10.2", | ||
"prettier-check": "2.0.0", | ||
"semantic-release": "^6.3.5", | ||
"ts-node": "^3.2.0", | ||
"tslint": "^5.5.0", | ||
"typescript": "^2.4.1" | ||
"ts-node": "^4.1.0", | ||
"tslint": "^5.8.0", | ||
"typescript": "^2.6.2" | ||
}, | ||
@@ -47,3 +53,3 @@ "publishConfig": { | ||
}, | ||
"version": "8.0.0" | ||
"version": "8.1.0" | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
161020
3887
10