68 lines
2.5 KiB
JavaScript
68 lines
2.5 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const dedent_1 = __importDefault(require("dedent"));
|
|
const objectorarray_1 = __importDefault(require("objectorarray"));
|
|
const fast_json_parse_1 = __importDefault(require("fast-json-parse"));
|
|
const ENDENT_ID = "twhZNwxI1aFG3r4";
|
|
function endent(strings, ...values) {
|
|
let result = "";
|
|
for (let i = 0; i < strings.length; i++) {
|
|
result += strings[i];
|
|
if (i < values.length) {
|
|
let value = values[i];
|
|
let isJson = false;
|
|
if (fast_json_parse_1.default(value).value) {
|
|
value = fast_json_parse_1.default(value).value;
|
|
isJson = true;
|
|
}
|
|
if ((value && value[ENDENT_ID]) || isJson) {
|
|
let rawlines = result.split("\n");
|
|
let l = rawlines[rawlines.length - 1].search(/\S/);
|
|
let endentation = l > 0 ? " ".repeat(l) : "";
|
|
let valueJson = isJson
|
|
? JSON.stringify(value, null, 2)
|
|
: value[ENDENT_ID];
|
|
let valueLines = valueJson.split("\n");
|
|
valueLines.forEach((l, index) => {
|
|
if (index > 0) {
|
|
result += "\n" + endentation + l;
|
|
}
|
|
else {
|
|
result += l;
|
|
}
|
|
});
|
|
}
|
|
else if (typeof value === "string" && value.includes("\n")) {
|
|
let endentations = result.match(/(?:^|\n)( *)$/);
|
|
if (typeof value === "string") {
|
|
let endentation = endentations ? endentations[1] : "";
|
|
result += value
|
|
.split("\n")
|
|
.map((str, i) => {
|
|
str = ENDENT_ID + str;
|
|
return i === 0 ? str : `${endentation}${str}`;
|
|
})
|
|
.join("\n");
|
|
}
|
|
else {
|
|
result += value;
|
|
}
|
|
}
|
|
else {
|
|
result += value;
|
|
}
|
|
}
|
|
}
|
|
result = dedent_1.default(result);
|
|
return result.split(ENDENT_ID).join("");
|
|
}
|
|
endent.pretty = (data) => {
|
|
return objectorarray_1.default(data)
|
|
? { [ENDENT_ID]: JSON.stringify(data, null, 2) }
|
|
: data;
|
|
};
|
|
exports.default = endent;
|