luhn-generator
Version:
A generator of numbers that passes the validation of Luhn algorithm or Luhn formula, also known as the 'modulus 10' or 'mod 10' algorithm
49 lines (40 loc) • 1.29 kB
JavaScript
import implicitHtmlRoles from '../standards/implicit-html-roles';
import { getNodeFromTree } from '../../core/utils';
import AbstractVirtuaNode from '../../core/base/virtual-node/abstract-virtual-node';
/**
* Get the implicit role for a given node
* @method implicitRole
* @memberof axe.commons.aria
* @instance
* @param {HTMLElement|VirtualNode} node The node to test
* @return {Mixed} Either the role or `null` if there is none
*/
function implicitRole(node) {
const vNode =
node instanceof AbstractVirtuaNode ? node : getNodeFromTree(node);
node = vNode.actualNode;
// this error is only thrown if the virtual tree is not a
// complete tree, which only happens in linting and if a
// user used `getFlattenedTree` manually on a subset of the
// DOM tree
if (!vNode) {
throw new ReferenceError(
'Cannot get implicit role of a node outside the current scope.'
);
}
// until we have proper implicit role lookups for svgs we will
// avoid giving them one
if (node && node.namespaceURI === 'http://www.w3.org/2000/svg') {
return null;
}
const nodeName = vNode.props.nodeName;
const role = implicitHtmlRoles[nodeName];
if (!role) {
return null;
}
if (typeof role === 'function') {
return role(vNode);
}
return role;
}
export default implicitRole;