{-# LANGUAGE CPP #-} module Strelka.RequestBodyParsing.DefaultParser where import Strelka.Prelude import qualified Strelka.RequestBodyParsing.Parser as A import qualified Attoparsec.Data as B import qualified Data.Text.Lazy as C import qualified Data.Text.Lazy.Builder as D import qualified Text.Builder as E import qualified Data.ByteString.Lazy as F import qualified Data.ByteString.Builder as G import qualified ByteString.TreeBuilder as H {-| Provides a default request body parser. -} class DefaultParser a where defaultParser :: A.Parser a -- * Generated instances ------------------------- #define INSTANCE(TYPE, FUNCTION) instance DefaultParser TYPE where {{-# INLINE defaultParser #-}; defaultParser = FUNCTION;} #define TEXT_PARSER_INSTANCE(TYPE) INSTANCE(TYPE, A.parseText B.lenientParser) INSTANCE(Text, A.text) INSTANCE(E.Builder, A.textBuilder) INSTANCE(C.Text, A.lazyText) INSTANCE(D.Builder, A.lazyTextBuilder) INSTANCE(ByteString, A.bytes) INSTANCE(H.Builder, A.bytesBuilder) INSTANCE(F.ByteString, A.lazyBytes) INSTANCE(G.Builder, A.lazyBytesBuilder) TEXT_PARSER_INSTANCE(Char) TEXT_PARSER_INSTANCE(Bool) TEXT_PARSER_INSTANCE(Integer) TEXT_PARSER_INSTANCE(Int) TEXT_PARSER_INSTANCE(Int8) TEXT_PARSER_INSTANCE(Int16) TEXT_PARSER_INSTANCE(Int32) TEXT_PARSER_INSTANCE(Int64) TEXT_PARSER_INSTANCE(Word) TEXT_PARSER_INSTANCE(Word8) TEXT_PARSER_INSTANCE(Word16) TEXT_PARSER_INSTANCE(Word32) TEXT_PARSER_INSTANCE(Word64) TEXT_PARSER_INSTANCE(Double) TEXT_PARSER_INSTANCE(Scientific) TEXT_PARSER_INSTANCE(TimeOfDay) TEXT_PARSER_INSTANCE(Day) TEXT_PARSER_INSTANCE(TimeZone) TEXT_PARSER_INSTANCE(UTCTime) #undef INSTANCE #undef TEXT_PARSER_INSTANCE