我想在Haskell中美化打印一个表格数据结构(列的列表)。
例如...
因此,我首先将单元格进行转置并水平合并,然后垂直合并,但这会导致列不对齐。
在较旧的表格漂亮打印问题中,augustss提到添加一些代码以使列自动适应最宽的条目。
我猜想,具有每列最大长度的"sizedText"函数可以实现这一点,但是该函数似乎不是Haskell Platform Text.PrettyPrint模块的一部分(我认为它在密切相关的Text.Pretty包中)。
实现这种漂亮打印功能的最简单非hacky方法是什么?这是我的项目的一小部分,所以我希望避免编写自己的漂亮打印,并尽可能避免使用模块依赖。
例如...
Table [
StrCol "strings" ["a", "bc", "c"],
IntCol "ints" [1, 30, -2],
DblCol "doubles" [2.0, 4.5, -3.2]]
应该呈现出类似于...
strings ints doubles
"a" 1 2.0
"bc" 30 4.5
"c" -2 -3.2
目前我已经在最新版的Haskell平台中实现了这个功能,它在Text.PrettyPrint中。不幸的是,<+>运算符会使多行文档“对角线”排列。
例如:
(text "a" $+$ text "b") <+> (text "c" $+$ text "d")
呈现为
a
b c
d
而不是
a c
b d
因此,我首先将单元格进行转置并水平合并,然后垂直合并,但这会导致列不对齐。
在较旧的表格漂亮打印问题中,augustss提到添加一些代码以使列自动适应最宽的条目。
我猜想,具有每列最大长度的"sizedText"函数可以实现这一点,但是该函数似乎不是Haskell Platform Text.PrettyPrint模块的一部分(我认为它在密切相关的Text.Pretty包中)。
实现这种漂亮打印功能的最简单非hacky方法是什么?这是我的项目的一小部分,所以我希望避免编写自己的漂亮打印,并尽可能避免使用模块依赖。