我一直在考虑这个问题,但我无法弄清楚构建我的功能的步骤:
我有一个像 html 数据作为输入的小问题,这个结构由 html 和自定义元素组成,例如:
格式:[标签名称选项和正文]
[:a {} []] ;; simple
[:a {} [[:span {} []]]] ;; nested component
[:other {} []] ;; custom component at tag-name
[:a {} [[:other {} []]]] ;; custom component at body
每次结构有一个自定义元素时,我都应该用 html 表示来渲染(替换)它database
,自定义元素可能出现在tag-name或body中:
(def example
[:div {} [[:a {} []]
[:custom {} []]]])
(def database {
:custom [[:a {} []
[:div {} []]})
(def expected-result
[:div {} [[:a {} []]
[:a {} []]
[:div {} []]]])
问题是:如何创建一个获取此数据的函数,查找组件的标签和主体,如果有自定义元素将其替换为database
元素,替换后再次查看,如果有新组件执行此操作又迈出一步……
我已经有一个函数(custom-component?),它接受一个标签名称并返回一个布尔值,如果是一个自定义元素:
(custom-component? :a) ;; false
(custom-component? :test) ;; true
感谢您的帮助,我真的坚持这一点。