{-# LANGUAGE CPP #-} {-# LANGUAGE OverloadedStrings #-} module Text.Pandoc.Filter.EmphasizeCode.Pretty where #if MIN_VERSION_base(4,8,0) import Data.Semigroup ((<>)) #else import Control.Applicative import Data.Monoid #endif import Data.Text (Text) import qualified Data.Text as Text import Text.Pandoc.Filter.EmphasizeCode.Parser import Text.Pandoc.Filter.EmphasizeCode.Position import Text.Pandoc.Filter.EmphasizeCode.Range printLine :: Line -> Text printLine (Line n) = Text.pack (show n) printColumn :: Column -> Text printColumn (Column n) = Text.pack (show n) printPosition :: Position -> Text printPosition p = printLine (line p) <> ":" <> printColumn (column p) printRange :: Range -> Text printRange r = printPosition (rangeStart r) <> "-" <> printPosition (rangeEnd r) printRangesError :: RangesError -> Text printRangesError err = case err of EmptyRanges -> "At least one range is required" Overlap r1 r2 -> printRange r1 <> " overlaps with " <> printRange r2 printParseError :: ParseError -> Text printParseError err = case err of InvalidRange start end -> "Invalid range: " <> printPosition start <> " to " <> printPosition end InvalidRanges rangesErr -> printRangesError rangesErr InvalidRangeFormat t -> "Invalid range: " <> t InvalidPosition line' column' -> "Invalid position: " <> printLine line' <> " to " <> printColumn column' InvalidPositionFormat t -> "Invalid position: " <> t InvalidLineNumber n -> "Invalid line number: " <> n InvalidColumnNumber n -> "Invalid column number: " <> n