123456789101112131415161718192021222324252627282930313233 |
- /**
- * @typedef {import('../types.js').AssociationId} AssociationId
- */
- import {decodeString} from 'micromark-util-decode-string'
- /**
- * Get an identifier from an association to match it to others.
- *
- * Associations are nodes that match to something else through an ID:
- * <https://github.com/syntax-tree/mdast#association>.
- *
- * The `label` of an association is the string value: character escapes and
- * references work, and casing is intact.
- * The `identifier` is used to match one association to another:
- * controversially, character escapes and references don’t work in this
- * matching: `©` does not match `©`, and `\+` does not match `+`.
- *
- * But casing is ignored (and whitespace) is trimmed and collapsed: ` A\nb`
- * matches `a b`.
- * So, we do prefer the label when figuring out how we’re going to serialize:
- * it has whitespace, casing, and we can ignore most useless character
- * escapes and all character references.
- *
- * @type {AssociationId}
- */
- export function association(node) {
- if (node.label || !node.identifier) {
- return node.label || ''
- }
- return decodeString(node.identifier)
- }
|