如何用 hamlet 打印逗号分隔的列表?

2023-12-29

使用 yesod 附带的 hamlet 模板语言,打印逗号分隔列表的最佳方法是什么?

例如。假设此代码仅打印一个又一个条目,如何在元素之间插入逗号?或者甚至可以在最后一个条目之前添加一个“and”:

The values in the list are
$ forall entry <- list
    #{entry}
and that is it.

一些模板语言,例如模板工具包 http://template-toolkit.org/docs/manual/Directives.html#section_FOREACH提供指令来检测第一次或最后一次迭代。


我认为没有这样的内置东西。幸运的是,在 Hamlet 中使用辅助函数很容易。例如,如果您的项目是纯字符串,您可以使用Data.List.intercalate在它们之间添加逗号。

The values in the list are 
#{intercalate ", " list} 
and that is it.

如果您想做更奇特的事情,您可以编写函数来处理哈姆雷特值。例如,这是一个在列表中的 Hamlet 值之间添加逗号和“and”的函数。

commaify [x] = x
commaify [x, y] = [hamlet|^{x} and ^{y}|]
commaify (x:xs) = [hamlet|^{x}, ^{commaify xs}|]

这使用^{...}将一个 Hamlet 值插入另一个值的语法。现在,我们可以用它来编写一个逗号分隔的下划线单词列表。

The values in the list are 
^{commaify (map underline list)} 
and that is it.

Here, underline只是一个小辅助函数,可以生成比纯文本更有趣的内容。

underline word = [hamlet|<u>#{word}|]

渲染后,会产生以下结果。

The values in the list are <u>foo</u>, <u>bar</u> and <u>baz</u> and that is it.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用 hamlet 打印逗号分隔的列表? 的相关文章

随机推荐

  • 如何在 R 中打印所有十进制值的数据框[重复]

    这个问题在这里已经有答案了 我有一个数据帧 我想检查其值 但是当我打印数据帧时 只打印 2 或 3 位小数 我直接检查了数据框并确认小数位数比打印的小数位数更多 到目前为止我已经尝试过print df digits 10 and optio
  • 我可以停止 NSTextView 的 NSViewRepresentable 布局延迟吗?

    我正在使用一个NSTextView inside NSViewRepresentable在 SwiftUI 应用程序中 The NSViewRepresentable正确调整大小到 NSTextView 的高度 因此文本会流向多行 但在创建
  • 有什么办法把类库函数转换成exe吗?

    有什么方法可以将我的类库程序更改为 exe or a 单击一次 应用 目前它是一个 dll 我可以创建一个点击一次的应用程序 但安装后它无法工作 在项目 gt 应用程序标签的属性中 将输出类型更改为控制台应用程序 无论如何 你需要创建一个s
  • 在 Python 运行之前覆盖默认的 type() 元类

    这里有龙 你已被警告过 我正在考虑创建一个新的库来尝试帮助编写更好的测试套件 为了做到这一点 其中一个功能是验证正在使用的任何对象 不是测试运行程序 和被测系统 http xunitpatterns com SUT html有一个测试替身
  • TCC __TCCAccessRequest_block_invoke

    我在 Crashlytics 中经常遇到此错误 TCC TCCAccessRequest block invoke 2 80 222 TCC CRASHING DUE TO PRIVACY VIOLATION 682 在我的应用程序中 我正
  • Pandas:检查另一列中是否存在子字符串,然后创建具有特定值的新列

    我有这个数据框 Receipt Description Card Member Account Cost 200a apple adam 08203928 2 20022a pear bob 08203228 7 202a orange a
  • 修改 boost::asio::socket::set_option

    我需要设置选项boost asio ip tcp no delay and boost asio socket base linger for a boost asio ip tcp socket连接到远程 TCP 服务器 我用的方法set
  • 设置谷歌翻译不翻译名字

    我使用谷歌翻译来翻译我的整个网站 但我希望谷歌不要翻译一些名字 此链接上的示例 http ulundanu gusdecool com facilities restaurants http ulundanu gusdecool com f
  • 为什么 Cobra 不读取我的配置文件?

    Cobra 和 Viper 中的文档让我感到困惑 我做到了cobra init fooproject然后在我做的项目目录中cobra add bar 我有一个PersistentFlag那个被命名为foo这是来自的 init 函数root命
  • 找不到类“App\Http\Controllers\Auth\Registered”

    我在互联网上搜索了有关此问题的信息 并按照说明进行操作 我看到的每个网站 但我遇到了此错误 Class App Http Controllers Auth Registered not found 的问题 我的控制器中是否缺少代码 我该如何
  • 为什么在 FireFox 中单击按钮时文件打开对话框会打开两次

    我有一个file
  • CoreAnalytics::Client / FrameworkConfiguration::init 内神秘崩溃

    我遇到了奇怪的崩溃 事实证明很难调试 我可以在启动应用程序后立即随意触发它 只需按下并释放 Command 键几次即可 不需要与我的应用程序进行其他交互 不用说 当命令键更改状态时 我的应用程序不会执行任何操作 实际上 其他按键也会引发崩溃
  • Quartz.NET Scheduler.Interrupt(jobKey) 正在中断所有活动作业

    该方法是否应该只中断 jobKey 定义的作业 我已经运行了一些测试 它似乎中断了当前正在运行的所有活动作业 我正在使用 Restful Web api 连接到远程调度程序以创建 中断 删除作业 API服务代码 public void De
  • 保护弹性搜索

    我对 Elasticsearch 完全陌生 但我非常喜欢它 我唯一找不到也无法完成的事情是确保生产系统的 Elasticsearch 安全 我在elasticsearch前面读到了很多关于使用nginx作为代理的内容 但我从未使用过ngin
  • 如何使用 Pagecontainer Widget 将对象发送到另一个不同的页面?

    假设我的项目中或多或少有这些文件 A页 html PageA js 页面 html PageB js 我想将页面从 PageS html 更改为 Page html 然后 我用了页面容器小部件 https api jquerymobile
  • 在 R 中绘制预测的自定义轴标签

    我正在尝试在预测上添加一些合理的标签 这是我的代码 library forecast t lt ts c 4410 0 6435 0 4939 0 6487 0 25521 0 18764 0 12223 0 18590 0 36898 0
  • C# 函数返回两个值[重复]

    这个问题在这里已经有答案了 我想要一个函数 在其中输入一个数组 因此我需要另一个数组和一个整数值 这可能吗 Example private int FunctionName int InputArray some function made
  • 如何在单击时清除 EditText?

    在Android中我怎样才能制作一个EditText单击时清除 例如 如果我有一个EditText中的一些字符 例如 Enter Name 当用户单击它时 这些字符就会消失 我不确定你是否在想这个 但试试这个 XML android hin
  • Azure Function App 不由事件中心触发

    大家好 我编写了 Python 函数来处理传入 EventHub 的 JSON 事件 这些事件是由 Debezium 生成的 这部分工作正常 从 Visual Studio Code 本地执行时 我的 python 代码也运行良好 当我部署
  • 如何用 hamlet 打印逗号分隔的列表?

    使用 yesod 附带的 hamlet 模板语言 打印逗号分隔列表的最佳方法是什么 例如 假设此代码仅打印一个又一个条目 如何在元素之间插入逗号 或者甚至可以在最后一个条目之前添加一个 and The values in the list