def AaParse.name

bend-osdev-apparmor@0.1.0.0 · parse.bend:1334

import bend-osdev-apparmor@0.1.0.0/parse.bend as Parse
import Base
import bend-osdev-apparmor@0.1.0.0/text.bend as X
import bend-osdev-apparmor@0.1.0.0/token.bend as T
import bend-osdev-apparmor@0.1.0.0/error.bend as E

1334# a profile name: a quoted string, or a word starting with a letter, a digit or '/'
1335def AaParse.name(t: T.AaTerm, +src: E.AaSrc) -> Result<&2, &2, E.AaError, List<&2, U32>>:
1336  match t:
1337    case T.AaTmWord{+w}:
1338      Bool.pick(Result<&2, &2, E.AaError, List<&2, U32>>, Bool.or(AaParse.alnum(X.AaText.head(w)), U32.is_eq(X.AaText.head(w), 47)), Done{w}, Fail{E.AaSrc.syntax(src)})
1339    case T.AaTmQuoted{+q}:
1340      Bool.pick(Result<&2, &2, E.AaError, List<&2, U32>>, X.AaText.is_nil(q), Fail{E.AaSrc.syntax(src)}, Done{q})
1341    case _:
1342      Fail{E.AaSrc.syntax(src)}

Uses (13)

Used by (2)