[package] name = "leveva-matching" version = "0.0.0" edition = "2021" publish = false description = "IRC glob matching and `nick!user@host` hostmasks — the RFC 1459 case-folded `*`/`?`/`#` matcher (descendant of `common/match.c`), with CIDR-aware host-component matching." # Extracted from `leveva` (the IRC daemon) as a self-contained leaf library: the # whole module reaches into only two other workspace leaves — `leveva-casemap` (the # RFC 1459 case fold) and `leveva-cidr` (the `addr/prefix` host path) — plus `nom` # for the mask tokenizer. It is the safe successor of the C `ircd`'s `match()` / # `collapse()` / `parseNUH`. ~13 consumer modules (bans, K/D/X-lines, RESV, WEBIRC, # allow-host auth, OPER, hunt/map/mask) depend on *it*. `leveva` re-exports it as # `leveva::matching`. [lib] path = "src/lib.rs" [dependencies] leveva-casemap = { path = "../leveva-casemap" } leveva-cidr = { path = "../leveva-cidr" } nom = "7" [dev-dependencies] # Property/fuzz tests: the no-panic, `*`-matches-anything, case-insensitivity, # compile/matches-agreement, collapse-preservation/idempotence, HostMask round-trip, # and CIDR-fallback invariants are fed arbitrary strings and glob masks. Stable-toolchain # fuzz tier — the project has no nightly/cargo-fuzz, so proptest is the runnable fuzzer. # There is no byte-faithful C oracle (leveva's matcher deliberately diverges from # match.c's ASCII-only fold), so these invariants are the gate, not a supplement. proptest = "1"