/** * @typedef {import('micromark-util-types').Code} Code */ import { markdownLineEndingOrSpace, unicodePunctuation, unicodeWhitespace } from 'micromark-util-character' import {codes, constants} from 'micromark-util-symbol' /** * Classify whether a code represents whitespace, punctuation, or something * else. * * Used for attention (emphasis, strong), whose sequences can open or close * based on the class of surrounding characters. * * > 👉 **Note**: eof (`null`) is seen as whitespace. * * @param {Code} code * Code. * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined} * Group. */ export function classifyCharacter(code) { if ( code === codes.eof || markdownLineEndingOrSpace(code) || unicodeWhitespace(code) ) { return constants.characterGroupWhitespace } if (unicodePunctuation(code)) { return constants.characterGroupPunctuation } }