This commit is contained in:
48
node_modules/micromark/lib/util/combine-extensions.mjs
generated
vendored
Normal file
48
node_modules/micromark/lib/util/combine-extensions.mjs
generated
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
export default combineExtensions
|
||||
|
||||
import own from '../constant/has-own-property.mjs'
|
||||
import chunkedSplice from './chunked-splice.mjs'
|
||||
import miniflat from './miniflat.mjs'
|
||||
|
||||
// Combine several syntax extensions into one.
|
||||
function combineExtensions(extensions) {
|
||||
var all = {}
|
||||
var index = -1
|
||||
|
||||
while (++index < extensions.length) {
|
||||
extension(all, extensions[index])
|
||||
}
|
||||
|
||||
return all
|
||||
}
|
||||
|
||||
function extension(all, extension) {
|
||||
var hook
|
||||
var left
|
||||
var right
|
||||
var code
|
||||
|
||||
for (hook in extension) {
|
||||
left = own.call(all, hook) ? all[hook] : (all[hook] = {})
|
||||
right = extension[hook]
|
||||
|
||||
for (code in right) {
|
||||
left[code] = constructs(
|
||||
miniflat(right[code]),
|
||||
own.call(left, code) ? left[code] : []
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function constructs(list, existing) {
|
||||
var index = -1
|
||||
var before = []
|
||||
|
||||
while (++index < list.length) {
|
||||
;(list[index].add === 'after' ? existing : before).push(list[index])
|
||||
}
|
||||
|
||||
chunkedSplice(existing, 0, 0, before)
|
||||
return existing
|
||||
}
|
||||
Reference in New Issue
Block a user