Я хотел бы разобрать E-Mail, подобные этойКак пропустить ненужный текст с attoparsec
Random Info: ........
From: [email protected]
Other Info: .......
Subject: ima subject
Some More Info: .....
This is a message.
Но я не нужна вся информация из этого E-Mail. Только «От», «Тема» и само сообщение. Как я могу разобрать такое сообщение? Более конкретно, как я могу пропустить нежелательные данные?
Вот код, который я до сих пор
{-# LANGUAGE OverloadedStrings #-}
module MailParser where
import qualified Data.Text as T
import Data.Attoparsec.Text
type From = Address
type Message = T.Text
type Subject = T.Text
type Local = T.Text
type Domain = T.Text
data Address = Address Local Domain
data Mail = Mail From Subject Message
addressParser :: Parser Address
addressParser = do
_ <- string "From: "
local <- takeWhile1 (/= '@')
_ <- char '@'
domain <- takeWhile1 (/= '\n')
return $ Address local domain
subjectParser :: Parser T.Text
subjectParser = do
_ <- string "Subject: "
takeWhile1 (/= '\n')
messageParser :: Parser Message
messageParser = do
_ <- char '\n'
takeText
mailParser :: Parser Mail
mailParser = do
-- skip unwanted info
from <- addressParser
-- skip unwanted info
subject <- subjectParser
-- skip unwanted info
message <- messageParser
return $ Mail from subject message
Обратите внимание, что вместо записи '_ <- foo' вы всегда можете написать только' foo'. – amalloy
Я знаю, но я получаю предупреждения в Atom об этом, и я не знаю, как их отключить. – TomTom