@awesome-fe/translate
Version:
Translation utils
61 lines • 1.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.removeIndent = void 0;
var get_indent_1 = require("./get-indent");
var tab = '\t';
var lineFeed = '\n';
var space = ' ';
var exclamationMark = '!';
// Remove the minimum indent from every line in `value`. Supports both tab,
// spaced, and mixed indentation (as well as possible).
function removeIndent(value, maximum) {
var values = value.split(lineFeed);
var position = values.length + 1;
var minIndent = Infinity;
var matrix = [];
var index;
var indentation;
var stops;
var padding;
values.unshift(space.repeat(maximum) + exclamationMark);
while (position--) {
indentation = get_indent_1.getIndent(values[position]);
matrix[position] = indentation.stops;
if (!values[position].trim().length) {
continue;
}
if (indentation.indent) {
if (indentation.indent > 0 && indentation.indent < minIndent) {
minIndent = indentation.indent;
}
}
else {
minIndent = Infinity;
break;
}
}
if (minIndent !== Infinity) {
position = values.length;
while (position--) {
stops = matrix[position];
index = minIndent;
while (index && !(index in stops)) {
index--;
}
if (values[position].trim().length &&
minIndent &&
index !== minIndent) {
padding = tab;
}
else {
padding = '';
}
values[position] =
padding + values[position].slice(index in stops ? stops[index] + 1 : 0);
}
}
values.shift();
return values.join(lineFeed);
}
exports.removeIndent = removeIndent;
//# sourceMappingURL=remove-indent.js.map