summaryrefslogtreecommitdiffstats
path: root/Codec/MIME
diff options
context:
space:
mode:
authorIavor S. Diatchki <iavor.diatchki@gmail.com>2014-02-24 13:54:23 -0800
committerIavor S. Diatchki <iavor.diatchki@gmail.com>2014-02-24 13:54:23 -0800
commit013ab26ccb84ddec5eed3ba42d8648b32dc79b38 (patch)
treeb03969fe0282ae31917cb5b821c0e2f7096c057a /Codec/MIME
parenta85e57deb287abdcdac8fb065ab0b20efe074d96 (diff)
parenteafdb65174bc2149881468a060d08127a3f04074 (diff)
Merge pull request #5 from odr/masterHEADni/mastercd/mastercd/HEADmaster
matchUntil was changed for performance reason
Diffstat (limited to 'Codec/MIME')
-rw-r--r--Codec/MIME/Parse.hs13
1 files changed, 10 insertions, 3 deletions
diff --git a/Codec/MIME/Parse.hs b/Codec/MIME/Parse.hs
index 2843903..f9dfeb2 100644
--- a/Codec/MIME/Parse.hs
+++ b/Codec/MIME/Parse.hs
@@ -26,6 +26,7 @@ module Codec.MIME.Parse
import Codec.MIME.Type
import Codec.MIME.Decode
+import Control.Arrow(second)
import Data.Char
import Data.Maybe
@@ -245,12 +246,18 @@ untilMatch a b | T.null a = Just b
| otherwise = untilMatch a $ T.tail b
matchUntil :: T.Text -> T.Text -> (T.Text, T.Text)
-matchUntil _ "" = ("", "")
-matchUntil str xs
+-- searching str; returning parts before str and after str
+matchUntil str = second (T.drop $ T.length str) . T.breakOn str
+
+{-
+matchUntil' :: T.Text -> T.Text -> (T.Text, T.Text)
+matchUntil' _ "" = ("", "")
+matchUntil' str xs
| T.null xs = mempty
-- slow, but it'll do for now.
| str `T.isPrefixOf` xs = ("", T.drop (T.length str) xs)
- | otherwise = let (as,bs) = matchUntil str $ T.tail xs in (T.take 1 xs <> as, bs)
+ | otherwise = let (as,bs) = matchUntil' str $ T.tail xs in (T.take 1 xs <> as, bs)
+-}
isHSpace :: Char -> Bool
isHSpace c = c == ' ' || c == '\t'