Визуализация дерева комментариев с ромом - PullRequest
0 голосов
/ 01 декабря 2018
(def posts (atom [{:id 77
                   :contents "Seventy seven is the nicest number below one hundred"
                   :author "nonforum@nonforum.com"
                   :comments [ 33 44 55]}
                  {:id 33
                   :contents "Thirty three is awesome."
                   :author "monforum@nonforum.com"
                   :comments [34 35]}]))

Скажем, у меня есть атом, который содержит сообщения, как указано выше.Я хотел бы динамически отображать список родительских> дочерних элементов с отступом, который отображает комментарии.

С учетом идентификатора post: id, например 77, как я могу отобразить сообщение и все его комментарии в красивом дереве с отступами?

(filter  #(= 33 (:id %)) @posts)

Вернется ({:id 33, :contents "Thirty three is awesome.", :author "monforum@nonforum.com", :comments [34 35]})

Тогда я смогу получить идентификаторы вложенных комментариев ...

(:comments (first (filter #(= 33 (:id %)) @posts)))
возвращает [34 35]

Итак, теперь, когда я знаю, что идентификаторы комментариев 34 и 35 комментариев являются частью набора комментариев, как я могу вернуться, чтобы получить исчерпывающую коллекцию дочерних комментариев?

Моя наивная идея состоит в том, чтобы сделатьочереди, добавьте элементы в очередь, а затем извлеките их из структуры данных [atom], но должен быть более чистый, функциональный способ получить из этого то, что я хочу.

...