を使用して、私はこの問題について考えてきたが、私は私の機能を構築するための手順を把握することはできません。再帰のClojure
私は、入力として、HTMLデータのようなしゃっくりを持って、この構造があります
フォーマット:[タグ名オプション& 体]
[:a {} []] ;; simple
[:a {} [[:span {} []]]] ;; nested component
[:other {} []] ;; custom component at tag-name
[:a {} [[:other {} []]]] ;; custom component at body
たび番目HTMLとカスタム要素、例えば作曲
(def example
[:div {} [[:a {} []]
[:custom {} []]]])
(def database {
:custom [[:a {} []
[:div {} []]})
(def expected-result
[:div {} [[:a {} []]
[:a {} []]
[:div {} []]]])
問題:電子構造は、私は、カスタム要素がタグ名または体で存在することができるdatabase
であるHTML表現でそれをレンダリングする(交換する)必要があり、カスタム要素を持っていますこのデータを受け取る関数を作成して、コンポーネントのタグとボディを探し出す方法、カスタム要素がある場合はdatabase
要素で置き換えます。置き換えた後、新しいコンポーネントがあればこの手順を実行しますもう一度...
私はすでに機能を持っています(カスタムコンポーネントent?タグ名を取り、カスタム要素である場合はブール値を返します):任意の助け
が(custom-component? :a) ;; false
(custom-component? :test) ;; true
おかげで、私は本当にこの上で立ち往生しています。
[試薬プロジェクト](https://reagent-project.github.io/)をチェックしましたか? – jmargolisvt
@jmargolisvt私は出力がちょうどhtmlを必要とし、最後はすべて静的なhtmlになります(これは目的です) –