pjones / addy

A full-featured library for parsing, validating, and rendering email addresses
BSD 2-Clause "Simplified" License
4 stars 1 forks source link

Parsing of localpart without ›@‹ is not possible #4

Open JaSpa opened 3 years ago

JaSpa commented 3 years ago

I needed to parse only localparts of mail addresses and came across this library but realized that it wasn't working as I thought it would:

parseOnly (localPartP Strict) "test"
-- Left "local part > quoted content > '\"': Failed reading: satisfy"

parseOnly (localPartP Lenient) "test"
-- Left "local part: Failed reading: empty"

parseOnly (localPartP Strict) "test@"
-- Right (Nothing,LocalPart "test")

parseOnly (localPartP Lenient) "test@"
-- Right (Nothing,LocalPart "test")

But I also know that the @ is not consumed by localPartP because this parser succeeds:

parseOnly (localPartP Lenient <* char '@') "test@"
-- Right (Nothing,LocalPart "test")

So I don't know if this is to be considered a bug or if localPartP needs documentation that it can only succeed if it is followed by a @.

For my use case this won't be a blocker either way since I decided to parse only a restricted form of localparts and use your nice library to do validation afterwards.

pjones commented 3 years ago

@JaSpa Thanks for point this out. localPartP does indeed peek at the character following the local part and verifies that it is a "@" character. IIRC I did this because of some weird edge case with obsolete local parts. I'll play with the code and see if I can lift this restriction.