DIRECTORY GVMailParse USING [NameInfo], Rope; PeanutParse: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; Name: TYPE = REF NameRecord; NameRecord: TYPE = RECORD [simpleName, registry, arpaHost: ROPE_ NIL]; Qualification: TYPE = {unqualified, dotQualified, arpaQualified}; MessageFieldIndex: TYPE = { -- order is significant replyToF, senderF, fromF, toF, ccF, cF, bccF, dateF, subjectF, categoriesF, inReplyToF}; MessageFType: TYPE = {simpleRope, rCatList, rNameList}; MessageInfo: TYPE = RECORD[name: ROPE, fType: MessageFType]; messageParseArray: ARRAY MessageFieldIndex OF MessageInfo; ParseStatus: TYPE = {ok, syntaxError}; CanonicalizeName: PROC[r: ROPE] RETURNS[name: ROPE]; CanonicalName: PROC[simpleName, registry, arpaHost: ROPE, n: GVMailParse.NameInfo, sending: BOOL] RETURNS[name: ROPE, arpaSeen: BOOL]; LocalArpaSite: PROC[host: ROPE] RETURNS [BOOL]; END. *File: PeanutParse.mesa Global types Êq˜Jšœ™J˜šÏk ˜ Jšœ œ ˜J˜J˜—Jšœ œ œ˜ J˜Jš˜J˜Jšœ ™ J˜Jšœœœ˜J˜Jšœœœ ˜š œ œœ"œœ˜FJ˜—Jšœœ.˜AšœœÏc˜5J˜YJ˜—Jšœœ%˜7Jšœ œœœ˜