on master help sign in
src/Data/Email.hs+12−24
since splitsnapshots
unifiedsplit
@@ -7,20 +7,18 @@ module Data.Email
7 , _EmailEmailAddress
7 , _EmailEmailAddress
8 ) where
8 ) where
9
9
10−import Control.Lens hiding (elements)
10+import Control.Lens hiding (elements)
11−import Control.Monad
12−import Data.Aeson as JSON
11+import Data.Aeson as JSON
13−import Data.ByteString
12+import Data.ByteString
14−import Data.ByteString.Lens
13+import Data.ByteString.Lens
15−import Data.String
14+import Data.String
16−import Data.Text as T
15+import Data.Text as T
17−import Data.Text.Encoding (decodeUtf8)
16+import Data.Text.Encoding (decodeUtf8)
18−import Data.Text.Lens
17+import Data.Text.Lens
19−import Test.QuickCheck.Arbitrary
18+import Test.QuickCheck.Arbitrary
20−import Test.QuickCheck.Gen (elements)
19+import Test.QuickCheck.Gen (elements)
21−import Text.Email.Extra (validateEmail)
20+import Text.Email.Extra (validateEmail)
22−import Text.Email.Parser
21+import Text.Email.Parser
23−import Text.Email.Validate (EmailAddress)
24
22
25newtype Email
23newtype Email
26 = Email
24 = Email
@@ -52,15 +50,5 @@ instance Arbitrary Email where
52 host <- elements ["example.com", "gmail.com" :: Text]
50 host <- elements ["example.com", "gmail.com" :: Text]
53 return $ Email $ user <> host
51 return $ Email $ user <> host
54
52
55−instance ToJSON EmailAddress where
56− toJSON = toJSON . view (re _EmailEmailAddress . _Email)
57−
58−instance FromJSON EmailAddress where
59− parseJSON = withText "EmailAddress" $ \s -> do
60− let ea = s ^? re _Email . _EmailEmailAddress
61− case ea of
62− Just x -> pure x
63− Nothing -> mzero
64−
65toEmail :: EmailAddress -> Email
53toEmail :: EmailAddress -> Email
66toEmail = Email . decodeUtf8 . toByteString
54toEmail = Email . decodeUtf8 . toByteString