on 492ae2f help sign in
70 lines 1.4 kB history raw
1### `++sane`
3Check odor validity
5Check validity by odor. Produces a gate.
7Accepts
8-------
10`a` is a `++span` (`@ta`).
12`b` is an atom.
14Produces
15--------
17A boolean.
19Source
20------
22 ++ sane :: atom sanity
23 |= a/@ta
24 |= b/@ ^- ?
25 ?. =(%t (end 3 1 a))
26 ~|(%sane-stub !!)
27 =+ [inx=0 len=(met 3 b)]
28 ?: =(%tas a)
29 |- ^- ?
30 ?: =(inx len) &
31 =+ cur=(cut 3 [inx 1] b)
32 ?& ?| &((gte cur 'a') (lte cur 'z'))
33 &(=('-' cur) !=(0 inx) !=(len inx))
34 &(&((gte cur '0') (lte cur '9')) !=(0 inx))
35 ==
36 $(inx +(inx))
37 ==
38 ?: =(%ta a)
39 |- ^- ?
40 ?: =(inx len) &
41 =+ cur=(cut 3 [inx 1] b)
42 ?& ?| &((gte cur 'a') (lte cur 'z'))
43 &((gte cur '0') (lte cur '9'))
44 |(=('-' cur) =('~' cur) =('_' cur) =('.' cur))
45 ==
46 $(inx +(inx))
47 ==
48 |- ^- ?
49 ?: =(0 b) &
50 =+ cur=(end 3 1 b)
51 ?: &((lth cur 32) !=(10 cur)) |
52 =+ len=(teff cur)
53 ?& |(=(1 len) =+(i=1 |-(|(=(i len) &((gte (cut 3 [i 1] b) 128) $(i +(i)))))))
54 $(b (rsh 3 len b))
55 ==
56 ::
58Examples
59--------
61 /~zod/try=> ((sane %tas) %mol)
62 %.y
63 /~zod/try=> ((sane %tas) 'lam')
64 %.y
65 /~zod/try=> ((sane %tas) 'more ace')
66 %.n
70***