Skip to content

Commit 03d2f40

Browse files
committed
Adjust folder structure
1 parent 1a1afcf commit 03d2f40

File tree

8 files changed

+79
-63
lines changed

8 files changed

+79
-63
lines changed

deps.edn

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{:deps {org-parser/org-parser {:mvn/version "0.1.5"}
22
rhizome/rhizome {:mvn/version "0.2.9"}}
3-
:paths ["src/main" "resources"]
4-
:aliases {:test {:extra-paths ["src/test"]}}}
3+
:paths ["src" "resources"]
4+
:aliases {:test {:extra-paths ["test"]}}}
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
(ns tech.thomas-sojka.org-parser-tree.output
2-
(:require [clojure.java.io :as io]
3-
[clojure.pprint :as pp]
4-
[rhizome.viz :as viz]))
5-
6-
(defn store-tree [path data]
7-
(binding [*print-level* nil
8-
*print-length* nil]
9-
(io/make-parents path)
10-
(pp/pprint data (io/writer path))))
11-
12-
(defn vizualize-tree [root]
13-
(viz/view-tree (comp sequential? :children) :children
14-
root
15-
:node->descriptor (fn [n] {:label (:title n)})))
1+
(ns tech.thomas-sojka.org-parser-tree.output
2+
(:require [clojure.java.io :as io]
3+
[clojure.pprint :as pp]
4+
[rhizome.viz :as viz]))
5+
6+
(defn store-tree [path data]
7+
(binding [*print-level* nil
8+
*print-length* nil]
9+
(io/make-parents path)
10+
(pp/pprint data (io/writer path))))
11+
12+
(defn vizualize-tree [root]
13+
(viz/view-tree (comp sequential? :children) :children
14+
root
15+
:node->descriptor (fn [n] {:label (:title n)})))
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,46 @@
1-
(ns tech.thomas-sojka.org-parser-tree.stratify
2-
(:require [clojure.string :as str]
3-
[clojure.zip :as z]))
4-
5-
(defmulti stratify (fn [_ {:keys [type]}] type))
6-
(defmethod stratify :head-line [org-tree headline]
7-
(let [previous-level (:level (z/node org-tree))
8-
current-level (:level headline)]
9-
(cond
10-
(= previous-level current-level)
11-
(-> org-tree
12-
(z/insert-right (merge headline {:children []}))
13-
z/rightmost)
14-
:else
15-
(let [next (apply comp (repeat (+ (- previous-level current-level) (if (> previous-level current-level) 1 0))
16-
(if (> previous-level current-level) z/up z/down)))]
17-
(-> org-tree
18-
next
19-
(z/append-child (merge headline {:children []}))
20-
z/down
21-
z/rightmost)))))
22-
(defn edit [org-tree & args] (apply z/edit org-tree update args))
23-
24-
(defmethod stratify :list-item-line [org-tree list-item-line]
25-
(edit org-tree :list (fn [list] (if (coll? list) (conj list (:list-item list-item-line)) [(:list-item list-item-line)]))))
26-
(defn property [property-content-line]
27-
(let [[_ name value]
28-
(re-find
29-
#":(.*):\s(.*)"
30-
property-content-line)]
31-
(hash-map (keyword (str/trim name))
32-
(str/trim value))))
33-
(defmethod stratify :content-line [org-tree {:keys [content]}]
34-
(if (:drawer (z/node org-tree))
35-
(z/replace org-tree (update-in (z/node org-tree) [:drawer :node-properties] merge (property content)))
36-
(edit org-tree :content str content)))
37-
(defmethod stratify :drawer-begin-line [org-tree drawer-begin-line]
38-
(z/replace org-tree (assoc (z/node org-tree) :drawer {:name (:drawer drawer-begin-line)
39-
:node-properties {}})))
40-
(defmethod stratify :drawer-end-line [org-tree _]
41-
(let [node (z/node org-tree)]
42-
(z/replace org-tree (-> node
43-
(assoc (:name (:drawer node)) (:node-properties (:drawer node)))
44-
(dissoc :drawer)))))
45-
(defmethod stratify :default [org-tree _] org-tree)
46-
1+
(ns tech.thomas-sojka.org-parser-tree.stratify
2+
(:require [clojure.string :as str]
3+
[clojure.zip :as z]))
4+
5+
(defmulti stratify (fn [_ {:keys [type]}] type))
6+
(defmethod stratify :head-line [org-tree headline]
7+
(let [previous-level (:level (z/node org-tree))
8+
current-level (:level headline)]
9+
(cond
10+
(= previous-level current-level)
11+
(-> org-tree
12+
(z/insert-right (merge headline {:children []}))
13+
z/rightmost)
14+
:else
15+
(let [next (apply comp (repeat (+ (- previous-level current-level) (if (> previous-level current-level) 1 0))
16+
(if (> previous-level current-level) z/up z/down)))]
17+
(-> org-tree
18+
next
19+
(z/append-child (merge headline {:children []}))
20+
z/down
21+
z/rightmost)))))
22+
(defn edit [org-tree & args] (apply z/edit org-tree update args))
23+
24+
(defmethod stratify :list-item-line [org-tree list-item-line]
25+
(edit org-tree :list (fn [list] (if (coll? list) (conj list (:list-item list-item-line)) [(:list-item list-item-line)]))))
26+
(defn property [property-content-line]
27+
(let [[_ name value]
28+
(re-find
29+
#":(.*):\s(.*)"
30+
property-content-line)]
31+
(hash-map (keyword (str/trim name))
32+
(str/trim value))))
33+
(defmethod stratify :content-line [org-tree {:keys [content]}]
34+
(if (:drawer (z/node org-tree))
35+
(z/replace org-tree (update-in (z/node org-tree) [:drawer :node-properties] merge (property content)))
36+
(edit org-tree :content str content)))
37+
(defmethod stratify :drawer-begin-line [org-tree drawer-begin-line]
38+
(z/replace org-tree (assoc (z/node org-tree) :drawer {:name (:drawer drawer-begin-line)
39+
:node-properties {}})))
40+
(defmethod stratify :drawer-end-line [org-tree _]
41+
(let [node (z/node org-tree)]
42+
(z/replace org-tree (-> node
43+
(assoc (:name (:drawer node)) (:node-properties (:drawer node)))
44+
(dissoc :drawer)))))
45+
(defmethod stratify :default [org-tree _] org-tree)
46+
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
(ns hello-word.core
2+
(:require [clojure.zip :as z]
3+
[tech.thomas-sojka.org-parser-tree.core :refer [parse-tree]]
4+
[tech.thomas-sojka.org-parser-tree.stratify :refer [stratify]]
5+
[tech.thomas-sojka.org-parser-tree.transform :refer [transform]]))
6+
7+
(defmethod transform :keyword-line [[_ [_ keyword-key] [_ keyword-value]]]
8+
{:type :keyword-line
9+
:key keyword-key
10+
:value keyword-value})
11+
12+
(defmethod stratify :keyword-line [org-tree {:keys [key value]}]
13+
(z/replace org-tree (assoc (z/node org-tree) :keywords {(keyword key) value})))
14+
15+
(parse-tree "#+TAGS: WORK(w)
16+
* 2021")

0 commit comments

Comments
 (0)