mirror of
https://github.com/thangisme/notes.git
synced 2024-12-22 22:06:38 -05:00
121 lines
13 KiB
JavaScript
121 lines
13 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
exports.__esModule = true;
|
||
|
exports.default = preprocess;
|
||
|
function indentError(input, l, p) {
|
||
|
throw input.error('Mixed tabs and spaces are not allowed', l, p + 1);
|
||
|
}
|
||
|
|
||
|
function preprocess(input, lines) {
|
||
|
var indentType = void 0;
|
||
|
var prevNumber = 0;
|
||
|
var parts = lines.map(function (line) {
|
||
|
var lastComma = false;
|
||
|
var comment = false;
|
||
|
var number = prevNumber + 1;
|
||
|
var atrule = false;
|
||
|
var indent = '';
|
||
|
var tokens = [];
|
||
|
var colon = false;
|
||
|
|
||
|
if (line.length > 0) {
|
||
|
if (line[0][0] === 'space') {
|
||
|
indent = line[0][1];
|
||
|
tokens = line.slice(1);
|
||
|
} else {
|
||
|
indent = '';
|
||
|
tokens = line;
|
||
|
}
|
||
|
|
||
|
if (!indentType && indent.length) {
|
||
|
indentType = indent[0] === ' ' ? 'space' : 'tab';
|
||
|
}
|
||
|
if (indentType === 'space') {
|
||
|
if (indent.indexOf('\t') !== -1) {
|
||
|
indentError(input, number, indent.indexOf('\t'));
|
||
|
}
|
||
|
} else if (indentType === 'tab') {
|
||
|
if (indent.indexOf(' ') !== -1) {
|
||
|
indentError(input, number, indent.indexOf(' '));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (tokens.length) {
|
||
|
for (var i = tokens.length - 1; i >= 0; i--) {
|
||
|
var type = tokens[i][0];
|
||
|
if (type === ',') {
|
||
|
lastComma = true;
|
||
|
break;
|
||
|
} else if (type === 'space') {
|
||
|
continue;
|
||
|
} else if (type === 'comment') {
|
||
|
continue;
|
||
|
} else if (type === 'newline') {
|
||
|
continue;
|
||
|
} else {
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
comment = tokens[0][0] === 'comment';
|
||
|
atrule = tokens[0][0] === 'at-word';
|
||
|
|
||
|
var brackets = 0;
|
||
|
for (var _i = 0; _i < tokens.length - 1; _i++) {
|
||
|
var _type = tokens[_i][0];
|
||
|
var next = tokens[_i + 1][0];
|
||
|
if (_type === '(') {
|
||
|
brackets += 1;
|
||
|
} else if (_type === ')') {
|
||
|
brackets -= 1;
|
||
|
} else if (_type === ':' && brackets === 0 && (next === 'space' || next === 'newline')) {
|
||
|
colon = true;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var last = tokens[tokens.length - 1];
|
||
|
if (last && last[0] === 'newline') prevNumber = last[2];
|
||
|
}
|
||
|
|
||
|
return {
|
||
|
number: number,
|
||
|
indent: indent,
|
||
|
colon: colon,
|
||
|
tokens: tokens,
|
||
|
atrule: atrule,
|
||
|
comment: comment,
|
||
|
lastComma: lastComma,
|
||
|
before: ''
|
||
|
};
|
||
|
});
|
||
|
|
||
|
parts = parts.reduceRight(function (all, i) {
|
||
|
if (!i.tokens.length || i.tokens.every(function (j) {
|
||
|
return j[0] === 'newline';
|
||
|
})) {
|
||
|
var prev = all[0];
|
||
|
var before = i.indent + i.tokens.map(function (j) {
|
||
|
return j[1];
|
||
|
}).join('');
|
||
|
prev.before = before + prev.before;
|
||
|
} else {
|
||
|
all.unshift(i);
|
||
|
}
|
||
|
return all;
|
||
|
}, [{ end: true, before: '' }]);
|
||
|
|
||
|
parts.forEach(function (part, i) {
|
||
|
if (i === 0) return;
|
||
|
|
||
|
var prev = parts[i - 1];
|
||
|
var last = prev.tokens[prev.tokens.length - 1];
|
||
|
if (last && last[0] === 'newline') {
|
||
|
part.before = last[1] + part.before;
|
||
|
prev.tokens.pop();
|
||
|
}
|
||
|
});
|
||
|
|
||
|
return parts;
|
||
|
}
|
||
|
module.exports = exports['default'];
|
||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByZXByb2Nlc3MuZXM2Il0sIm5hbWVzIjpbInByZXByb2Nlc3MiLCJpbmRlbnRFcnJvciIsImlucHV0IiwibCIsInAiLCJlcnJvciIsImxpbmVzIiwiaW5kZW50VHlwZSIsInByZXZOdW1iZXIiLCJwYXJ0cyIsIm1hcCIsImxhc3RDb21tYSIsImNvbW1lbnQiLCJudW1iZXIiLCJhdHJ1bGUiLCJpbmRlbnQiLCJ0b2tlbnMiLCJjb2xvbiIsImxpbmUiLCJsZW5ndGgiLCJzbGljZSIsImluZGV4T2YiLCJpIiwidHlwZSIsImJyYWNrZXRzIiwibmV4dCIsImxhc3QiLCJiZWZvcmUiLCJyZWR1Y2VSaWdodCIsImFsbCIsImV2ZXJ5IiwiaiIsInByZXYiLCJqb2luIiwidW5zaGlmdCIsImVuZCIsImZvckVhY2giLCJwYXJ0IiwicG9wIl0sIm1hcHBpbmdzIjoiOzs7a0JBSXdCQSxVO0FBSnhCLFNBQVNDLFdBQVQsQ0FBcUJDLEtBQXJCLEVBQTRCQyxDQUE1QixFQUErQkMsQ0FBL0IsRUFBa0M7QUFDOUIsVUFBTUYsTUFBTUcsS0FBTixDQUFZLHVDQUFaLEVBQXFERixDQUFyRCxFQUF3REMsSUFBSSxDQUE1RCxDQUFOO0FBQ0g7O0FBRWMsU0FBU0osVUFBVCxDQUFvQkUsS0FBcEIsRUFBMkJJLEtBQTNCLEVBQWtDO0FBQzdDLFFBQUlDLG1CQUFKO0FBQ0EsUUFBSUMsYUFBYSxDQUFqQjtBQUNBLFFBQUlDLFFBQVFILE1BQU1JLEdBQU4sQ0FBVSxnQkFBUTtBQUMxQixZQUFJQyxZQUFZLEtBQWhCO0FBQ0EsWUFBSUMsVUFBWSxLQUFoQjtBQUNBLFlBQUlDLFNBQVlMLGFBQWEsQ0FBN0I7QUFDQSxZQUFJTSxTQUFZLEtBQWhCO0FBQ0EsWUFBSUMsU0FBWSxFQUFoQjtBQUNBLFlBQUlDLFNBQVksRUFBaEI7QUFDQSxZQUFJQyxRQUFZLEtBQWhCOztBQUVBLFlBQUtDLEtBQUtDLE1BQUwsR0FBYyxDQUFuQixFQUF1QjtBQUNuQixnQkFBS0QsS0FBSyxDQUFMLEVBQVEs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
|