UNPKG

@slightning/anything-to-string

Version:
74 lines (73 loc) 2.4 kB
import { AnythingRule } from "./anything"; import { LesserObjectRule, MajorObjectRule, MaximumObjectRule } from "./object"; function isWeakRef(data) { return typeof WeakRef != "undefined" && data instanceof WeakRef; } export class MinimumWeakRefRule { constructor() { this.test = isWeakRef; } toString(__data, __config, __context) { return "[WeakRef]"; } } export class LesserWeakRefRule { constructor() { this.test = isWeakRef; } prepare(data, config, context) { new LesserObjectRule().prepare(data, config, context); const value = data.deref(); if (value != undefined) { new AnythingRule().prepare(value, config, context); } } toString(data, config, context) { const value = data.deref(); return new LesserObjectRule({ specialValue: { "[[WeakRefTarget]]": value == undefined ? "None" : `${new AnythingRule().toString(value, config, context)}` } }).toString(data, config, context); } } export class MajorWeakRefRule { constructor() { this.test = isWeakRef; } prepare(data, config, context) { new MajorObjectRule().prepare(data, config, context); const value = data.deref(); if (value != undefined) { new AnythingRule().prepare(value, config, context); } } toString(data, config, context) { const value = data.deref(); return new MajorObjectRule({ specialValue: { "[[WeakRefTarget]]": value == undefined ? "None" : `${new AnythingRule().toString(value, config, context)}` } }).toString(data, config, context); } } export class MaximumWeakRefRule { constructor() { this.test = isWeakRef; } prepare(data, config, context) { new MaximumObjectRule().prepare(data, config, context); const value = data.deref(); if (value != undefined) { new AnythingRule().prepare(value, config, context); } } toString(data, config, context) { const value = data.deref(); return new MaximumObjectRule({ specialValue: { "[[WeakRefTarget]]": value == undefined ? "None" : `${new AnythingRule().toString(value, config, context)}` } }).toString(data, config, context); } }