preserves/implementations/javascript/packages/core/src/pointer.ts

34 lines
901 B
TypeScript
Raw Normal View History

2021-03-17 09:21:48 +00:00
import type { Encoder } from "./encoder";
import type { TypedDecoder } from "./decoder";
import type { Value } from "./values";
import { strip } from "./strip";
export class DefaultPointer {
v: Value<DefaultPointer>;
constructor(v: Value<DefaultPointer>) {
this.v = v;
}
equals(other: any, is: (a: any, b: any) => boolean) {
return Object.is(other.constructor, this.constructor) && is(this.v, other.v);
}
asPreservesText(): string {
return '#!' + this.v.asPreservesText();
}
}
export function readDefaultPointer(v: Value<DefaultPointer>): DefaultPointer {
return new DefaultPointer(strip(v));
}
export function decodeDefaultPointer(d: TypedDecoder<DefaultPointer>): DefaultPointer {
return readDefaultPointer(d.next());
}
export function encodeDefaultPointer(e: Encoder<DefaultPointer>, w: DefaultPointer): void {
e.push(w.v);
}