UNPKG

@slightning/anything-to-string

Version:
81 lines (80 loc) 2.97 kB
import { getIndentString } from "../utils"; import { AnythingRule } from "./anything"; import { LesserObjectRule, MajorObjectRule, MaximumObjectRule } from "./object"; function isSet(data) { return typeof Set != "undefined" && data instanceof Set; } export class MinimumSetRule { constructor() { this.test = isSet; } toString(data, __config, __context) { return `Set(${data.size})`; } } export class LesserSetRule { constructor() { this.test = isSet; } prepare(data, config, context) { new LesserObjectRule().prepare(data, config, context); for (const value of data.values()) { new AnythingRule().prepare(value, config, context); } } toString(data, config, context) { return new LesserObjectRule({ specialValue: { "[[Values]]": data.size == 0 ? "None" : Array.from(data).map((value) => { return `${new AnythingRule().toString(value, config, context)}` .split("\n") .join(`\n${getIndentString(config)}`); }).map((line, index) => `\n${getIndentString(config)}${index}: ${line}`).join("") } }).toString(data, config, context); } } export class MajorSetRule { constructor() { this.test = isSet; } prepare(data, config, context) { new MajorObjectRule().prepare(data, config, context); for (const value of data.values()) { new AnythingRule().prepare(value, config, context); } } toString(data, config, context) { return new MajorObjectRule({ specialValue: { "[[Values]]": data.size == 0 ? "None" : Array.from(data).map((value) => { return `${new AnythingRule().toString(value, config, context)}` .split("\n") .join(`\n${getIndentString(config)}`); }).map((line, index) => `\n${getIndentString(config)}${index}: ${line}`).join("") } }).toString(data, config, context); } } export class MaximumSetRule { constructor() { this.test = isSet; } prepare(data, config, context) { new MaximumObjectRule().prepare(data, config, context); for (const value of data.values()) { new AnythingRule().prepare(value, config, context); } } toString(data, config, context) { return new MaximumObjectRule({ specialValue: { "[[Values]]": data.size == 0 ? "None" : Array.from(data).map((value) => { return `${new AnythingRule().toString(value, config, context)}` .split("\n") .join(`\n${getIndentString(config)}`); }).map((line, index) => `\n${getIndentString(config)}${index}: ${line}`).join("") } }).toString(data, config, context); } }