Ĥ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(c) Dennis Gosnell, 2016BSD-style (see LICENSE file)cdep.illabout@gmail.com experimentalPOSIXNone-05:DIORTAn  token together with a . Basically, each  keeps track of its own .CThese are the output tokens that we will be printing to the screen.This represents the } character.This represents the ] character.This represents the ) character.This represents the , character. This represents an indentation. This represents the \n character. This represents the { character. This represents the [ character. This represents the ( character.[This represents some collection of characters that don't fit into any of the other tokens.1This represents a string literal. For instance, "foobar".3Datatype representing how much something is nested.For example, a  of 0 would mean an 8 token is at the very highest level, not in any braces.A  of 1 would mean that an ! token is in one single pair of { and }, or [ and ], or @ and @@.A  of 2 would mean that an ' token is two levels of brackets, etc. (and W) should generally only be used in tests and debugging. There is no way to represent   and .     (c) Dennis Gosnell, 2016BSD-style (see LICENSE file)cdep.illabout@gmail.com experimentalPOSIXNone 05:OT %&'()*+,- %*&'()+,- +,-%&'()*%&'()*+,-(c) Dennis Gosnell, 2016BSD-style (see LICENSE file)cdep.illabout@gmail.com experimentalPOSIXNone 05:OT@,Parse brackets around a list of expressions.(test bracketsExpr "[hello\"what\", foo]"gRight (Brackets (CommaSeparated {unCommaSeparated = [[Other "hello",StringLit "what"],[Other "foo"]]}))test bracketsExpr "[[] ]"vRight (Brackets (CommaSeparated {unCommaSeparated = [[Brackets (CommaSeparated {unCommaSeparated = []}),Other " "]]}))EParse a string literal."test stringLiteralExpr "\"hello\""Right (StringLit "hello"),isLeft $ test stringLiteralExpr " \"hello\""TrueG<Parse anything that doesn't get parsed by the parsers above.test anyOtherText " Foo "Right (Other " Foo ")Parse empty strings.test anyOtherText " "Right (Other " ")Stop parsing if we hit [, ], (, ), {, }, ", or ,.test anyOtherText "hello["Right (Other "hello")Don't parse the empty string.isLeft $ test anyOtherText ""TrueisLeft $ test anyOtherText ","True6789:;<=>?@ABCDEFGHIJ6789:;<=>?@ABCDEFGHIJ6789:;<=>?@ABCDEFGHIJ6789:;<=>?@ABCDEFGHIJ(c) Dennis Gosnell, 2016BSD-style (see LICENSE file)cdep.illabout@gmail.com experimentalPOSIXNone05:DIORTPNewtype around 4 to represent a line number. After a newline, the P will increase by 1.SSmart-constructor for K.X%Print a surrounding expression (like [] or {} or ()).If the +> expressions are empty, just print the start and end markers.6testInit $ putSurroundExpr "[" "]" (CommaSeparated [])/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.EtestInit $ putSurroundExpr "{" "}" (CommaSeparated [[Other "hello"]])@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.1 + 1 -- TODO: Example here.2\If there are multiple expressions, then first go to a newline. Print out on multiple lines.1 + 1 -- TODO: Example here.2eMA function that performs optimizations and modifications to a list of input %s. An sample of an optimization is f' which removes empty inner lists in a + value.i(Remove empty lists from a list of lists.$removeEmptyList [[1,2,3], [], [4,5]][[1,2,3],[4,5]]removeEmptyList [[]][]removeEmptyList [[1]][[1]]+removeEmptyList [[1,2], [10,20], [100,200]][[1,2],[10,20],[100,200]]KLMNOPQRSTUVWX!comma separated inner expression.YZ[\]^_`abcdefghiKLMNOPQRSTUVWXYZ[\]^_`abcdefghiPQRKLMNOSTUVWXYZ[\]^_`abcdefghiKLMNOPQRSTUVWXYZ[\]^_`abcdefghi(c) Dennis Gosnell, 2016BSD-style (see LICENSE file)cdep.illabout@gmail.com experimentalPOSIXNone 05:OTu>These options are for colorizing the output of functions like pPrint.For example, if you set w to something like , then the quote character ("() will be output as bright blue in bold.=If you don't want to use a color for one of the options, use .w#Color to use for quote characters (") around strings.xColor to use for strings.y(currently not used)z(currently not used){ A list of  colors to use for rainbow parenthesis output. Use '[]' if you don't want rainbow parenthesis. Use just a single item if you want all the rainbow parenthesis to be colored the same.|3Default color options for use on a dark background.w is }. x is ~. y is . z is . { is defaultColorRainboxParensDarkBg.}Default color for w for dark backgrounds. This is .~Default color for x for dark backgrounds. This is .Default color for y! for dark backgrounds. This is .Default color for z! for dark backgrounds. This is .Default colors for { for dark backgrounds.4Default color options for use on a light background.w is . x is . y is . z is . { is  defaultColorRainboxParensLightBg.Default color for w! for light backgrounds. This is .Default color for x! for light backgrounds. This is .Default color for y" for light backgrounds. This is .Default color for z" for light backgrounds. This is .Default colors for { for light backgrounds.Change the intensity to ." the console color back to normal. Empty string.Helper for creating a / for an ANSI escape sequence color based on a  and a .Convert a list of  to a .8uvwxyz{|}~8uvwxyz{|}~8uvwxyz{|}~2uvwxyz{|}~(c) Dennis Gosnell, 2016BSD-style (see LICENSE file)cdep.illabout@gmail.com experimentalPOSIXNone #05:OTLData-type wrapping up all the options available when rendering the list of s.NNumber of spaces to use when indenting. It should probably be either 2 or 4. If this is /, then don't colorize the output. If this is  colorOptions , then use  colorOptions to colorize the output.Default values for 6 when printing to a console with a dark background.  is 4, and  is |.Default values for 7 when printing to a console with a light background.  is 4, and  is .Default values for > when printing using using ANSI escape sequences for color.  is 4, and  is .Given  and a list of  , turn the  into a lazy .Turn a list of  into a &, using the options specified in the .Render a single  as a &, using the options specified in the . Produce a B corresponding to the ANSI escape sequence for the color for the ", based on whether or not  is  or , and the value of w. Produce a s corresponding to the ANSI escape sequence for the color for the characters of a string, based on whether or not  is  or , and the value of x. Produce a s corresponding to the ANSI escape sequence for resetting the console color back to the default. Produces an empty  if  is . Produce a a representing the ANSI escape sequence for the color of the rainbow parenthesis, given an input  and  to use as the input character.If  is 3, then just return the input character. If it is ,, then return the input character colorized.This is simply    .MA function that performs optimizations and modifications to a list of input s. An sample of an optimization is = which just removes a newline if it is the first item in an  list. Remove a   if it is the first item in the  list.DremoveStartingNewLine [Output 3 OutputNewLine, Output 3 OutputComma]X[Output {outputNestLevel = NestLevel {unNestLevel = 3}, outputOutputType = OutputComma}]If there are two subsequent % tokens, combine them into just one .KcompressOthers [Output 0 (OutputOther "foo"), Output 0 (OutputOther "bar")]a[Output {outputNestLevel = NestLevel {unNestLevel = 0}, outputOutputType = OutputOther "foobar"}]In each > token, compress multiple whitespaces to just one whitespace.=shrinkWhitespaceInOthers [Output 0 (OutputOther " hello ")]b[Output {outputNestLevel = NestLevel {unNestLevel = 0}, outputOutputType = OutputOther " hello "}](c) Dennis Gosnell, 2016BSD-style (see LICENSE file)cdep.illabout@gmail.com experimentalPOSIXNone %*&'()+,-6789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghiuvwxyz{|}~(c) Dennis Gosnell, 2016BSD-style (see LICENSE file)cdep.illabout@gmail.com experimentalPOSIXNone 05:OT&Pretty-print any data type that has a  instance.If you've never seen P before, you can think of this function as having the following type signature:  pPrint :: Show a => a -> IO () 3This function is for printing to a dark background. Similar to ?, but just return the resulting pretty-printed data type as a & instead of printing it to the screen.3This function is for printing to a dark background. Similar to , but the first argument is a 1 representing a data type that has already been ed.This will work on any  that is similar to a Haskell data type. The only requirement is that the strings are quoted, and braces, parentheses, and brackets are correctly used to represent indentation. For example, " will correctly pretty-print JSON.3This function is for printing to a dark background. Alias for . Alias for . Alias for . Just like ), but for printing to a light background. Just like ), but for printing to a light background. Just like ), but for printing to a light background. Similar to R, but doesn't print in color. However, data types will still be indented nicely.%pPrintNoColor $ Just ["hello", "bye"]Just [ "hello" , "bye" ]Like , but without color.LIke , but without color. Similar to  but takes , to change how the pretty-printing is done. For example, ? can be used to make the indentation much smaller than normal./This is what the normal indentation looks like:=pPrintOpt defaultOutputOptionsNoColor $ Just ("hello", "bye")Just ( "hello" , "bye" ),This is what smaller indentation looks like:Mlet smallIndent = defaultOutputOptionsNoColor {outputOptionsIndentAmount = 1}-pPrintOpt smallIndent $ Just ("hello", "bye")Just ( "hello" , "bye" )Like  but takes , to change how the pretty-printing is done.Like  but takes , to change how the pretty-printing is done.||       !"#$%&'()*+,-./01223456789:;<=>?@ABCDEFGHIJKLMNOPQQRSTUUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyyz{|}~,pretty-simple-2.0.0.0-Gnp54g4HRCNAWyofrs1zl2"Text.Pretty.Simple.Internal.Output Text.Pretty.Simple.Internal.Expr&Text.Pretty.Simple.Internal.ExprParser(Text.Pretty.Simple.Internal.ExprToOutput!Text.Pretty.Simple.Internal.Color)Text.Pretty.Simple.Internal.OutputPrinterText.Pretty.SimpleText.Pretty.Simple.InternalOutputoutputNestLeveloutputOutputType OutputTypeOutputCloseBraceOutputCloseBracketOutputCloseParen OutputComma OutputIndent OutputNewLineOutputOpenBraceOutputOpenBracketOutputOpenParen OutputOtherOutputStringLit NestLevel unNestLevel$fIsStringOutputType$fDataNestLevel $fEqNestLevel$fGenericNestLevel$fNumNestLevel$fOrdNestLevel$fReadNestLevel$fShowNestLevel$fDataOutputType$fEqOutputType$fGenericOutputType$fReadOutputType$fShowOutputType $fDataOutput $fEqOutput$fGenericOutput $fReadOutput $fShowOutputExprBracketsBracesParens StringLitOtherCommaSeparatedunCommaSeparated$fDataCommaSeparated$fEqCommaSeparated$fGenericCommaSeparated$fShowCommaSeparated $fDataExpr$fEqExpr $fGenericExpr $fShowExprParserlexer stringLiteralbracketsbracesparenscommaSeplexemeexprexpr' bracketsExpr bracesExpr parensExprrecursiveSurroundingExpr recursiveExprstringLiteralExprnonRecursiveExpr anyOtherText testString1 testString2expressionParse PrinterStatecurrLine nestLevel outputListLineNum unLineNum printerStateaddToOutputList addOutput addOutputsinitPrinterStateputSurroundExpr putCommaSepputComma howManyLinesdoIndentnewLinenewLineAndDoIndentaddToNestLeveladdToCurrentLine putExpressionrunPrinterStaterunInitPrinterStateexpressionsToOutputsmodificationsExprList&removeEmptyInnerCommaSeparatedExprList"removeEmptyInnerCommaSeparatedExprremoveEmptyInnerCommaSeparatedremoveEmptyList $fDataLineNum $fEqLineNum$fGenericLineNum $fNumLineNum $fOrdLineNum $fReadLineNum $fShowLineNum$fEqPrinterState$fDataPrinterState$fGenericPrinterState$fShowPrinterState ColorOptions colorQuote colorString colorErrorcolorNumcolorRainbowParensdefaultColorOptionsDarkBgdefaultColorQuoteDarkBgdefaultColorStringDarkBgdefaultColorErrorDarkBgdefaultColorNumDarkBgdefaultColorRainbowParensDarkBgdefaultColorOptionsLightBgdefaultColorQuoteLightBgdefaultColorStringLightBgdefaultColorErrorLightBgdefaultColorNumLightBg defaultColorRainbowParensLightBgcolorVividBlackBoldcolorVividBlueBoldcolorVividCyanBoldcolorVividGreenBoldcolorVividMagentaBoldcolorVividRedBoldcolorVividWhiteBoldcolorVividYellowBoldcolorDullBlackBoldcolorDullBlueBoldcolorDullCyanBoldcolorDullGreenBoldcolorDullMagentaBoldcolorDullRedBoldcolorDullWhiteBoldcolorDullYellowBoldcolorVividBlackcolorVividBluecolorVividCyancolorVividGreencolorVividMagenta colorVividRedcolorVividWhitecolorVividYellowcolorDullBlack colorDullBlue colorDullCyancolorDullGreencolorDullMagenta colorDullRedcolorDullWhitecolorDullYellow colorBold colorReset colorNull colorHelpersetSGRCodeBuilder$fEqColorOptions$fGenericColorOptions$fShowColorOptions OutputOptionsoutputOptionsIndentAmountoutputOptionsColorOptionsdefaultOutputOptionsDarkBgdefaultOutputOptionsLightBgdefaultOutputOptionsNoColorrender renderOutputs renderOutput useColorQuoteuseColorString useColorError useColorNum useColorResetrenderRaibowParenForuseColorRainbowParens sequenceFoldmodificationsOutputListremoveStartingNewLinecompressOthersshrinkWhitespaceInOthersshrinkWhitespaceInOthershrinkWhitespace$fEqOutputOptions$fGenericOutputOptions$fShowOutputOptionspPrintpShowpString pPrintDarkBg pShowDarkBg pStringDarkBg pPrintLightBg pShowLightBgpStringLightBg pPrintNoColor pShowNoColorpStringNoColor pPrintOptpShowOpt pStringOptbase Data.StringIsString fromStringghc-prim GHC.TypesInt#text-1.2.2.1-9Yh8rJoh8fO2JMLWffT3QsData.Text.Internal.BuilderBuilder,ansi-terminal-0.6.2.3-AKTYR0nthhUCHW4HMZvJFXSystem.Console.ANSI.Common BoldIntensityResetColorIntensityColorSGRGHC.BaseNothingJustData.Text.Internal.LazyTextfmap Data.Foldablefold.Data.TraversablesequenceGHC.ShowShowControl.Monad.IO.ClassMonadIOStringshow