pentest-distro-builder/filesystem/root/.vscode/extensions/peterjausovec.vscode-docker-0.3.1/out/dockerCompose/dockerComposeParser.js

71 lines
2.6 KiB
JavaScript
Raw Normal View History

2018-10-17 14:11:16 -06:00
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE.md in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true });
const parser_1 = require("../parser");
class DockerComposeParser extends parser_1.Parser {
constructor() {
let parseRegex = /\:+$/g;
super(parseRegex);
}
parseLine(textLine) {
let r = [];
let lastTokenEndIndex = 0;
let lastPushedToken;
let emit = (end, type) => {
if (end <= lastTokenEndIndex) {
return;
}
if (lastPushedToken && lastPushedToken.type === type) {
// merge with last pushed token
lastPushedToken.endIndex = end;
lastTokenEndIndex = end;
return;
}
lastPushedToken = {
startIndex: lastTokenEndIndex,
endIndex: end,
type: type
};
r.push(lastPushedToken);
lastTokenEndIndex = end;
};
let inString = false;
let idx = textLine.firstNonWhitespaceCharacterIndex;
let line = textLine.text;
for (let i = idx, len = line.length; i < len; i++) {
let ch = line.charAt(i);
if (inString) {
if (ch === '"' && line.charAt(i - 1) !== '\\') {
inString = false;
emit(i + 1, parser_1.TokenType.String);
}
continue;
}
if (ch === '"') {
emit(i, parser_1.TokenType.Text);
inString = true;
continue;
}
if (ch === '#') {
// Comment the rest of the line
emit(i, parser_1.TokenType.Text);
emit(line.length, parser_1.TokenType.Comment);
break;
}
if (ch === ':') {
emit(i + 1, parser_1.TokenType.Key);
}
if (ch === ' ' || ch === '\t') {
emit(i, parser_1.TokenType.Text);
emit(i + 1, parser_1.TokenType.Whitespace);
}
}
emit(line.length, parser_1.TokenType.Text);
return r;
}
}
exports.DockerComposeParser = DockerComposeParser;
//# sourceMappingURL=dockerComposeParser.js.map