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
clj꞉user꞉>  ; Use `alt+enter` to evaluate
clj꞉user꞉> 
nil
; WARNING: abs already refers to: #'clojure.core/abs in namespace: mw-engine.utils, being replaced by: #'mw-engine.utils/abs
clj꞉mw-engine.core꞉> 
nil
clj꞉mw-engine.core꞉> 
#'mw-engine.core/apply-rule
clj꞉mw-engine.core꞉> 
#'mw-engine.core/apply-rules
clj꞉mw-engine.core꞉> 
#'mw-engine.core/transform-cell
clj꞉mw-engine.core꞉> 
#'mw-engine.core/transform-world
clj꞉mw-engine.core꞉> 
#'mw-engine.core/run-world
clj꞉mw-engine.core꞉> 
#'mw-engine.display/*image-base*
clj꞉mw-engine.display꞉> 
; Syntax error compiling at (src/cljc/mw_engine/display.clj:32:1).
; Unable to resolve symbol: defn in this context
clj꞉mw-engine.display꞉> 
; Syntax error compiling at (src/cljc/mw_engine/display.clj:32:1).
; Unable to resolve symbol: defn in this context
clj꞉mw-engine.display꞉> 
nil
clj꞉mw-engine.display꞉> 
#'mw-engine.display/*image-base*
clj꞉mw-engine.display꞉> 
#'mw-engine.display/format-css-class
clj꞉mw-engine.display꞉> 
#'mw-engine.display/format-image-path
clj꞉mw-engine.display꞉> 
#'mw-engine.display/format-mouseover
clj꞉mw-engine.display꞉> 
#'mw-engine.display/render-cell
clj꞉mw-engine.display꞉> 
#'mw-engine.display/render-world-row
clj꞉mw-engine.display꞉> 
#'mw-engine.display/render-world-table
clj꞉mw-engine.display꞉> 
nil
; WARNING: abs already refers to: #'clojure.core/abs in namespace: mw-engine.heightmap, being replaced by: #'mw-engine.utils/abs
clj꞉mw-engine.drainage꞉> 
#'mw-engine.drainage/*sealevel*
clj꞉mw-engine.drainage꞉> 
#'mw-engine.drainage/flow
clj꞉mw-engine.drainage꞉> 
#'mw-engine.drainage/rainfall
clj꞉mw-engine.drainage꞉> 
#'mw-engine.drainage/rain-row
clj꞉mw-engine.drainage꞉> 
#'mw-engine.drainage/rain-world
clj꞉mw-engine.drainage꞉> 
#'mw-engine.drainage/flow-contributors
clj꞉mw-engine.drainage꞉> 
#'mw-engine.drainage/is-hollow
clj꞉mw-engine.drainage꞉> 
#'mw-engine.drainage/flood-hollow
clj꞉mw-engine.drainage꞉> 
#'mw-engine.drainage/flood-hollows
clj꞉mw-engine.drainage꞉> 
#'mw-engine.drainage/max-altitude
clj꞉mw-engine.drainage꞉> 
#'mw-engine.drainage/flow-nr
clj꞉mw-engine.drainage꞉> 
#'mw-engine.drainage/flow
clj꞉mw-engine.drainage꞉> 
#'mw-engine.drainage/flow-world-nr
clj꞉mw-engine.drainage꞉> 
#'mw-engine.drainage/flow-world
clj꞉mw-engine.drainage꞉> 
#'mw-engine.drainage/explore-lake
clj꞉mw-engine.drainage꞉> 
#'mw-engine.drainage/is-lake?
clj꞉mw-engine.drainage꞉> 
#'mw-engine.drainage/find-lakes
clj꞉mw-engine.drainage꞉> 
#'mw-engine.drainage/run-drainage
clj꞉mw-engine.drainage꞉> 
#'mw-engine.drainage/run-drainage
clj꞉mw-engine.drainage꞉> 
nil
clj꞉mw-engine.heightmap꞉> 
#'mw-engine.heightmap/tag-property
clj꞉mw-engine.heightmap꞉> 
#'mw-engine.heightmap/tag-gradient
clj꞉mw-engine.heightmap꞉> 
#'mw-engine.heightmap/tag-gradients
clj꞉mw-engine.heightmap꞉> 
#'mw-engine.heightmap/tag-altitude
clj꞉mw-engine.heightmap꞉> 
#'mw-engine.heightmap/apply-heightmap
clj꞉mw-engine.heightmap꞉> 
nil
clj꞉mw-engine.utils꞉> 
#'mw-engine.utils/member?
clj꞉mw-engine.utils꞉> 
#'mw-engine.utils/get-int-or-zero
clj꞉mw-engine.utils꞉> 
#'mw-engine.utils/in-bounds
clj꞉mw-engine.utils꞉> 
#'mw-engine.utils/in-bounds?
clj꞉mw-engine.utils꞉> 
#'mw-engine.utils/map-world-n-n
clj꞉mw-engine.utils꞉> 
#'mw-engine.utils/map-world-p-p
clj꞉mw-engine.utils꞉> 
#'mw-engine.utils/map-world
clj꞉mw-engine.utils꞉> 
#'mw-engine.utils/get-cell
clj꞉mw-engine.utils꞉> 
#'mw-engine.utils/get-int
clj꞉mw-engine.utils꞉> 
#'mw-engine.utils/population
clj꞉mw-engine.utils꞉> 
#'mw-engine.utils/memo-get-neighbours
clj꞉mw-engine.utils꞉> 
#'mw-engine.utils/get-neighbours
clj꞉mw-engine.utils꞉> 
#'mw-engine.utils/get-neighbours-with-property-value
clj꞉mw-engine.utils꞉> 
#'mw-engine.utils/get-neighbours-with-state
clj꞉mw-engine.utils꞉> 
#'mw-engine.utils/get-least-cell
clj꞉mw-engine.utils꞉> 
#'mw-engine.utils/set-cell-property
clj꞉mw-engine.utils꞉> 
#'mw-engine.utils/set-property
clj꞉mw-engine.utils꞉> 
#'mw-engine.utils/merge-cell
clj꞉mw-engine.utils꞉> 
nil
clj꞉mw-engine.world꞉> 
#'mw-engine.world/make-cell
clj꞉mw-engine.world꞉> 
#'mw-engine.world/make-world-row
clj꞉mw-engine.world꞉> 
#'mw-engine.world/make-world-rows
clj꞉mw-engine.world꞉> 
#'mw-engine.world/make-world
clj꞉mw-engine.world꞉> 
#'mw-engine.world/truncate-state
clj꞉mw-engine.world꞉> 
#'mw-engine.world/format-cell
clj꞉mw-engine.world꞉> 
#'mw-engine.world/format-world-row
clj꞉mw-engine.world꞉> 
#'mw-engine.world/print-world
clj꞉mw-engine.world꞉> 
; nREPL Connection was closed

View file

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