diff --git a/resources/rulesets/basic.txt b/resources/public/rulesets/basic.txt similarity index 100% rename from resources/rulesets/basic.txt rename to resources/public/rulesets/basic.txt diff --git a/resources/rulesets/ecology.txt b/resources/public/rulesets/ecology.txt similarity index 100% rename from resources/rulesets/ecology.txt rename to resources/public/rulesets/ecology.txt diff --git a/resources/rulesets/iceage.txt b/resources/public/rulesets/iceage.txt similarity index 100% rename from resources/rulesets/iceage.txt rename to resources/public/rulesets/iceage.txt diff --git a/resources/rulesets/life.txt b/resources/public/rulesets/life.txt similarity index 100% rename from resources/rulesets/life.txt rename to resources/public/rulesets/life.txt diff --git a/resources/rulesets/settlement.txt b/resources/public/rulesets/settlement.txt similarity index 100% rename from resources/rulesets/settlement.txt rename to resources/public/rulesets/settlement.txt diff --git a/src/mw_ui/render_world.clj b/src/mw_ui/render_world.clj index e702055..b942ad7 100644 --- a/src/mw_ui/render_world.clj +++ b/src/mw_ui/render_world.clj @@ -5,6 +5,7 @@ [mw-engine.natural-rules :as rules] [mw-parser.bulk :as compiler] [hiccup.core :refer [html]] + [noir.io :as io] [noir.session :as session])) @@ -41,12 +42,14 @@ (let [world (or (session/get :world) (engine/transform-world (heightmap/apply-heightmap - "resources/public/img/heightmaps/small_hill.png" + (io/get-resource "/img/heightmaps/small_hill.png") ;; "resources/public/img/heightmaps/great_britain_and_ireland_small.png" ) rules/init-rules)) rules (or (session/get :rules) - (do (session/put! :rules (compiler/compile-file "resources/rulesets/basic.txt")) + (do (session/put! :rules + (compiler/compile-file + (io/get-resource "/rulesets/basic.txt"))) (session/get :rules))) generation (+ (or (session/get :generation) 0) 1) w2 (engine/transform-world world rules) diff --git a/src/mw_ui/routes/params.clj b/src/mw_ui/routes/params.clj index 35a360c..913a1bd 100644 --- a/src/mw_ui/routes/params.clj +++ b/src/mw_ui/routes/params.clj @@ -1,5 +1,6 @@ (ns mw-ui.routes.params (:use clojure.walk + clojure.java.io compojure.core) (:require [hiccup.core :refer [html]] [mw-engine.heightmap :as heightmap] @@ -7,13 +8,14 @@ [mw-ui.layout :as layout] [mw-ui.util :as util] [mw-ui.render-world :as world] + [noir.io :as io] [noir.session :as session])) (defn- send-params [] {:title "Choose your world" - :heightmaps (util/list-resources "resources/public/img/heightmaps" #"([0-9a-z-_]+).png") + :heightmaps (util/list-resources "/img/heightmaps" #"([0-9a-z-_]+).png") :pause (or (session/get :pause) 5) - :rulesets (util/list-resources "resources/rulesets" #"([0-9a-z-_]+).txt") + :rulesets (util/list-resources "/rulesets" #"([0-9a-z-_]+).txt") }) (defn params-page @@ -28,15 +30,15 @@ map (:heightmap params) pause (:pause params) rulefile (:ruleset params) - rulepath (str "resources/rulesets/" rulefile ".txt")] + rulepath (str "/rulesets/" rulefile ".txt")] (if (not (= map "")) (session/put! :world (heightmap/apply-heightmap - (str "resources/public/img/heightmaps/" map ".png")))) + (io/get-resource (str "/img/heightmaps/" map ".png"))))) (if (not (= rulefile "")) (do - (session/put! :rule-text (slurp rulepath)) - (session/put! :rules (compiler/compile-file rulepath)))) + (session/put! :rule-text (io/slurp-resource rulepath)) + (session/put! :rules (compiler/compile-file (io/get-resource rulepath))))) (if (not (= pause "")) (session/put! :pause pause)) (layout/render "params.html" diff --git a/src/mw_ui/routes/rules.clj b/src/mw_ui/routes/rules.clj index 77d3940..efb0eb7 100644 --- a/src/mw_ui/routes/rules.clj +++ b/src/mw_ui/routes/rules.clj @@ -6,6 +6,7 @@ [mw-ui.layout :as layout] [mw-ui.util :as util] [mw-ui.render-world :as world] + [noir.io :as io] [noir.session :as session])) (defn process-rules-request @@ -21,7 +22,7 @@ " rules") }) true {:rule-text (or (session/get :rule-text) - (slurp "resources/rulesets/basic.txt")) + (io/slurp-resource "/rulesets/basic.txt")) :message "No rules found in request; loading defaults"}) (catch Exception e {:rule-text src diff --git a/src/mw_ui/util.clj b/src/mw_ui/util.clj index 148dc26..0956239 100644 --- a/src/mw_ui/util.clj +++ b/src/mw_ui/util.clj @@ -1,5 +1,6 @@ (ns mw-ui.util (:require [noir.io :as io] + [noir.session :as session] [markdown.core :as md])) (defn md->html @@ -11,7 +12,10 @@ (defn list-resources [directory pattern] "List resource files matching `pattern` in `directory`." - (sort - (filter #(not (nil? %)) + (let + [path (str (io/resource-path) directory)] + (session/put! :list-resources-path path) + (sort + (filter #(not (nil? %)) (map #(first (rest (re-matches pattern (.getName %)))) - (file-seq (clojure.java.io/file directory)))))) + (file-seq (clojure.java.io/file path)))))))