@markuplint/ml-spec
Version:
Types and schema that specs of the Markup languages for markuplint
37 lines (36 loc) • 1.2 kB
JavaScript
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));
}