UNPKG

@slightning/anything-to-string

Version:
90 lines (89 loc) 3.58 kB
import { getIndentString } from "../utils"; import { AnythingRule } from "./anything"; import { LesserObjectRule, MajorObjectRule, MaximumObjectRule } from "./object"; function isMap(data) { return typeof Map != "undefined" && data instanceof Map; } export class MinimumMapRule { constructor() { this.test = isMap; } toString(data, __config, __context) { return `Map(${data.size})`; } } export class LesserMapRule { constructor() { this.test = isMap; } prepare(data, config, context) { new LesserObjectRule().prepare(data, config, context); for (const key of data.keys()) { new AnythingRule().prepare(key, config, context); } for (const value of data.values()) { new AnythingRule().prepare(value, config, context); } } toString(data, config, context) { return new LesserObjectRule({ specialValue: { "[[Entries]]": data.size == 0 ? "None" : Array.from(data.entries().map(([key, value]) => { return `${new AnythingRule().toString(key, config, context)}: ${new AnythingRule().toString(value, config, context)}` .split("\n") .join(`\n${getIndentString(config)}`); }).map((line) => `\n${getIndentString(config)}${line}`)).join("") } }).toString(data, config, context); } } export class MajorMapRule { constructor() { this.test = isMap; } prepare(data, config, context) { new MajorObjectRule().prepare(data, config, context); for (const key of data.keys()) { new AnythingRule().prepare(key, config, context); } for (const value of data.values()) { new AnythingRule().prepare(value, config, context); } } toString(data, config, context) { return new MajorObjectRule({ specialValue: { "[[Entries]]": data.size == 0 ? "None" : Array.from(data.entries().map(([key, value]) => { return `${"\n"}key: ${new AnythingRule().toString(key, config, context)}${"\n"}value: ${new AnythingRule().toString(value, config, context)}` .split("\n") .join(`\n${getIndentString(config).repeat(2)}`); }).map((line, index) => `\n${getIndentString(config)}${index}: ${line}`)).join("") } }).toString(data, config, context); } } export class MaximumMapRule { constructor() { this.test = isMap; } prepare(data, config, context) { new MaximumObjectRule().prepare(data, config, context); for (const key of data.keys()) { new AnythingRule().prepare(key, config, context); } for (const value of data.values()) { new AnythingRule().prepare(value, config, context); } } toString(data, config, context) { return new MaximumObjectRule({ specialValue: { "[[Entries]]": data.size == 0 ? "None" : Array.from(data.entries().map(([key, value]) => { return `${"\n"}key: ${new AnythingRule().toString(key, config, context)}${"\n"}value: ${new AnythingRule().toString(value, config, context)}` .split("\n") .join(`\n${getIndentString(config).repeat(2)}`); }).map((line, index) => `\n${getIndentString(config)}${index}: ${line}`)).join("") } }).toString(data, config, context); } }