秒差距 Haskell 列表
我正在使用 Text.ParserCombinators .Parsec
和 < code>Text.XHtml 解析输入并获取 HTML 输出。
如果我的输入是:
* First item, First level ** First item, Second level ** Second item, Second level * Second item, First level
我的输出应该是:
我写了这个,但显然不能递归地工作
list = do{ s <- many1 item;return (olist << s) }
item = do{
(count 1 (char '*'))
;s <- manyTill anyChar newline
;return ( li << s)
}
有什么想法吗? 递归可以超过两级。
谢谢!
I'm using Text.ParserCombinators.Parsec
and Text.XHtml
to parse an input and get a HTML output.
If my input is:
* First item, First level ** First item, Second level ** Second item, Second level * Second item, First level
My output should be:
<ul><li>First item, First level <ul><li>First item, Second level </li><li>Second item, Second level </li></ul></li><li>Second item, First level</li></ul>
I wrote this, but obviously does not work recursively
list = do{ s <- many1 item;return (olist << s) }
item = do{
(count 1 (char '*'))
;s <- manyTill anyChar newline
;return ( li << s)
}
Any ideas?
The recursion can be more than two levels.
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
现在
解析 (list 1) "foo" "* a\n** a 1\n** a 2\n* b\n** b 1\n** b 2\n"
将返回您所要求的内容。但请注意,嵌套列表本身应该位于 li 内,这样才是有效的 xhtml。
Now
parse (list 1) "foo" "* a\n** a 1\n** a 2\n* b\n** b 1\n** b 2\n"
will return what you asked for.Note though, that the nested lists should themselves be inside a li, for this to be valid xhtml.