module Text.HTML.Tagchup.Parser.Status where
import qualified Text.HTML.Tagchup.Parser.Stream as Stream
import qualified Text.XML.Basic.Position as Position
import Control.Monad.Trans.State (StateT(..), )
data T stream =
Cons {
sourcePos :: Position.T,
source :: stream
}
deriving Show
instance Stream.C input => Stream.C (T input) where
getChar =
StateT $ \ (Cons pos str) ->
do (c,cs) <- runStateT Stream.getChar str
return (c, Cons (Position.updateOnChar c pos) cs)