diff --git a/project.clj b/project.clj index 38c96f5..86806dd 100644 --- a/project.clj +++ b/project.clj @@ -29,7 +29,8 @@ [prone "1.1.4"] [ring/ring-anti-forgery "1.1.0"] [ring-server "0.4.0"] - [selmer "1.11.0"]] + [selmer "1.11.0"] + [com.stuartsierra/component "0.3.2"]] :repl-options {:init-ns smeagol.repl} diff --git a/src/smeagol/include.clj b/src/smeagol/include.clj new file mode 100644 index 0000000..adc361f --- /dev/null +++ b/src/smeagol/include.clj @@ -0,0 +1,11 @@ +(ns smeagol.include + (:require + [com.stuartsierra.component :as component])) + +(defrecord Resolver [resolver-fn]) + +(defn new-resolver [resolver-fn] + (map->Resolver {:resolver-fn resolver-fn})) + +(defn resolve-include [resolver uri] + (apply (:resolver-fn resolver) [uri])) diff --git a/test/smeagol/test/include.clj b/test/smeagol/test/include.clj new file mode 100644 index 0000000..143eb61 --- /dev/null +++ b/test/smeagol/test/include.clj @@ -0,0 +1,16 @@ +(ns smeagol.test.include + (:require [clojure.test :refer :all] + [com.stuartsierra.component :as component] + [smeagol.include :as sut])) + +(defn test-include-resolver [uri] + (cond + (= uri "./simple.md") "Simple content.")) + +(def system-under-test + (component/system-map + :resolver (sut/new-resolver test-include-resolver))) + +(deftest test-local-links + (testing "Rewriting of local links" + (is (= "Simple content." (sut/resolve-include (:resolver system-under-test) "./simple.md")))))