summaryrefslogtreecommitdiffstats
path: root/app/Pretty.hs
diff options
context:
space:
mode:
Diffstat (limited to 'app/Pretty.hs')
-rw-r--r--app/Pretty.hs85
1 files changed, 44 insertions, 41 deletions
diff --git a/app/Pretty.hs b/app/Pretty.hs
index 8101fb7..b55cf8a 100644
--- a/app/Pretty.hs
+++ b/app/Pretty.hs
@@ -16,8 +16,10 @@ module Pretty
where
import Control.DeepSeq
+import Data.List.Split
import GHC.Generics (Generic)
import Pretty.Color
+import Text.Printf
data Doc
= Col [Doc]
@@ -57,54 +59,55 @@ diagram :: Int -> a -> Diagram a
diagram = Diagram
instance Pretty (Diagram [Float]) where
- pretty (Diagram ((2 *) -> n) (take n -> xs)) = Col (map chart (discretize xs'))
+ pretty (Diagram n (take n -> xs)) =
+ Col (map (\c -> colorize c (Lit Nothing (plot c))) (mapFirst tail (chunksOf 2 (map discretize (0 : xs')))))
where
xs' = replicate (n - length xs) 0 ++ xs
- chart :: (Int, Int) -> Doc
- chart n = colorize n (pretty (chart' n))
-
- chart' (0, 0) = '⠀'
- chart' (0, 1) = '⢀'
- chart' (0, 2) = '⢠'
- chart' (0, 3) = '⢰'
- chart' (0, 4) = '⢸'
- chart' (1, 0) = '⡀'
- chart' (1, 1) = '⣀'
- chart' (1, 2) = '⣠'
- chart' (1, 3) = '⣰'
- chart' (1, 4) = '⣸'
- chart' (2, 0) = '⡄'
- chart' (2, 1) = '⣄'
- chart' (2, 2) = '⣤'
- chart' (2, 3) = '⣴'
- chart' (2, 4) = '⣼'
- chart' (3, 0) = '⡆'
- chart' (3, 1) = '⣆'
- chart' (3, 2) = '⣦'
- chart' (3, 3) = '⣶'
- chart' (3, 4) = '⣾'
- chart' (4, 0) = '⡇'
- chart' (4, 1) = '⣇'
- chart' (4, 2) = '⣧'
- chart' (4, 3) = '⣷'
- chart' (4, 4) = '⣿'
- chart' x = error (show x)
-
- colorize (n, m) = colorize' (max n m)
-
- colorize' 0 = colorDull Green
+ mapFirst f (x : xs) = f x : xs
+
+ plot [n, m] = chart (max 1 n, max 1 m)
+ plot [m] = chart (0, max 1 m)
+
+ colorize [n, m] = colorize' (max n m)
+ colorize [m] = colorize' m
+
+ colorize' 0 = color Black
colorize' 1 = color Green
colorize' 2 = colorDull Yellow
colorize' 3 = color Yellow
colorize' 4 = color Red
- colorize' x = error (show x)
-
- discretize :: [Float] -> [(Int, Int)]
- discretize [] = []
- discretize (_ : []) = []
- discretize (x1 : x2 : xs) =
- (round (x1 * 4), round (x2 * 4)) : discretize xs
+ colorize' x = error (printf "Pretty.pretty.colorize': %d" x)
+
+ chart (0, 0) = " "
+ chart (0, 1) = "⢀"
+ chart (0, 2) = "⢠"
+ chart (0, 3) = "⢰"
+ chart (0, 4) = "⢸"
+ chart (1, 0) = "⡀"
+ chart (1, 1) = "⣀"
+ chart (1, 2) = "⣠"
+ chart (1, 3) = "⣰"
+ chart (1, 4) = "⣸"
+ chart (2, 0) = "⡄"
+ chart (2, 1) = "⣄"
+ chart (2, 2) = "⣤"
+ chart (2, 3) = "⣴"
+ chart (2, 4) = "⣼"
+ chart (3, 0) = "⡆"
+ chart (3, 1) = "⣆"
+ chart (3, 2) = "⣦"
+ chart (3, 3) = "⣶"
+ chart (3, 4) = "⣾"
+ chart (4, 0) = "⡇"
+ chart (4, 1) = "⣇"
+ chart (4, 2) = "⣧"
+ chart (4, 3) = "⣷"
+ chart (4, 4) = "⣿"
+ chart x = error (printf "Pretty.pretty.chart: %x" (show x))
+
+ discretize :: Float -> Int
+ discretize x = round (x * 4)
color :: Color -> Doc -> Doc
color c = color' (Vivid, c)