module FP.Pretty.Examples where

import FP.Prelude
import FP.Pretty.Color
import FP.Pretty.Pretty
import FP.Pretty.Instances ()

-- Tests

testPrettyFormats  Doc
testPrettyFormats = ppVertical
  [ ppPun "punctuation"
  , ppKeyPun "keyword punctuation"
  , ppKey "keyword"
  , ppCon "constructor"
  , ppOp "operator"
  , ppBdr "binder"
  , ppLit "literal"
  , ppHl "highlighted"
  , ppHeader "header"
  , ppErr "error"
  ]

testPrettyNesting  Doc
testPrettyNesting = ppVertical
  [ pretty $
      [ dict [ (111, set [10000,11111,22222,33333,44444,55555,66666,77777])
             , (222, set [10000,11111,22222,33333,44444,55555,66666,77777,88888])
             , (333, set [10000,11111,22222,33333,44444,55555,66666,77777,88888,99999])
             ]
      ]
  ]

testPrettyUndertags  Doc
testPrettyUndertags = ppVertical
  [ ppText "not undertaggedd"
  , ppUT '~' green $ ppText "undertagged green"
  , ppUT '^' blue $ ppVertical
      [ ppText "multiline"
      , ppText "undertagged"
      , ppFG darkPink $ ppText "with color inside"
      ]
  ]

testPrettyLineNumbers  Doc
testPrettyLineNumbers = ppVertical
  [ ppLineNumbers $ ppText "show lines"
  , ppText "don't show lines"
  , ppLineNumbers $ ppVertical
      [ ppText "multiline"
      , ppText "show lines"
      ]
  ]

testPrettyBlinders  Doc
testPrettyBlinders = 
  let lines  [Doc]
      lines = list $ map (\ (i,p)  ppHorizontal [p,ppNoFormat $ pretty i]) $ list $ withIndex $ stream $ replicate (𝕟 30) (ppText "line number")
  in ppLineNumbers $ ppBlinders (𝕟 10) (𝕟 20) $ ppVertical $ lines