-
Notifications
You must be signed in to change notification settings - Fork 0
/
processor.clj
43 lines (37 loc) · 1.63 KB
/
processor.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
(ns babel.processor
(:require [clojure.tools.nrepl :as repl]
[clojure.spec.test.alpha :as stest]
[errors.messageobj :as m-obj]
[errors.prettify-exception :as p-exc]
[corefns.corefns :as cf]
[corefns.instrumentfunctionsfortesting]))
;;an atom that record original error response
(def recorder (atom {:msg [] :detail []}))
(defn reset-recorder
"This function reset the recorder atom"
[]
(reset! recorder {:msg [] :detail []}))
(defn update-recorder-msg
"takes an unfixed error message, and put it into the recorder"
[inp-message]
(swap! recorder update-in [:msg] conj inp-message))
;(swap! recorder assoc :msg inp-message))
(defn update-recorder-detail
"takes error message details, and put them into the recorder"
[inp-message]
(swap! recorder update-in [:detail] conj inp-message))
(defn modify-errors
"takes a nREPL response, and returns a message with the errors fixed"
[inp-message]
(if (contains? inp-message :err)
;;replace the assoced value with a function call as needed.
(assoc inp-message :err
(let [err (inp-message :err)
processed (p-exc/process-spec-errors err)]
(m-obj/get-all-text (:msg-info-obj (do (update-recorder-detail processed)
(update-recorder-msg err)
processed)))))
;(assoc inp-message :err (str (inp-message :err))) ;; Debugging
;(assoc inp-message :err (str "\n" inp-message "\n" (p-exc/process-spec-errors (inp-message :err)))) ;; Debugging
inp-message))
(println "babel.processor loaded")