mirror of
https://github.com/journeyman-cc/smeagol.git
synced 2026-04-12 18:05:06 +00:00
stick system together
This commit is contained in:
parent
3668b26df1
commit
7674a4c305
3 changed files with 51 additions and 6 deletions
|
|
@ -8,7 +8,8 @@ smeagol.include and not inteded for direct usage."
|
||||||
[com.stuartsierra.component :as component]))
|
[com.stuartsierra.component :as component]))
|
||||||
|
|
||||||
(s/defrecord Resolver
|
(s/defrecord Resolver
|
||||||
[type :- s/Keyword])
|
[type :- s/Keyword
|
||||||
|
local-base-dir :- s/Str])
|
||||||
|
|
||||||
;As schema does'nt support s/defprotocol we use the dispatcher for annotation & validation.
|
;As schema does'nt support s/defprotocol we use the dispatcher for annotation & validation.
|
||||||
(s/defn dispatch-by-resolver-type :- s/Keyword
|
(s/defn dispatch-by-resolver-type :- s/Keyword
|
||||||
|
|
@ -38,5 +39,8 @@ smeagol.include and not inteded for direct usage."
|
||||||
|
|
||||||
(s/defn
|
(s/defn
|
||||||
new-resolver
|
new-resolver
|
||||||
[type :- s/Keyword]
|
([type :- s/Keyword]
|
||||||
(map->Resolver {:type type}))
|
(map->Resolver {:type type :local-base-dir nil}))
|
||||||
|
([type :- s/Keyword
|
||||||
|
local-base-dir :- s/Str]
|
||||||
|
(map->Resolver {:type type :local-base-dir local-base-dir})))
|
||||||
|
|
|
||||||
27
src/smeagol/include/resolve_local_file.clj
Normal file
27
src/smeagol/include/resolve_local_file.clj
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
(ns ^{:doc "Functions related to the include of markdown-paged - providing
|
||||||
|
a plugable load-local-include-links componet. This namespaces is implementation detail for
|
||||||
|
smeagol.include and not inteded for direct usage."
|
||||||
|
:author "Michael Jerger"}
|
||||||
|
smeagol.include.resolve-local-file
|
||||||
|
(:require
|
||||||
|
[schema.core :as s]
|
||||||
|
[smeagol.include.resolve :as resolve]
|
||||||
|
[com.stuartsierra.component :as component]
|
||||||
|
[clojure.java.io :as cjio]
|
||||||
|
[taoensso.timbre :as timbre]))
|
||||||
|
|
||||||
|
(s/defmethod resolve/do-resolve-md :local-file
|
||||||
|
[resolver
|
||||||
|
uri :- s/Str]
|
||||||
|
(let [file-name (uri)
|
||||||
|
file-path (cjio/file (:local-base-dir resolver) file-name)
|
||||||
|
exists? (.exists (clojure.java.io/as-file file-path))]
|
||||||
|
(cond exists?
|
||||||
|
(do
|
||||||
|
(timbre/info (format "Including page '%s' from file '%s'" uri file-path))
|
||||||
|
(slurp file-path)))))
|
||||||
|
|
||||||
|
(s/defn
|
||||||
|
new-resolver
|
||||||
|
[local-base-dir :- s/Str]
|
||||||
|
(resolve/new-resolver :local-file local-base-dir))
|
||||||
|
|
@ -20,7 +20,10 @@
|
||||||
[smeagol.sanity :refer [show-sanity-check-error]]
|
[smeagol.sanity :refer [show-sanity-check-error]]
|
||||||
[smeagol.util :as util]
|
[smeagol.util :as util]
|
||||||
[smeagol.uploads :as ul]
|
[smeagol.uploads :as ul]
|
||||||
[taoensso.timbre :as timbre]))
|
[taoensso.timbre :as timbre]
|
||||||
|
[com.stuartsierra.component :as component]
|
||||||
|
[smeagol.include.resolve-local-file :as resolve]
|
||||||
|
[smeagol.include :as include]))
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;;;;
|
;;;;
|
||||||
|
|
@ -108,6 +111,14 @@
|
||||||
(edit-page request "stylesheet" ".css" "edit-css.html" "_edit-side-bar.md"))
|
(edit-page request "stylesheet" ".css" "edit-css.html" "_edit-side-bar.md"))
|
||||||
|
|
||||||
|
|
||||||
|
(def md-include-system
|
||||||
|
(component/start
|
||||||
|
(component/system-map
|
||||||
|
:resolver (resolve/new-resolver util/content-dir)
|
||||||
|
:includer (component/using
|
||||||
|
(include/new-includer)
|
||||||
|
[:resolver]))))
|
||||||
|
|
||||||
(defn wiki-page
|
(defn wiki-page
|
||||||
"Render the markdown page specified in this `request`, if any. If none found, redirect to edit-page"
|
"Render the markdown page specified in this `request`, if any. If none found, redirect to edit-page"
|
||||||
[request]
|
[request]
|
||||||
|
|
@ -125,7 +136,10 @@
|
||||||
(merge (util/standard-params request)
|
(merge (util/standard-params request)
|
||||||
{:title page
|
{:title page
|
||||||
:page page
|
:page page
|
||||||
:content (md->html (slurp file-path))
|
:content (md->html
|
||||||
|
(include/expand-include-md
|
||||||
|
(:includer md-include-system)
|
||||||
|
(slurp file-path)))
|
||||||
:editable true})))
|
:editable true})))
|
||||||
true (response/redirect (str "/edit?page=" page))))))
|
true (response/redirect (str "/edit?page=" page))))))
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue