| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- 'use strict'
- var visit = require('unist-util-visit')
- module.exports = getDefinitionFactory
- var own = {}.hasOwnProperty
- // Get a definition in `node` by `identifier`.
- function getDefinitionFactory(node, options) {
- return getterFactory(gather(node, options))
- }
- // Gather all definitions in `node`
- function gather(node, options) {
- var cache = {}
- if (!node || !node.type) {
- throw new Error('mdast-util-definitions expected node')
- }
- visit(node, 'definition', options && options.commonmark ? commonmark : normal)
- return cache
- function commonmark(definition) {
- var id = normalise(definition.identifier)
- if (!own.call(cache, id)) {
- cache[id] = definition
- }
- }
- function normal(definition) {
- cache[normalise(definition.identifier)] = definition
- }
- }
- // Factory to get a node from the given definition-cache.
- function getterFactory(cache) {
- return getter
- // Get a node from the bound definition-cache.
- function getter(identifier) {
- var id = identifier && normalise(identifier)
- return id && own.call(cache, id) ? cache[id] : null
- }
- }
- function normalise(identifier) {
- return identifier.toUpperCase()
- }
|