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

34 lines
973 B
TypeScript
Raw Normal View History

2021-04-22 18:51:48 +00:00
import { Encoder, EncoderState } from "./encoder";
2021-03-17 09:21:48 +00:00
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));
}
2021-04-22 18:51:48 +00:00
export function decodeDefaultPointer<T>(d: TypedDecoder<T>): DefaultPointer {
return readDefaultPointer(d.withPointerDecoder(decodeDefaultPointer, d => d.next()));
2021-03-17 09:21:48 +00:00
}
2021-04-22 18:51:48 +00:00
export function encodeDefaultPointer(e: EncoderState, w: DefaultPointer): void {
new Encoder(e, encodeDefaultPointer).push(w.v);
2021-03-17 09:21:48 +00:00
}