123456789101112131415161718192021222324252627282930313233343536 |
- import { createNode } from '../doc/createNode.js';
- import { stringifyPair } from '../stringify/stringifyPair.js';
- import { addPairToJSMap } from './addPairToJSMap.js';
- import { NODE_TYPE, PAIR, isNode } from './identity.js';
- function createPair(key, value, ctx) {
- const k = createNode(key, undefined, ctx);
- const v = createNode(value, undefined, ctx);
- return new Pair(k, v);
- }
- class Pair {
- constructor(key, value = null) {
- Object.defineProperty(this, NODE_TYPE, { value: PAIR });
- this.key = key;
- this.value = value;
- }
- clone(schema) {
- let { key, value } = this;
- if (isNode(key))
- key = key.clone(schema);
- if (isNode(value))
- value = value.clone(schema);
- return new Pair(key, value);
- }
- toJSON(_, ctx) {
- const pair = ctx?.mapAsMap ? new Map() : {};
- return addPairToJSMap(ctx, pair, this);
- }
- toString(ctx, onComment, onChompKeep) {
- return ctx?.doc
- ? stringifyPair(this, ctx, onComment, onChompKeep)
- : JSON.stringify(this);
- }
- }
- export { Pair, createPair };
|