- where
- rec_trees = recsToTrees recs
- header_boxes = createHeaderCols rec_trees
- data_boxes = createDataBoxes rec_trees
- vertical_boxes = fmap (\(a, b) -> B.vsep 0 B.AlignTopLeft $ [a, b]) $ L.zip header_boxes data_boxes
+ where
+ rec_trees = recsToTrees recs
+ header_boxes = createHeaderCols rec_trees
+ data_boxes = createDataBoxes rec_trees
+ vertical_boxes = (\(a, b) -> B.vsep 0 B.AlignTopLeft [a, b]) <$> List.zip header_boxes data_boxes
+
+-- >>> error $ B.render $ B.hcat AlignTopLeft $ createHeaderCols $ recsToTrees ([R00{r00Int = 42, r00String = "foo"}]::[R00])
+-- R00 R00
+-- r00Intr00String
+createHeaderCols :: [Tree String] -> [B.Box]
+createHeaderCols rec_trees =
+ createBoxedHeaders $
+ fillPath $
+ constructPath $
+ trimTree $
+ List.head rec_trees
+
+createBoxedHeaders :: [[String]] -> [B.Box]
+createBoxedHeaders paths = B.vsep 0 B.AlignTopLeft . (fromString <$>) <$> paths
+
+-- >>> error $ B.render $ B.hcat AlignTopLeft $ createDataBoxes $ recsToTrees ([R00{r00Int = 42, r00String = "foo"}]::[R00])
+-- 42foo
+-- >>> error $ B.render $ B.hcat AlignTopLeft $ createDataBoxes $ recsToTrees ([getR01]::[R01])
+-- Jack-Jack100.101021Just 10.101
+createDataBoxes :: CellValueFormatter a => [Tree a] -> [B.Box]
+createDataBoxes rec_trees = vertical_boxes
+ where
+ horizontal_boxes = (fromString <$>) <$> (getLeaves <$> rec_trees)
+ vertical_boxes = B.vsep 0 B.AlignTopLeft <$> List.transpose horizontal_boxes