@slightning/anything-to-string
Version:
Converts anything to a string.
74 lines (73 loc) • 2.4 kB
JavaScript
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);
}
}