【发布时间】:2016-12-16 20:01:35
【问题描述】:
我在 CLJS 中解析一些 Hiccup,目标是获取 :h2 和 :h3 元素并将它们转换为嵌套的 :ul 和 :li 的树。
我的起点是一个平面向量,例如:
[[:h2 {} "Foo"] [:h2 {} "Bar"] [:h3 {} "Child1"] [:h2 {} "Baz"]]
如果我只是映射这些并将(first el) 替换为[:li],我有一个平面列表。但我想得到类似的东西:
[[:li "Foo"] [:li "Bar"] [:ul [:li "Child1"]] [:li "Baz"]]
如果我打电话给(partition-by #(= :h2 (first %)) my-vec),我会得到一些几乎有用的东西:
(([:h2 {} "Foo"] [:h2 {} "Bar"]) ([:h3 {} "Child1"]) ([:h2 {} "Baz"]))
当谓词 #(= :h2 (first %)) 发生变化时,就会发生分区(这是文档所说的)。
如何获得我正在寻找的行为?
【问题讨论】:
标签: clojure functional-programming enumeration clojurescript seq