+7
-3
src/core.js
+7
-3
src/core.js
···
15
15
let match;
16
16
17
17
if (typeof pattern === 'function') {
18
-
while (typeof pattern === 'function') pattern = pattern(state);
19
-
return pattern;
18
+
if (!pattern.length) pattern = pattern();
19
+
return pattern(state);
20
20
} else if (isStickySupported) {
21
21
pattern.lastIndex = state.index;
22
22
if (pattern.test(state.input)) {
···
43
43
export const match = (name, transform) => (quasis, ...expressions) => {
44
44
const ast = parseDSL(
45
45
quasis,
46
-
expressions.map((expression, i) => `_e(state, _${i})`)
46
+
expressions.map((expression, i) =>
47
+
typeof expression === 'function' && expression.length
48
+
? `_${i}(state)`
49
+
: `_e(state, _${i})`
50
+
)
47
51
);
48
52
49
53
const makeMatcher = new Function(