This commit is contained in:
77
node_modules/unist-util-is/convert.js
generated
vendored
Normal file
77
node_modules/unist-util-is/convert.js
generated
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
'use strict'
|
||||
|
||||
module.exports = convert
|
||||
|
||||
function convert(test) {
|
||||
if (test == null) {
|
||||
return ok
|
||||
}
|
||||
|
||||
if (typeof test === 'string') {
|
||||
return typeFactory(test)
|
||||
}
|
||||
|
||||
if (typeof test === 'object') {
|
||||
return 'length' in test ? anyFactory(test) : allFactory(test)
|
||||
}
|
||||
|
||||
if (typeof test === 'function') {
|
||||
return test
|
||||
}
|
||||
|
||||
throw new Error('Expected function, string, or object as test')
|
||||
}
|
||||
|
||||
// Utility assert each property in `test` is represented in `node`, and each
|
||||
// values are strictly equal.
|
||||
function allFactory(test) {
|
||||
return all
|
||||
|
||||
function all(node) {
|
||||
var key
|
||||
|
||||
for (key in test) {
|
||||
if (node[key] !== test[key]) return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
function anyFactory(tests) {
|
||||
var checks = []
|
||||
var index = -1
|
||||
|
||||
while (++index < tests.length) {
|
||||
checks[index] = convert(tests[index])
|
||||
}
|
||||
|
||||
return any
|
||||
|
||||
function any() {
|
||||
var index = -1
|
||||
|
||||
while (++index < checks.length) {
|
||||
if (checks[index].apply(this, arguments)) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
// Utility to convert a string into a function which checks a given node’s type
|
||||
// for said string.
|
||||
function typeFactory(test) {
|
||||
return type
|
||||
|
||||
function type(node) {
|
||||
return Boolean(node && node.type === test)
|
||||
}
|
||||
}
|
||||
|
||||
// Utility to return true.
|
||||
function ok() {
|
||||
return true
|
||||
}
|
||||
Reference in New Issue
Block a user