milestone 21: abp list exceptions and a regex rule kind
This commit is contained in:
+12
-4
@@ -22,10 +22,15 @@ pub const Kind = enum {
|
||||
domain,
|
||||
/// `text` holds one candidate suffix; every proper subdomain of it matches.
|
||||
wildcard,
|
||||
/// A regex rule. Counted, skipped, never compiled (PLAN §2.2).
|
||||
/// A regex line in a downloaded list. Counted, skipped, never compiled: the
|
||||
/// engine exists for rules the operator wrote, not for lists (PLAN §2.2).
|
||||
regex,
|
||||
/// `text` holds one candidate name an ABP exception rule (`@@||x^`) lifts:
|
||||
/// the name itself and every subdomain of it. Only the ABP parser emits it.
|
||||
exception,
|
||||
/// Syntactically a rule of this format, but one nxdns cannot honour:
|
||||
/// an ABP modifier list, an exception rule, element hiding, a scheme anchor.
|
||||
/// an ABP modifier list, an exception form outside `@@||x^`, element
|
||||
/// hiding, a scheme anchor.
|
||||
unsupported,
|
||||
};
|
||||
|
||||
@@ -33,8 +38,11 @@ pub const Line = struct {
|
||||
kind: Kind,
|
||||
/// Borrowed from the caller's line. Not lowercased, not validated.
|
||||
text: []const u8 = "",
|
||||
/// `.wildcard` only. ABP `||x^` covers `x` itself as well as its subdomains,
|
||||
/// so the compiler emits an additional `.list` entry when this is set.
|
||||
/// `.wildcard` and `.exception` only: the rule covers the anchored name
|
||||
/// itself as well as its subdomains, which is what ABP `||x^` and `@@||x^`
|
||||
/// mean. The compiler acts on it for a `.wildcard` line, by emitting an
|
||||
/// additional `.list` entry; an `.exception` line needs no second entry,
|
||||
/// because the allow walk tests the full name as well as its parents.
|
||||
covers_apex: bool = false,
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user