From 71b94e6e4b63cf6f5a58e5490265892e4cba6ed0 Mon Sep 17 00:00:00 2001 From: gered Date: Tue, 8 Mar 2016 13:04:28 -0500 Subject: [PATCH] add handling of unknown combat events instead of just silently ignoring --- vwowrla.core/src/vwowrla/core/parser.clj | 15 ++++++++++++--- vwowrla.core/src/vwowrla/core/schemas.clj | 5 +++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/vwowrla.core/src/vwowrla/core/parser.clj b/vwowrla.core/src/vwowrla/core/parser.clj index cec65f0..6b3caf3 100644 --- a/vwowrla.core/src/vwowrla/core/parser.clj +++ b/vwowrla.core/src/vwowrla/core/parser.clj @@ -82,6 +82,13 @@ (update-active-encounter x #(handle-event event %))) data)) +(s/defn ^:private handle-unknown-event :- RaidAnalysis + [event :- CombatEvent + data :- RaidAnalysis] + "special handling for unknown combat events." + (warn (str "Unknown event encountered during log file parse: \"" (:line event) "\". Skipping event.")) + (assoc data :unknown-events-count (inc (or (:unknown-events-count data) 0)))) + (s/defn ^:private parse-log* :- (s/maybe RaidAnalysis) [f options :- ParserOptions] @@ -91,9 +98,11 @@ (fn [data ^String line] (try (let [event (parse-line line options)] - (if (active-encounter? data) - (active-encounter-processing event data) - (out-of-encounter-processing event data))) + (if (= :unknown (:event event)) + (handle-unknown-event event data) + (if (active-encounter? data) + (active-encounter-processing event data) + (out-of-encounter-processing event data)))) (catch Exception ex (throw (ex-info "Parser error" {:line line} ex))))) {:encounters [] diff --git a/vwowrla.core/src/vwowrla/core/schemas.clj b/vwowrla.core/src/vwowrla/core/schemas.clj index 05bf2ff..1082964 100644 --- a/vwowrla.core/src/vwowrla/core/schemas.clj +++ b/vwowrla.core/src/vwowrla/core/schemas.clj @@ -85,8 +85,9 @@ ; TODO (def RaidAnalysis - {:encounters [Encounter] - :active-encounter (s/maybe Encounter)}) + {:encounters [Encounter] + :active-encounter (s/maybe Encounter) + (s/optional-key :unknown-events-count) (s/Num)}) ; TODO (def DamageProperties