summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Sima <ben@bsima.me>2020-05-09 22:18:17 -0700
committerBen Sima <ben@bsima.me>2020-05-09 22:18:17 -0700
commitfd721e94532ba7f912d13706b3c03056345952e6 (patch)
tree7c273db16e0e8dc4de7f1702e50e2e368bbd18b5
parent1542c85458dcd58bb6d40f1f8d3917f80298ddd2 (diff)
Index titles
Also don't overwrite srfi-1 stuff, and added an re module.
-rw-r--r--Alpha/Core.scm22
-rw-r--r--re.scm7
-rw-r--r--z.scm36
3 files changed, 38 insertions, 27 deletions
diff --git a/Alpha/Core.scm b/Alpha/Core.scm
index 997bc4f..192a74f 100644
--- a/Alpha/Core.scm
+++ b/Alpha/Core.scm
@@ -2,9 +2,8 @@
#:use-module ((ice-9 format))
#:use-module ((system vm program))
#:use-module ((ice-9 rdelim) #:select (read-line))
- #:use-module ((srfi srfi-1) #:select (any))
- #:export (fmt printf pr prn
- first ffirst second rest last butlast
+ #:use-module (srfi srfi-1)
+ #:export (fmt printf pr prn rest last butlast
true? false? some? empty?
-> ->> fn /. curry comp
repeat
@@ -29,13 +28,6 @@
acc
(foldl f (f acc (car lst)) (cdr lst))))
-(define fold foldl)
-
-(define (unfold f init pred)
- (if (pred init)
- (cons init '())
- (cons init (unfold f (f init) pred))))
-
(define (sum lst) (fold + 0 lst))
(define (product lst) (fold * 1 lst))
@@ -62,19 +54,9 @@
(define (empty? a)
(equal? a '()))
-(define (first a)
- "Return the first item in the collection."
- (if (pair? a)
- (car a)
- '()))
-
(define (ffirst a)
(first (first a)))
-(define (second a)
- "Returns the next item after the first."
- (cadr a))
-
(define (rest a)
"Returns a list of the items after the first."
(cdr a))
diff --git a/re.scm b/re.scm
new file mode 100644
index 0000000..b4f3dca
--- /dev/null
+++ b/re.scm
@@ -0,0 +1,7 @@
+#!r6rs
+(library (re (0))
+ (export match)
+ (import (rnrs base (6))
+ (ice-9 regex))
+ (define (match s pat)
+ (string-match pat s)))
diff --git a/z.scm b/z.scm
index 0267a7d..6e8972a 100644
--- a/z.scm
+++ b/z.scm
@@ -1,5 +1,8 @@
(import (Alpha Core))
-(import (prefix (Alpha String) string/))
+(import (prefix (Alpha String) string.))
+(import (srfi srfi-1))
+(import (only (srfi srfi-19) date->string current-date))
+(import (prefix (re) re.))
;; general functions
@@ -9,7 +12,7 @@
(define (os.path.expanduser path)
(let ([home (getenv "HOME")])
- (string/replace path "~" home)))
+ (string.replace path "~" home)))
(import (only (srfi srfi-1) remove))
(define (rm ls item)
@@ -49,8 +52,8 @@
(define (path->id fname)
"Given a path, parse out the node id."
(-> fname
- (string/replace ".md" "")
- (string/replace *zdir* "")
+ (string.replace ".md" "")
+ (string.replace *zdir* "")
(string->id)))
(define (id->path id)
@@ -86,12 +89,31 @@
(format file "tags:\n")
(display "---\n" file))))
+(define (read-node id)
+ (readlines (id->path id)))
+
(define (cat-node id)
- (prn (readlines (id->path id))))
+ (prn (read-node id)))
;; Indexing
+(define (get-title id)
+ (-> id
+ read-node
+ (re.match "title: ([^\n]*)")
+ (match:substring 1)))
+
+(define (index-titles)
+ (fold
+ (lambda (node ls) (acons (get-title node) node ls))
+ '()
+ (list-nodes)))
+
+(define (get-by-title title)
+ (let ([index (index-titles)])
+ (assoc title index)))
+
(comment
- (define index-titles)
+ (define index-tags)
(define index-links)
- (define index-tags))
+ )