diff --git a/src/index.ts b/src/index.ts index e4082837..6d09cf8d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -15,6 +15,8 @@ export { isNode, isPair, isScalar, + isMergeKey, + MERGE_KEY, isSeq } from './nodes/identity.ts' export type { Node, ParsedNode, Range } from './nodes/Node.ts' diff --git a/src/nodes/identity.ts b/src/nodes/identity.ts index 9f1fba2f..f98099dd 100644 --- a/src/nodes/identity.ts +++ b/src/nodes/identity.ts @@ -6,6 +6,8 @@ import type { Scalar } from './Scalar.ts' import type { YAMLMap } from './YAMLMap.ts' import type { YAMLSeq } from './YAMLSeq.ts' +export { isMergeKey, MERGE_KEY } from '../schema/yaml-1.1/merge.ts' + export const ALIAS: unique symbol = Symbol.for('yaml.alias') export const DOC: unique symbol = Symbol.for('yaml.document') export const MAP: unique symbol = Symbol.for('yaml.map') diff --git a/src/schema/yaml-1.1/merge.ts b/src/schema/yaml-1.1/merge.ts index e8f449ac..ff0350c0 100644 --- a/src/schema/yaml-1.1/merge.ts +++ b/src/schema/yaml-1.1/merge.ts @@ -12,7 +12,7 @@ import type { ScalarTag } from '../types.ts' // Keys in mapping nodes earlier in the sequence override keys specified in // later mapping nodes. -- http://yaml.org/type/merge.html -const MERGE_KEY = '<<' +export const MERGE_KEY = '<<' export const merge: ScalarTag & { identify(value: unknown): boolean @@ -23,7 +23,7 @@ export const merge: ScalarTag & { (typeof value === 'symbol' && value.description === MERGE_KEY), default: 'key', tag: 'tag:yaml.org,2002:merge', - test: /^<<$/, + test: new RegExp(`^${MERGE_KEY}$`), resolve: () => Object.assign(new Scalar(Symbol(MERGE_KEY)), { addToJSMap: addMergeToJSMap