【发布时间】:2015-02-17 18:18:41
【问题描述】:
我正在漂亮地打印一个 C++ 方法声明,并且我希望参数列表以紧凑的形式呈现(如果它符合该行):
void method(MyLongClassName& instance, const MyClass& c);
如果不是,则在列中格式化:
void method( MyLongClassName& instance,
const MyClass& c,
int counter);
我想从考虑中排除的所有其他布局。 wl-pprint 和 pretty 似乎都不简单,如果不是破解源代码的话。
有什么想法吗?
【问题讨论】:
-
你是怎么做到的?您是否正在从文件中读取源代码并尝试以您的格式打印它?还是您只是尝试格式化的硬编码字符串?
-
检查您可能输出的长度,如果它适合该行,则打印它,否则,为自己创建一个板(二维序列或其他),填充它的每个单元格(column0 可能是返回类型, column1 name + (, column2
const, etc.),找到每列的最大宽度,根据列的最大宽度在需要的地方迭代每行打印空白,完成。 -
@JustinWood:对于任何正确的方法定义,它应该足够通用,所以没有硬编码
-
@gxtaillon:我自己很不情愿这样做,因为这正是我们需要漂亮打印库的目的。 :) 另一个缺点是要检查输出的长度,我需要渲染前面的方法声明,所以基本上将所有内容渲染两次。
-
@d8d0d65b3f7cf42:这就是我想要实现的全部想法:如果我更改某些内容,则会自动为我重新格式化代码 :) 对于表格美化器,您可能需要查看 Text.PrettyPrint。对于我来说,盒子 (hackage.haskell.org/package/boxes-0.1.1/docs/…) 有一些缺点
标签: haskell pretty-print