【发布时间】:2014-02-05 13:44:02
【问题描述】:
鉴于标签已排序,我需要替换模板文件中的一些标签。 例如:
\beqin{document}
text $1
test 3 Dolèren ipsum $2
$6
假设文件被命名为 template.tex 并且替代脚本被称为:
script /path/template.tex a b c<br/>
它应该给我:
\begin{document}
text a
test 3 Dolèren ipsum b
(看到 $6 被省略是因为没有第六个输入,而 c 也是因为没有 $3)
简而言之,我需要一个类型为 myfunc :: FilePath -> [String] -> IO ()
的函数
输出可能在标准输出中。
至于语言,它可能是 python 或 haskell。
是否有任何现有的库可以做到这一点?
我注定要使用秒差吗?或者有什么众所周知的方法可以简单地做到这一点?
请不要告诉我使用 bash,因为我不受平台限制。
标签 $1 $2 也可能是其他东西,例如
【问题讨论】:
-
如果您想要任意标签,您很可能需要编写自己的解析器。 Parsec 不是唯一的选择,因为正则表达式替换在这里可能更有意义。
-
注定要使用 Parsec 并不是一件坏事,但是,是的,正如@bheklilr 所说,正则表达式在两种语言中都很好地存在。
-
Please do not tell me to use bash as I am not platform bound.-- 你能详细说明一下吗? -
对于如此琐碎和正则表达式的事情,使用 parsec 似乎有点矫枉过正,而我理解的语法带有不可预见的错误......只是有些人觉得没什么技术性。我也希望有人已经做到了:)
-
几天前我在 Haskell 中创建了
inserts库。这足以完成您的任务,但它使用不同的语法。 hackage.haskell.org/package/inserts
标签: python templates haskell tags