UNPKG

@slightning/anything-to-string

Version:
76 lines (75 loc) 2.06 kB
import { MajorObjectRule, MaximumObjectRule } from "./object"; function isString(data) { return typeof data == "object" && data instanceof String; } function excludeChar(data, key) { if (typeof key == "string") { key = parseInt(key); } if (!Number.isInteger(key)) { return false; } return typeof key == "number" && 0 <= key && key < data.length; } export class MinimumStringRule { constructor() { this.test = isString; } toString(data, __config, __context) { return JSON.stringify(data); } } export class LesserStringRule { constructor() { this.test = isString; } toString(data, __config, __context) { return `String(${JSON.stringify(data)})`; } } export class MajorStringRule { constructor() { this.test = isString; } prepare(data, config, context) { new MajorObjectRule({ defaultConfig: { exclude(key) { return excludeChar(data, key); } } }).prepare(data, config, context); } toString(data, config, context) { return `String(${JSON.stringify(data)}) ${new MajorObjectRule({ defaultConfig: { exclude(key) { return excludeChar(data, key); } } }).toString(data, config, context)}`; } } export class MaximumStringRule { constructor() { this.test = isString; } prepare(data, config, context) { new MaximumObjectRule({ defaultConfig: { exclude(key) { return excludeChar(data, key); } } }).prepare(data, config, context); } toString(data, config, context) { return `String(${JSON.stringify(data)}) ${new MaximumObjectRule({ defaultConfig: { exclude(key) { return excludeChar(data, key); } } }).toString(data, config, context)}`; } }