Logging rule errors.

This commit is contained in:
Simon Brooke 2023-07-18 22:27:14 +01:00
parent 68298cf9c1
commit 321e6edd9a
2 changed files with 8 additions and 178 deletions

View file

@ -1,171 +0,0 @@
; This is the Calva evaluation results output window.
; TIPS: The keyboard shortcut `ctrl+alt+o o` shows and focuses this window
; when connected to a REPL session.
; Please see https://calva.io/output/ for more info.
; Happy coding! ♥️
; Connecting ...
; Reading port file: file:///Users/simon/workspace/MicroWorld/mw-engine/.nrepl-port ...
; Using host:port localhost:58100 ...
; Hooking up nREPL sessions ...
; Connected session: clj
; TIPS:
; - You can edit the contents here. Use it as a REPL if you like.
; - `alt+enter` evaluates the current top level form.
; - `ctrl+enter` evaluates the current form.
; - `alt+up` and `alt+down` traverse up and down the REPL command history
; when the cursor is after the last contents at the prompt
; - Clojure lines in stack traces are peekable and clickable.
; Evaluating code from settings: 'calva.autoEvaluateCode.onConnect.clj'
nil
cljuser>  ; Use `alt+enter` to evaluate
cljuser> 
nil
; WARNING: abs already refers to: #'clojure.core/abs in namespace: mw-engine.utils, being replaced by: #'mw-engine.utils/abs
cljmw-engine.core> 
nil
cljmw-engine.core> 
#'mw-engine.core/apply-rule
cljmw-engine.core> 
#'mw-engine.core/apply-rules
cljmw-engine.core> 
#'mw-engine.core/transform-cell
cljmw-engine.core> 
#'mw-engine.core/transform-world
cljmw-engine.core> 
#'mw-engine.core/run-world
cljmw-engine.core> 
#'mw-engine.display/*image-base*
cljmw-engine.display> 
; Syntax error compiling at (src/cljc/mw_engine/display.clj:32:1).
; Unable to resolve symbol: defn in this context
cljmw-engine.display> 
; Syntax error compiling at (src/cljc/mw_engine/display.clj:32:1).
; Unable to resolve symbol: defn in this context
cljmw-engine.display> 
nil
cljmw-engine.display> 
#'mw-engine.display/*image-base*
cljmw-engine.display> 
#'mw-engine.display/format-css-class
cljmw-engine.display> 
#'mw-engine.display/format-image-path
cljmw-engine.display> 
#'mw-engine.display/format-mouseover
cljmw-engine.display> 
#'mw-engine.display/render-cell
cljmw-engine.display> 
#'mw-engine.display/render-world-row
cljmw-engine.display> 
#'mw-engine.display/render-world-table
cljmw-engine.display> 
nil
; WARNING: abs already refers to: #'clojure.core/abs in namespace: mw-engine.heightmap, being replaced by: #'mw-engine.utils/abs
cljmw-engine.drainage> 
#'mw-engine.drainage/*sealevel*
cljmw-engine.drainage> 
#'mw-engine.drainage/flow
cljmw-engine.drainage> 
#'mw-engine.drainage/rainfall
cljmw-engine.drainage> 
#'mw-engine.drainage/rain-row
cljmw-engine.drainage> 
#'mw-engine.drainage/rain-world
cljmw-engine.drainage> 
#'mw-engine.drainage/flow-contributors
cljmw-engine.drainage> 
#'mw-engine.drainage/is-hollow
cljmw-engine.drainage> 
#'mw-engine.drainage/flood-hollow
cljmw-engine.drainage> 
#'mw-engine.drainage/flood-hollows
cljmw-engine.drainage> 
#'mw-engine.drainage/max-altitude
cljmw-engine.drainage> 
#'mw-engine.drainage/flow-nr
cljmw-engine.drainage> 
#'mw-engine.drainage/flow
cljmw-engine.drainage> 
#'mw-engine.drainage/flow-world-nr
cljmw-engine.drainage> 
#'mw-engine.drainage/flow-world
cljmw-engine.drainage> 
#'mw-engine.drainage/explore-lake
cljmw-engine.drainage> 
#'mw-engine.drainage/is-lake?
cljmw-engine.drainage> 
#'mw-engine.drainage/find-lakes
cljmw-engine.drainage> 
#'mw-engine.drainage/run-drainage
cljmw-engine.drainage> 
#'mw-engine.drainage/run-drainage
cljmw-engine.drainage> 
nil
cljmw-engine.heightmap> 
#'mw-engine.heightmap/tag-property
cljmw-engine.heightmap> 
#'mw-engine.heightmap/tag-gradient
cljmw-engine.heightmap> 
#'mw-engine.heightmap/tag-gradients
cljmw-engine.heightmap> 
#'mw-engine.heightmap/tag-altitude
cljmw-engine.heightmap> 
#'mw-engine.heightmap/apply-heightmap
cljmw-engine.heightmap> 
nil
cljmw-engine.utils> 
#'mw-engine.utils/member?
cljmw-engine.utils> 
#'mw-engine.utils/get-int-or-zero
cljmw-engine.utils> 
#'mw-engine.utils/in-bounds
cljmw-engine.utils> 
#'mw-engine.utils/in-bounds?
cljmw-engine.utils> 
#'mw-engine.utils/map-world-n-n
cljmw-engine.utils> 
#'mw-engine.utils/map-world-p-p
cljmw-engine.utils> 
#'mw-engine.utils/map-world
cljmw-engine.utils> 
#'mw-engine.utils/get-cell
cljmw-engine.utils> 
#'mw-engine.utils/get-int
cljmw-engine.utils> 
#'mw-engine.utils/population
cljmw-engine.utils> 
#'mw-engine.utils/memo-get-neighbours
cljmw-engine.utils> 
#'mw-engine.utils/get-neighbours
cljmw-engine.utils> 
#'mw-engine.utils/get-neighbours-with-property-value
cljmw-engine.utils> 
#'mw-engine.utils/get-neighbours-with-state
cljmw-engine.utils> 
#'mw-engine.utils/get-least-cell
cljmw-engine.utils> 
#'mw-engine.utils/set-cell-property
cljmw-engine.utils> 
#'mw-engine.utils/set-property
cljmw-engine.utils> 
#'mw-engine.utils/merge-cell
cljmw-engine.utils> 
nil
cljmw-engine.world> 
#'mw-engine.world/make-cell
cljmw-engine.world> 
#'mw-engine.world/make-world-row
cljmw-engine.world> 
#'mw-engine.world/make-world-rows
cljmw-engine.world> 
#'mw-engine.world/make-world
cljmw-engine.world> 
#'mw-engine.world/truncate-state
cljmw-engine.world> 
#'mw-engine.world/format-cell
cljmw-engine.world> 
#'mw-engine.world/format-world-row
cljmw-engine.world> 
#'mw-engine.world/print-world
cljmw-engine.world> 
; nREPL Connection was closed

View file

@ -82,16 +82,17 @@
(apply-rules world cell rules) (apply-rules world cell rules)
{:generation (+ (get-int-or-zero cell :generation) 1)}) {:generation (+ (get-int-or-zero cell :generation) 1)})
(catch Exception e (catch Exception e
(merge cell {:error (let [narrative (format "%s with message `%s` at generation %d when in state %s"
(format "%s with message `%s` at generation %d when in state %s" (-> e .getClass .getName)
(-> e .getClass .getName) (.getMessage e)
(.getMessage e) (:generation cell)
(:generation cell) (:state cell))]
(:state cell)) (l/warn e narrative)
(merge cell {:error narrative
:stacktrace ;; (remove #(starts-with? % "clojure.") :stacktrace ;; (remove #(starts-with? % "clojure.")
(map #(.toString %) (.getStackTrace e)) (map #(.toString %) (.getStackTrace e))
;;) ;;)
:state :error})))) :state :error})))))
(defn transform-world (defn transform-world
"Return a world derived from this `world` by applying the production rules "Return a world derived from this `world` by applying the production rules