Compare commits

...

8 Commits

Author SHA1 Message Date
Charlotte Allen fe912249b1
Lint fixes 2020-02-04 17:04:26 -08:00
Charlotte Allen ae976925fb
Fix order of methods for posts-io and update older packages 2020-02-04 15:59:54 -08:00
Charlotte Allen 724d1e9a7f Consolodate post reading under posts-io. 2020-02-03 13:26:57 -08:00
Charlotte Allen 1c43b84d68 Use EDN to read, rather than read-string. 2020-02-03 13:00:10 -08:00
Charlotte Allen a091a377b0 Switch fully qualified namespace to use require 2020-02-03 12:58:25 -08:00
Charlotte Allen 84c201c6e1 Save posts as "edn" extension, rather than JSON. 2020-02-03 12:55:15 -08:00
Charlotte Allen be0aeeb80d Revert to digits for writing a post, and use
correct "pr-str" to write edn data.
2020-02-03 12:53:54 -08:00
Charlotte Allen 4f3cfe4728 Run cljfmt 2020-02-03 12:43:24 -08:00
8 changed files with 60 additions and 52 deletions

1
.gitignore vendored
View File

@ -18,3 +18,4 @@ profiles.clj
resources/posts/ resources/posts/
/resources/author/ /resources/author/
resources/index/ resources/index/
*.eastwood

10
env/dev/clj/user.clj vendored
View File

