{-# LANGUAGE OverloadedStrings #-}
module Text.Xournal.Parse where
import Control.Applicative hiding (many)
import Data.Attoparsec
import Data.Attoparsec.Char8 ( char, decimal, double, skipSpace
, isHorizontalSpace)
import qualified Data.ByteString.Char8 as B hiding (map)
import qualified Data.Iteratee as Iter
import Data.Iteratee.Char
import qualified Data.Attoparsec.Iteratee as AI
import Data.Char
import Data.Xournal.Simple
import Text.Xournal.Parse.Zlib
import Data.Strict.Tuple
import Prelude hiding (takeWhile)
skipSpaces :: Parser ()
skipSpaces = satisfy isHorizontalSpace *> skipWhile isHorizontalSpace
trim_starting_space :: Parser ()
trim_starting_space = do try endOfInput
<|> takeWhile (inClass " \n") *> return ()
-- <|> (many . satisfy . inClass ) " \n" *> return ()
langle :: Parser Char
langle = char '<'
rangle :: Parser Char
rangle = char '>'
xmlheader :: Parser B.ByteString
xmlheader = string "" *> takeTill (inClass "?>") <* string "?>"
headercontentWorker :: B.ByteString -> Parser B.ByteString
headercontentWorker bstr = do
h <- takeWhile1 (notInClass "?>")
((string "?>" >>= return . (bstr `B.append` h `B.append`))
<|> headercontentWorker (bstr `B.append` h))
headercontent :: Parser B.ByteString
headercontent = headercontentWorker B.empty
stroketagopen :: Parser Stroke -- B.ByteString
stroketagopen = do
trim
string "