@ryusei/code
Version:
<div align="center"> <a href="https://code.ryuseijs.com"> <img alt="RyuseiCode" src="https://code.ryuseijs.com/images/svg/logo.svg" width="70"> </a>
18 lines (14 loc) • 574 B
text/typescript
import { Token, TokenMatcher } from '@ryusei/code';
import { isUndefined } from '../../type/type';
/**
* Checks if the token matches the provided matcher or not.
*
* @param token - A token to test.
* @param matcher - An array described as a TokenMatcher tuple.
*/
export function matchesToken( token: Token, matcher: TokenMatcher ): boolean {
if ( token && token[ 0 ] === matcher[ 0 ] && ( ! matcher[ 1 ] || matcher[ 1 ].test( token[ 1 ] ) ) ) {
return isUndefined( matcher[ 2 ] ) || token[ 2 ].state === matcher[ 2 ];
}
return false;
}