@slightning/anything-to-string
Version:
Converts anything to a string.
58 lines (57 loc) • 1.87 kB
JavaScript
import { getIndentString } from "../utils";
import { AnythingRule } from "./anything";
import { MajorObjectRule, MaximumObjectRule } from "./object";
export class MinimumArrayRule {
constructor() {
this.test = Array.isArray;
}
toString(data, __config, __context) {
return `Array(${data.length})`;
}
}
export class LesserArrayRule {
constructor() {
this.test = Array.isArray;
}
prepare(data, config, context) {
for (const value of data) {
if (value != undefined) {
new AnythingRule().prepare(value, config, context);
}
}
}
toString(data, config, context) {
if (data.length == 0) {
return "Array []";
}
let result = "Array [\n";
result += (0 in data ? new AnythingRule().toString(data[0], config, context) : "None").split("\n").map((line) => `${getIndentString(config)}${line}`).join("\n");
for (let i = 1; i < data.length; i++) {
result += `,\n${(i in data ? new AnythingRule().toString(data[i], config, context) : "None").split("\n").map((line) => `${getIndentString(config)}${line}`).join("\n")}`;
}
result += "\n]";
return result;
}
}
export class MajorArrayRule {
constructor() {
this.test = Array.isArray;
}
prepare(data, config, context) {
new MajorObjectRule().prepare(data, config, context);
}
toString(data, config, context) {
return new MajorObjectRule().toString(data, config, context);
}
}
export class MaximumArrayRule {
constructor() {
this.test = Array.isArray;
}
prepare(data, config, context) {
new MaximumObjectRule().prepare(data, config, context);
}
toString(data, config, context) {
return new MajorObjectRule().toString(data, config, context);
}
}