add page margin option support. clean up page option -> css rendering

This commit is contained in:
Gered 2017-04-02 15:43:28 -04:00
parent 823c8f0e7c
commit 78979fd747

View file

@ -46,24 +46,43 @@
(defn ->page-size-css (defn ->page-size-css
[{:keys [size orientation] :as page-options}] [{:keys [size orientation] :as page-options}]
(if (or size orientation) (if (or size orientation)
(string/trim [[:size
(str (string/trim
(cond (str
(keyword? size) (name size) (cond
(sequential? size) (string/join " " size) (keyword? size) (name size)
:else size) (sequential? size) (string/join " " size)
" " :else size)
(if (keyword? orientation) " "
(name orientation) (if (keyword? orientation)
orientation))))) (name orientation)
orientation)))]]))
(defn ->page-margin-css
[{:keys [margin] :as page-options}]
(let [default-margin (get-in default-options [:page :margin])]
(cond
(map? margin)
[[:margin-left (or (:left margin) default-margin)]
[:margin-top (or (:top margin) default-margin)]
[:margin-right (or (:right margin) default-margin)]
[:margin-bottom (or (:bottom margin) default-margin)]]
(sequential? margin)
[[:margin (string/join " " margin)]]
:else
[[:margin (str (or margin default-margin))]])))
(defn page-options->css (defn page-options->css
[page-options] [page-options]
(let [styles (->> [[:size (->page-size-css page-options)]] (let [page-options (merge (:page default-options) page-options)]
(into []) [["@page"
(remove #(nil? (second %))) (->> (concat
(reduce #(assoc %1 (first %2) (second %2)) {}))] (->page-size-css page-options)
[["@page" styles]])) (->page-margin-css page-options))
(remove #(nil? (second %)))
(reduce #(assoc %1 (first %2) (second %2)) {}))]]))
(defn append-stylesheet-link-tags! (defn append-stylesheet-link-tags!
[^Element parent stylesheets] [^Element parent stylesheets]