23 lines
571 B
JavaScript
23 lines
571 B
JavaScript
|
/**
|
||
|
* @typedef {import('hast').Nodes} Nodes
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Get the rank (`1` to `6`) of headings (`h1` to `h6`).
|
||
|
*
|
||
|
* @param {Nodes} node
|
||
|
* Node to check.
|
||
|
* @returns {number | undefined}
|
||
|
* Rank of the heading or `undefined` if not a heading.
|
||
|
*/
|
||
|
export function headingRank(node) {
|
||
|
const name = node.type === 'element' ? node.tagName.toLowerCase() : ''
|
||
|
const code =
|
||
|
name.length === 2 && name.charCodeAt(0) === 104 /* `h` */
|
||
|
? name.charCodeAt(1)
|
||
|
: 0
|
||
|
return code > 48 /* `0` */ && code < 55 /* `7` */
|
||
|
? code - 48 /* `0` */
|
||
|
: undefined
|
||
|
}
|