34 lines
901 B
TypeScript
34 lines
901 B
TypeScript
|
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);
|
||
|
}
|