dotfiles/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerCompose/dockerComposeParser.js
Cyryl Płotnicki 280bcab25f VSCode update
2016-09-24 13:12:34 +02:00

75 lines
No EOL
2.7 KiB
JavaScript

/*---------------------------------------------------------
* Copyright (C) Microsoft Corporation. All rights reserved.
*--------------------------------------------------------*/
'use strict';
var __extends = (this && this.__extends) || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var parser_1 = require('../parser');
var DockerComposeParser = (function (_super) {
__extends(DockerComposeParser, _super);
function DockerComposeParser() {
var parseRegex = /\:+$/g;
_super.call(this, parseRegex);
}
DockerComposeParser.prototype.parseLine = function (textLine) {
var r = [];
var lastTokenEndIndex = 0, lastPushedToken = null;
var emit = function (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;
};
var inString = false;
var idx = textLine.firstNonWhitespaceCharacterIndex;
var line = textLine.text;
for (var i = idx, len = line.length; i < len; i++) {
var 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;
};
return DockerComposeParser;
}(parser_1.Parser));
exports.DockerComposeParser = DockerComposeParser;
//# sourceMappingURL=dockerComposeParser.js.map