2016-06-04 6 views
0

я это в проекте Luminus/Compojure:Как я могу предварительно обработать данные перед их отображением в Luminus/Compojure?

(defn article-show-single [id] 
    (let [a (db/get-single-article {:id id})] 
    (layout/render "show.html" 
    {:article a})) 

Теперь я хочу предобработки :body статьи. Я могу это следующим образом:

(str/replace (:body a) #"regex123" 
      (fn [[_ var1 var2]] 
       (str "new str 123"))) 
; => new str 123 

Но как я могу объединить эти 2, то есть, я хочу, чтобы изменить :body из статьи и еще вернуть статью. Как я могу это сделать?

ответ

1

В качестве первого шага я бы извлечь код предварительной обработки в виде функции, чтобы сделать код более читаемым:

(defn preprocess [s] 
    (str/replace s 
       #"regex123" 
       (fn [[_ var1 var2]] 
       (str "new str 123")))) 

Тогда я хотел бы использовать update функцию, чтобы обновить значение ключа компонентов карты, применяя предоставленную функцию к текущему значению и использовать это значение в новой версии карты:

(update article :body preprocess) 
+0

'Не удается разрешить символ: Preprocess в этом context' –

+0

и когда я перехожу функцию перед статьи-шоу-сингл, я получаю' Не удалось разрешить символ: a т. е. в этом контексте «Имя переменной - это« статья », она существует. –

+0

Вы определяли функцию 'preprocess' из моего ответа, прежде чем использовать ее в' update'? –

 Смежные вопросы

  • Нет связанных вопросов^_^