1- import {
2- convertWildcardToRegex ,
3- } from './convertWildcardToRegex' ;
4- import {
5- escapeRegexString ,
6- } from './escapeRegexString' ;
7- import {
8- parseRegex ,
9- } from './parseRegex' ;
10- import type {
11- LiqeQuery ,
12- } from './types' ;
1+ import { convertWildcardToRegex } from './convertWildcardToRegex' ;
2+ import { escapeRegexString } from './escapeRegexString' ;
3+ import { parseRegex } from './parseRegex' ;
4+ import { type LiqeQuery } from './types' ;
135
146type RegExpCache = Record < string , RegExp > ;
157
@@ -19,10 +11,11 @@ const createRegexTest = (regexCache: RegExpCache, regex: string) => {
1911 if ( regexCache [ regex ] ) {
2012 rule = regexCache [ regex ] ;
2113 } else {
22- rule = regexCache [ regex ] = parseRegex ( regex ) ;
14+ rule = parseRegex ( regex ) ;
15+ regexCache [ regex ] = rule ;
2316 }
2417
25- return ( subject : string ) : string | false => {
18+ return ( subject : string ) : false | string => {
2619 return subject . match ( rule ) ?. [ 0 ] ?? false ;
2720 } ;
2821} ;
@@ -32,9 +25,7 @@ export const createStringTest = (regexCache: RegExpCache, ast: LiqeQuery) => {
3225 throw new Error ( 'Expected a tag expression.' ) ;
3326 }
3427
35- const {
36- expression,
37- } = ast ;
28+ const { expression } = ast ;
3829
3930 if ( expression . type === 'RangeExpression' ) {
4031 throw new Error ( 'Unexpected range expression.' ) ;
@@ -50,9 +41,18 @@ export const createStringTest = (regexCache: RegExpCache, ast: LiqeQuery) => {
5041
5142 const value = String ( expression . value ) ;
5243
53- if ( ( value . includes ( '*' ) || value . includes ( '?' ) ) && expression . quoted === false ) {
54- return createRegexTest ( regexCache , String ( convertWildcardToRegex ( value ) ) + 'ui' ) ;
44+ if (
45+ ( value . includes ( '*' ) || value . includes ( '?' ) ) &&
46+ expression . quoted === false
47+ ) {
48+ return createRegexTest (
49+ regexCache ,
50+ String ( convertWildcardToRegex ( value ) ) + 'ui' ,
51+ ) ;
5552 } else {
56- return createRegexTest ( regexCache , '/(' + escapeRegexString ( value ) + ')/' + ( expression . quoted ? 'u' : 'ui' ) ) ;
53+ return createRegexTest (
54+ regexCache ,
55+ '/(' + escapeRegexString ( value ) + ')/' + ( expression . quoted ? 'u' : 'ui' ) ,
56+ ) ;
5757 }
5858} ;
0 commit comments