commit e7ada4437442a2aa85baf6458b387e27244c4c47
parent 472545bb01bf5d7fa977159873bf3922a1c9bf2d
Author: Vlad-Stefan Harbuz <vlad@vladh.net>
Date: Tue, 9 Apr 2024 20:52:20 +0100
regex: remember charset_class name, for introspectability
Signed-off-by: Vlad-Stefan Harbuz <vlad@vlad.website>
Diffstat:
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/regex/regex.ha b/regex/regex.ha
@@ -75,7 +75,7 @@ export type charset = [](charset_lit_item | charset_range_item |
charset_class_item),
charset_lit_item = rune,
charset_range_item = (u32, u32),
- charset_class_item = *fn(c: rune) bool;
+ charset_class_item = (str, *fn(c: rune) bool);
const charclass_map: [](str, *fn(c: rune) bool) = [
(":alnum:]", &ascii::isalnum),
@@ -187,7 +187,7 @@ fn handle_bracket(
for (let cc_idx = 0z; cc_idx < n_cc; cc_idx += 1) {
if (strings::hasprefix(rest, charclass_map[cc_idx].0)) {
append(charsets[len(charsets) - 1],
- charclass_map[cc_idx].1);
+ charclass_map[cc_idx]);
*skip_charclass_rest = true;
break;
};
@@ -662,7 +662,8 @@ fn run_thread(
matched = cs.is_positive;
break;
};
- case let classfn: charset_class_item =>
+ case let class_item: charset_class_item =>
+ const classfn = class_item.1;
if (classfn(r)) {
// Succeeded if positive match
// Failed if negative match