packages feed

moonlight-pale-0.1.0.0: src-ghc-surface/Moonlight/Pale/Ghc/Expr/Render.hs

{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}

module Moonlight.Pale.Ghc.Expr.Render
  ( LayoutPolicy (..),
    PageWidth,
    defaultPageWidth,
    mkPageWidth,
    ModuleRenderContext (..),
    RenderTarget (..),
    RenderRefusal (..),
    renderSource,
    renderRoundTripEquivalent,
  )
where

import Data.Text qualified as Text
import Moonlight.Pale.Ghc.Expr.Equivalence (renderRoundTripEquivalent)
import Moonlight.Pale.Ghc.Expr.Render.Document
import Moonlight.Pale.Ghc.Expr.Render.Module
import Moonlight.Pale.Ghc.Expr.Render.Refusal

renderSource :: LayoutPolicy -> RenderTarget -> Either RenderRefusal Text.Text
renderSource = \case
  CompactLayout ->
    fmap renderCompactDocument
      . renderSourceWith CompactRender
  PrettyLayout pageWidth ->
    fmap (renderPrettyDocument pageWidth)
      . renderSourceWith GeneratedRender