Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (de mnorm (Email)
- (let (c (chop Email) Email ())
- (while (or (unless c (rollback) (throw 'parse "no @")) (<> "@" (car c))) ## processing local part
- (when (= (car c) "\\") (do 2 (push 'Email (pop 'c))))
- (when (= (car c) "(")
- (while (or (unless c (rollback) (throw 'parse "unmatched paran")) (<> (car c) ")" ) )
- (pop 'c)
- )
- (pop 'c)
- )
- (when (= (car c) "\"")
- (push 'Email (pop 'c))
- (while (<> "\"" (car c))
- (push 'Email (pop 'c))
- )
- )
- (if (= "+" (car c))
- (while (<> "@" (car c))
- (pop 'c)
- )
- (push 'Email (pop 'c))
- )
- )
- (when (=0 (length Email)) (rollback) (throw 'parse "no local part"))
- (when (=0 (dec (length c))) (rollback) (throw 'parse "no host part"))
- (pack (reverse Email) c)
- )
- )
- (class +MInd)
- (dm has> (Val X)
- (extra Val
- (if (= Val (mnorm Val)) (mnorm X) X) ) )
- (dm rel> (Obj Old New Hook)
- (extra Obj (mnorm Old) (mnorm New) Hook) )
- (dm rel?> (Obj Val Hook)
- (let V (mnorm Val)
- (or (not V) (extra Obj V Hook)) ) )
- (dm lose> (Obj Val Hook)
- (extra Obj (mnorm Val) Hook) )
- (dm keep> (Obj Val Hook)
- (extra Obj (mnorm Val) Hook) )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement