【问题标题】:Stick with 2 layouts only when pretty printing只有在漂亮的打印时才坚持使用 2 种布局
【发布时间】:2015-02-17 18:18:41
【问题描述】:

我正在漂亮地打印一个 C++ 方法声明,并且我希望参数列表以紧凑的形式呈现(如果它符合该行):

void method(MyLongClassName& instance, const MyClass& c);

如果不是,则在列中格式化:

void method(      MyLongClassName& instance,
            const MyClass&         c,
                  int              counter);

我想从考虑中排除的所有其他布局。 wl-pprintpretty 似乎都不简单,如果不是破解源代码的话。

有什么想法吗?

【问题讨论】:

  • 你是怎么做到的?您是否正在从文件中读取源代码并尝试以您的格式打印它?还是您只是尝试格式化的硬编码字符串?
  • 检查您可能输出的长度,如果它适合该行,则打印它,否则,为自己创建一个板(二维序列或其他),填充它的每个单元格(column0 可能是返回类型, column1 name + (, column2 const, etc.),找到每列的最大宽度,根据列的最大宽度在需要的地方迭代每行打印空白,完成。
  • @JustinWood:对于任何正确的方法定义,它应该足够通用,所以没有硬编码
  • @gxtaillon:我自己很不情愿这样做,因为这正是我们需要漂亮打印库的目的。 :) 另一个缺点是要检查输出的长度,我需要渲染前面的方法声明,所以基本上将所有内容渲染两次。
  • @d8d0d65b3f7cf42:这就是我想要实现的全部想法:如果我更改某些内容,则会自动为我重新格式化代码 :) 对于表格美化器,您可能需要查看 Text.PrettyPrint。对于我来说,盒子 (hackage.haskell.org/package/boxes-0.1.1/docs/…) 有一些缺点

标签: haskell pretty-print


【解决方案1】:

如何选择适合单行的布局或者如果没有,使用替代品的更一般问题的解决方案可以在这里找到:Optional spaces and multiple alternatives in wl-pprint-extras

【讨论】:

    猜你喜欢
    • 2011-04-05
    • 1970-01-01
    • 2011-08-28
    • 2021-06-22
    • 1970-01-01
    相关资源
    最近更新 更多