pretty-simple 1.0.0.0 → 1.0.0.1
raw patch · 5 files changed
+24/−20 lines, 5 filesdep +containersPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: containers
API changes (from Hackage documentation)
- Text.Pretty.Simple.Internal.ExprToOutput: PrinterState :: LineNum -> NestLevel -> [Output] -> PrinterState
+ Text.Pretty.Simple.Internal.ExprToOutput: PrinterState :: {-# UNPACK #-} !LineNum -> {-# UNPACK #-} !NestLevel -> !(Seq Output) -> PrinterState
- Text.Pretty.Simple.Internal.ExprToOutput: [_currLine] :: PrinterState -> LineNum
+ Text.Pretty.Simple.Internal.ExprToOutput: [_currLine] :: PrinterState -> {-# UNPACK #-} !LineNum
- Text.Pretty.Simple.Internal.ExprToOutput: [_nestLevel] :: PrinterState -> NestLevel
+ Text.Pretty.Simple.Internal.ExprToOutput: [_nestLevel] :: PrinterState -> {-# UNPACK #-} !NestLevel
- Text.Pretty.Simple.Internal.ExprToOutput: [_outputList] :: PrinterState -> [Output]
+ Text.Pretty.Simple.Internal.ExprToOutput: [_outputList] :: PrinterState -> !(Seq Output)
- Text.Pretty.Simple.Internal.ExprToOutput: addOutputs :: MonadState PrinterState m => [OutputType] -> m ()
+ Text.Pretty.Simple.Internal.ExprToOutput: addOutputs :: MonadState PrinterState m => Seq OutputType -> m ()
- Text.Pretty.Simple.Internal.ExprToOutput: expressionsToOutputs :: [Expr] -> [Output]
+ Text.Pretty.Simple.Internal.ExprToOutput: expressionsToOutputs :: [Expr] -> Seq Output
- Text.Pretty.Simple.Internal.ExprToOutput: outputList :: Lens' PrinterState [Output]
+ Text.Pretty.Simple.Internal.ExprToOutput: outputList :: Lens' PrinterState (Seq Output)
- Text.Pretty.Simple.Internal.ExprToOutput: printerState :: LineNum -> NestLevel -> [Output] -> PrinterState
+ Text.Pretty.Simple.Internal.ExprToOutput: printerState :: LineNum -> NestLevel -> Seq Output -> PrinterState
- Text.Pretty.Simple.Internal.Output: Output :: NestLevel -> OutputType -> Output
+ Text.Pretty.Simple.Internal.Output: Output :: {-# UNPACK #-} !NestLevel -> !OutputType -> Output
- Text.Pretty.Simple.Internal.Output: [outputNestLevel] :: Output -> NestLevel
+ Text.Pretty.Simple.Internal.Output: [outputNestLevel] :: Output -> {-# UNPACK #-} !NestLevel
- Text.Pretty.Simple.Internal.Output: [outputOutputType] :: Output -> OutputType
+ Text.Pretty.Simple.Internal.Output: [outputOutputType] :: Output -> !OutputType
Files
- example/Example.hs +5/−5
- pretty-simple.cabal +2/−1
- src/Text/Pretty/Simple.hs +2/−1
- src/Text/Pretty/Simple/Internal/ExprToOutput.hs +13/−11
- src/Text/Pretty/Simple/Internal/Output.hs +2/−2
example/Example.hs view
@@ -3,11 +3,11 @@ import Text.Pretty.Simple (pPrint) -import Example.Data (bar)+import Example.Data (baz) main :: IO () main = do- putStrLn "\nThe following normal \"print\" output:\n"- print bar- putStrLn "\ngets turned into this (using \"Text.Pretty.Simple.pPrint\"):\n"- pPrint bar+ -- putStrLn "\nThe following normal \"print\" output:\n"+ -- print bar+ -- putStrLn "\ngets turned into this (using \"Text.Pretty.Simple.pPrint\"):\n"+ pPrint baz
pretty-simple.cabal view
@@ -1,5 +1,5 @@ name: pretty-simple-version: 1.0.0.0+version: 1.0.0.1 synopsis: Simple pretty printer for any datatype with a 'Show' instance. description: Please see README.md homepage: https://github.com/cdepillabout/pretty-simple@@ -28,6 +28,7 @@ , Text.Pretty.Simple.Internal.OutputPrinter build-depends: base >= 4.6 && < 5 , ansi-terminal+ , containers , lens , mono-traversable , mtl
src/Text/Pretty/Simple.hs view
@@ -44,6 +44,7 @@ #endif import Control.Monad.IO.Class (MonadIO, liftIO)+import Data.Foldable (toList) import Data.Text.Lazy (Text, pack) import Data.Text.Lazy.IO as LText @@ -95,7 +96,7 @@ case expressionParse string of Left _ -> pack string Right expressions ->- render outputOptions $ expressionsToOutputs expressions+ render outputOptions . toList $ expressionsToOutputs expressions -- $examples -- Simple Haskell datatype:
src/Text/Pretty/Simple/Internal/ExprToOutput.hs view
@@ -3,6 +3,7 @@ {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE OverloadedLists #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TemplateHaskell #-}@@ -33,7 +34,8 @@ import Data.Data (Data) import Data.Foldable (traverse_) import Data.Monoid ((<>))-import Data.Sequences (intersperse)+import Data.Sequence (Seq)+import Data.Sequences (fromList, intersperse, singleton) import Data.Typeable (Typeable) import GHC.Generics (Generic) @@ -57,14 +59,14 @@ makeLenses ''LineNum data PrinterState = PrinterState- { _currLine :: LineNum- , _nestLevel :: NestLevel- , _outputList :: [Output]+ { _currLine :: {-# UNPACK #-} !LineNum+ , _nestLevel :: {-# UNPACK #-} !NestLevel+ , _outputList :: !(Seq Output) } deriving (Eq, Data, Generic, Show, Typeable) makeLenses ''PrinterState -- | Smart-constructor for 'PrinterState'.-printerState :: LineNum -> NestLevel -> [Output] -> PrinterState+printerState :: LineNum -> NestLevel -> Seq Output -> PrinterState printerState currLineNum nestNum output = PrinterState { _currLine = currLineNum@@ -78,11 +80,11 @@ addOutput outputType = do nest <- use nestLevel let output = Output nest outputType- outputList <>= [output]+ outputList <>= singleton output addOutputs :: MonadState PrinterState m- => [OutputType] -> m ()+ => Seq OutputType -> m () addOutputs outputTypes = do nest <- use nestLevel let outputs = Output nest <$> outputTypes@@ -97,13 +99,13 @@ -- markers. -- -- >>> testInit $ putSurroundExpr "[" "]" (CommaSeparated [])--- PrinterState {_currLine = LineNum {unLineNum = 0}, _nestLevel = NestLevel {_unNestLevel = -1}, _outputList = [Output {outputNestLevel = NestLevel {_unNestLevel = 0}, outputOutputType = OutputOpenBracket},Output {outputNestLevel = NestLevel {_unNestLevel = 0}, outputOutputType = OutputCloseBracket}]}+-- PrinterState {_currLine = LineNum {unLineNum = 0}, _nestLevel = NestLevel {_unNestLevel = -1}, _outputList = fromList [Output {outputNestLevel = NestLevel {_unNestLevel = 0}, outputOutputType = OutputOpenBracket},Output {outputNestLevel = NestLevel {_unNestLevel = 0}, outputOutputType = OutputCloseBracket}]} -- -- If there is only one expression, and it will print out on one line, then -- just print everything all on one line, with spaces around the expressions. -- -- >>> testInit $ putSurroundExpr "{" "}" (CommaSeparated [[Other "hello"]])--- PrinterState {_currLine = LineNum {unLineNum = 0}, _nestLevel = NestLevel {_unNestLevel = -1}, _outputList = [Output {outputNestLevel = NestLevel {_unNestLevel = 0}, outputOutputType = OutputOpenBrace},Output {outputNestLevel = NestLevel {_unNestLevel = 0}, outputOutputType = OutputOther " "},Output {outputNestLevel = NestLevel {_unNestLevel = 0}, outputOutputType = OutputOther "hello"},Output {outputNestLevel = NestLevel {_unNestLevel = 0}, outputOutputType = OutputOther " "},Output {outputNestLevel = NestLevel {_unNestLevel = 0}, outputOutputType = OutputCloseBrace}]}+-- PrinterState {_currLine = LineNum {unLineNum = 0}, _nestLevel = NestLevel {_unNestLevel = -1}, _outputList = fromList [Output {outputNestLevel = NestLevel {_unNestLevel = 0}, outputOutputType = OutputOpenBrace},Output {outputNestLevel = NestLevel {_unNestLevel = 0}, outputOutputType = OutputOther " "},Output {outputNestLevel = NestLevel {_unNestLevel = 0}, outputOutputType = OutputOther "hello"},Output {outputNestLevel = NestLevel {_unNestLevel = 0}, outputOutputType = OutputOther " "},Output {outputNestLevel = NestLevel {_unNestLevel = 0}, outputOutputType = OutputCloseBrace}]} -- -- If there is only one expression, but it will print out on multiple lines, -- then go to newline and print out on multiple lines.@@ -173,7 +175,7 @@ doIndent :: MonadState PrinterState m => m () doIndent = do nest <- use $ nestLevel . unNestLevel- addOutputs $ replicate nest OutputIndent+ addOutputs . fromList $ replicate nest OutputIndent newLine :: MonadState PrinterState m@@ -210,7 +212,7 @@ runInitPrinterState :: [Expr] -> PrinterState runInitPrinterState = runPrinterState initPrinterState -expressionsToOutputs :: [Expr] -> [Output]+expressionsToOutputs :: [Expr] -> Seq Output expressionsToOutputs = view outputList . runInitPrinterState . modificationsExprList
src/Text/Pretty/Simple/Internal/Output.hs view
@@ -92,6 +92,6 @@ -- | An 'OutputType' token together with a 'NestLevel'. Basically, each -- 'OutputType' keeps track of its own 'NestLevel'. data Output = Output- { outputNestLevel :: NestLevel- , outputOutputType :: OutputType+ { outputNestLevel :: {-# UNPACK #-} !NestLevel+ , outputOutputType :: !OutputType } deriving (Data, Eq, Generic, Read, Show, Typeable)