UNPKG

@markuplint/ml-spec

Version:

Types and schema that specs of the Markup languages for markuplint

37 lines (36 loc) 1.2 kB
import { getImplicitRole as _getImplicitRole } from '../specs/get-implicit-role.js'; import { getRoleSpec } from '../specs/get-role-spec.js'; import { resolveNamespace } from '../utils/resolve-namespace.js'; export function getImplicitRole(specs, // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types el, version) { const implicitRole = getImplicitRoleName(el, version, specs); if (implicitRole === false) { // No Corresponding Role return { el, role: null, }; } const { namespaceURI } = resolveNamespace(el.localName, el.namespaceURI); const spec = getRoleSpec(specs, implicitRole, namespaceURI, version); if (!spec) { return { el, role: null, errorType: 'IMPLICIT_ROLE_NAMESPACE_ERROR', }; } return { el, role: { ...spec, isImplicit: true, }, }; } export function getImplicitRoleName( // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types el, version, specs) { return _getImplicitRole(specs, el.localName, el.namespaceURI, version, el.matches.bind(el)); }