Text between: Difference between revisions

m
→‎{{header|Haskell}}: Added two comment lines
(→‎{{header|Haskell}}: Updated for new spec and examples)
m (→‎{{header|Haskell}}: Added two comment lines)
Line 181:
 
=={{header|Haskell}}==
<lang Haskell>import Data.Text (Text, breakOn, length, pack, stripPrefix, unpack)
(Text, breakOn, length, pack, stripPrefix, unpack)
import Data.List (intercalate)
import Control.Arrow ((***))
 
-- TEXT BETWEEN -----------------------------------------------------------
 
textBetween :: (Either Text Text, Either Text Text) -> Text -> Text
textBetween (s, e) txt =
let stet t = (Just . const t)
prune f t = f . flip breakOn t
-- Text up to and including any start delimiter dropped
mb =
either (stet txt) (stripPrefix <*> prune snd txt) s >>=
-- Residue up to any end delimiter (or if none found, to end)
(\lp -> either (stet lp) (Just . prune fst lp) e)
in case mb of
9,659

edits