peppi 2.1.2

Parser for Slippi replay files
Documentation
(ns peppi-codegen.enums
  (:require
   [camel-snake-kebab.core :as csk]
   [clojure.data.json :as json]
   [clojure.java.io :as io]
   [clojure.pprint :refer [pprint]]
   [peppi-codegen.common :refer :all]))

(defn enum
  [[nm {ty :type, values :known_values}]]
  [:enum
   {:attrs {:derive ["Debug" "PartialEq" "Eq" "Clone" "Copy" "TryFromPrimitive"]
            :repr [ty]}}
   nm
   (-> values
       (update-keys (comp bigdec name))
       (->> (sort-by key)
            (mapv (juxt (comp csk/->PascalCase :ident val) key))))])

(defn -main [enum-name]
  (doseq [decl (mapv enum (read-json (format "enums/%s.json" enum-name)))]
    (println (emit-expr decl) "\n")))