@ -2,11 +2,11 @@
"Userspace functions you can run by default in your local REPL." "Userspace functions you can run by default in your local REPL."
(:require (:require
[shapey-shifty.config :refer [env]] [shapey-shifty.config :refer [env]]
[clojure.pprint] [clojure.pprint]
[clojure.spec.alpha :as s] [clojure.spec.alpha :as s]
[expound.alpha :as expound] [expound.alpha :as expound]
[mount.core :as mount] [mount.core :as mount]
[shapey-shifty.core :refer [start-app]])) [shapey-shifty.core :refer [start-app]]))
(alter-var-root #'s/*explain-out* (constantly expound/printer)) (alter-var-root #'s/*explain-out* (constantly expound/printer))

View File

@ -38,10 +38,6 @@
:resource-paths ["resources"] :resource-paths ["resources"]
:target-path "target/%s/" :target-path "target/%s/"
:main ^:skip-aot shapey-shifty.core :main ^:skip-aot shapey-shifty.core
:plugins [ [lein-cljfmt "0.6.6"]
]
:profiles :profiles
{:uberjar {:omit-source true {:uberjar {:omit-source true
:aot :all :aot :all
@ -58,6 +54,7 @@
[ring/ring-devel "1.8.0"] [ring/ring-devel "1.8.0"]
[ring/ring-mock "0.4.0"]] [ring/ring-mock "0.4.0"]]
:plugins [[com.jakemccrary/lein-test-refresh "0.24.1"] :plugins [[com.jakemccrary/lein-test-refresh "0.24.1"]
[lein-cljfmt "0.6.6"]
[jonase/eastwood "0.3.5"]] [jonase/eastwood "0.3.5"]]
:source-paths ["env/dev/clj"] :source-paths ["env/dev/clj"]

View File

@ -4,10 +4,10 @@
(def base-path "resources/author") (def base-path "resources/author")
(defn create-author [] (defn create-author []
{:card nil :password-hash nil}) {:card nil :password-hash nil})
(defn load-author [author-name] (defn load-author [author-name]
(let [path (format "%s/%s" base-path author-name) (let [path (format "%s/%s" base-path author-name)
file (io/file path)] file (io/file path)]
(when (.exists file) (when (.exists file)
@ -16,9 +16,9 @@
edn/read-string)))) edn/read-string))))
(defn load-all-authors [] (defn load-all-authors []
(->> base-path (->> base-path
io/file io/file
file-seq file-seq
(filter #(.isFile %)) (filter #(.isFile %))
(map #(->> % slurp edn/read-string)))) (map #(->> % slurp edn/read-string))))

View File

@ -1,12 +1,12 @@
(ns shapey-shifty.core (ns shapey-shifty.core
(:require (:require
[shapey-shifty.handler :as handler] [shapey-shifty.handler :as handler]
[shapey-shifty.nrepl :as nrepl] [shapey-shifty.nrepl :as nrepl]
[luminus.http-server :as http] [luminus.http-server :as http]
[shapey-shifty.config :refer [env]] [shapey-shifty.config :refer [env]]
[clojure.tools.cli :refer [parse-opts]] [clojure.tools.cli :refer [parse-opts]]
[clojure.tools.logging :as log] [clojure.tools.logging :as log]
[mount.core :as mount]) [mount.core :as mount])
(:gen-class)) (:gen-class))
;; log uncaught exceptions in threads ;; log uncaught exceptions in threads

View File

@ -1,7 +1,7 @@
(ns shapey-shifty.index.index (ns shapey-shifty.index.index
(:require [clucy.core :as clucy] (:require [clucy.core :as clucy]
[shapey-shifty.posts.posts-io :as post-io] [clojure.java.io :as io]
)) [shapey-shifty.posts.posts-io :as post-io]))
(def index-path (atom "resources/index")) (def index-path (atom "resources/index"))
@ -13,10 +13,10 @@
(defn crawl-posts! (defn crawl-posts!
([path] ([path]
(crawl-posts! path post-io/read-post)) (crawl-posts! path post-io/read-post))
([path parsing-fn] ([path parsing-fn]
(->> path (->> path
clojure.java.io/file io/file
file-seq file-seq
(filter #(.isFile %)) (filter #(.isFile %))
(mapv #(parsing-fn %)) (mapv #(parsing-fn %))
(apply add-post-to-index)))) (map #(add-post-to-index %)))))

View File

@ -1,22 +1,24 @@
(ns shapey-shifty.posts.posts-io (ns shapey-shifty.posts.posts-io
(:require (:require
[shapey-shifty.posts.core :as core] [shapey-shifty.posts.core :as core]
[shapey-shifty.authors.author-core :as author])) [shapey-shifty.authors.author-core :as author]
[clojure.java.io :as io]
[clojure.edn :as edn]))
(def post-filename "post.json") (def post-filename "post.edn")
(def base-posts-path "resources/posts") (def base-posts-path "resources/posts")
(defn create-path-by-date [year month day] (defn create-path-by-date [year month day]
{:year year :month month :day day}) {:year year :month month :day day})
(defn pathmap-to-path [{:keys [year month day]}] (defn pathmap-to-path [{:keys [year month day]}]
(format "%s/%s/%s" year month day)) (format "%d/%d/%d" year month day))
(defn count-posts-in-date [dt-path] (defn count-posts-in-date [dt-path]
(let [path (pathmap-to-path dt-path) (let [path (pathmap-to-path dt-path)
final-path (format "%s/%s" base-posts-path path)] final-path (format "%s/%s" base-posts-path path)]
(->> final-path (->> final-path
clojure.java.io/file io/file
file-seq file-seq
(filter #(.isDirectory %)) (filter #(.isDirectory %))
count count
@ -25,9 +27,9 @@
(defn write-post [post dt-path] (defn write-post [post dt-path]
(let [path (pathmap-to-path dt-path) (let [path (pathmap-to-path dt-path)
increment (inc (count-posts-in-date dt-path)) increment (inc (count-posts-in-date dt-path))
final-path (format "%s/%s/%d/%s" base-posts-path path increment post-filename)] final-path (format "%s/%s/%s/%s" base-posts-path path increment post-filename)]
(clojure.java.io/make-parents final-path) (io/make-parents final-path)
(spit final-path post))) (spit final-path (pr-str post))))
(defn assoc-author [post] (defn assoc-author [post]
(let [filename (get-in post [:properties :author]) (let [filename (get-in post [:properties :author])
@ -38,8 +40,18 @@
(defn read-post (defn read-post
([file] ([file]
(when (.exists file) (when (.exists file)
(-> file slurp read-string assoc-author))) (-> file slurp edn/read-string assoc-author)))
([dt-path n] ([dt-path n]
(let [path (format "%s/%s/%s/%s" base-posts-path (pathmap-to-path dt-path) n post-filename) (let [path (format "%s/%s/%d/%s" base-posts-path (pathmap-to-path dt-path) n post-filename)
f (clojure.java.io/file path)] f (io/file path)]
(read-post f)))) (read-post f))))
(defn read-all-posts
([]
(read-all-posts base-posts-path))
([path]
(->> path
io/file
file-seq
(filter #(.isFile %))
(map #(read-post %)))))

View File

@ -1,14 +1,14 @@
(ns shapey-shifty.routes.home (ns shapey-shifty.routes.home
(:require (:require
[shapey-shifty.layout :as layout] [shapey-shifty.layout :as layout]
[clojure.java.io :as io] [clojure.java.io :as io]
[shapey-shifty.middleware :as middleware] [shapey-shifty.middleware :as middleware]
[ring.util.response] [ring.util.response]
[shapey-shifty.posts.core :as posts] [shapey-shifty.posts.core :as posts]
[shapey-shifty.posts.posts-io :as post-io] [shapey-shifty.posts.posts-io :as post-io]
[shapey-shifty.routes.post-router :as post-router] [shapey-shifty.routes.post-router :as post-router]
[shapey-shifty.authors.author-core :as author] [shapey-shifty.authors.author-core :as author]
[ring.util.http-response :as response])) [ring.util.http-response :as response]))
(defn home-page [request] (defn home-page [request]
(layout/render request "home.html" {:docs (-> "docs/docs.md" io/resource slurp)})) (layout/render request "home.html" {:docs (-> "docs/docs.md" io/resource slurp)}))
@ -24,10 +24,8 @@
:card (:author post)}))) :card (:author post)})))
(defn about-page [request] (defn about-page [request]
(layout/render request "h_card.html" (layout/render request "h_card.html"
{ {:card (:card (author/load-author (get-in request [:path-params :name])))}))
:card (:card (author/load-author (get-in request [:path-params :name])))
}))
(defn home-routes [] (defn home-routes []
["" [""