algebra-sql-0.1.0.0: src/Database/Algebra/SQL/Render.hs
-- | This mdoule provides efficient functions to render lists of queries.
module Database.Algebra.SQL.Render
( debugTransformResult
, renderCompact
, renderPretty
, renderPlain
) where
import qualified Text.PrettyPrint.ANSI.Leijen as L
( Doc
, SimpleDoc
, plain
, displayS
, renderPretty
, renderCompact
)
import Database.Algebra.SQL.Query (Query)
import Database.Algebra.SQL.Render.Query (renderQuery)
import Database.Algebra.SQL.Render.Tile (renderTransformResult)
import Database.Algebra.SQL.Tile (TransformResult)
import Database.Algebra.SQL.Compatibility
renderPrettySimpleDoc :: L.Doc -> L.SimpleDoc
renderPrettySimpleDoc =
L.renderPretty 0.8 80
renderWith :: (L.Doc -> L.SimpleDoc) -> CompatMode -> Query -> ShowS
renderWith f c = L.displayS . f . renderQuery c
-- | Returns a 'ShowS' containing debug information for a transform result.
debugTransformResult :: CompatMode -> TransformResult -> ShowS
debugTransformResult compat =
L.displayS . renderPrettySimpleDoc . (renderTransformResult compat)
-- | Renders a list of queries in an ugly but fast way, feasible as direct SQL
-- input.
renderCompact :: CompatMode -> [Query] -> [ShowS]
renderCompact c = map $ renderWith L.renderCompact c
-- | Renders a list of queries in a beautiful way.
renderPretty :: CompatMode -> [Query] -> [ShowS]
renderPretty c = map $ renderWith renderPrettySimpleDoc c
-- | Renders a list of queries without colors but formatted.
renderPlain :: CompatMode -> [Query] -> [ShowS]
renderPlain c = map $ renderWith (renderPrettySimpleDoc . L.plain) c