summaryrefslogtreecommitdiff
path: root/tissue/issue.scm
diff options
context:
space:
mode:
Diffstat (limited to 'tissue/issue.scm')
-rw-r--r--tissue/issue.scm25
1 files changed, 22 insertions, 3 deletions
diff --git a/tissue/issue.scm b/tissue/issue.scm
index 00fcbcf..8d1d11c 100644
--- a/tissue/issue.scm
+++ b/tissue/issue.scm
@@ -28,7 +28,8 @@
#:use-module (ice-9 match)
#:use-module (ice-9 regex)
#:use-module (tissue utils)
- #:export (issue
+ #:export (%aliases
+ issue
issue-file
issue-title
issue-creator
@@ -49,6 +50,9 @@
post-relative-date
issues))
+(define %aliases
+ (make-parameter #f))
+
(define-record-type <issue>
(issue file title creator created-date created-relative-date
last-updater last-updated-date last-updated-relative-date
@@ -128,6 +132,18 @@ return #f."
(time-monotonic->date
(make-time time-monotonic 0 timestamp)))
+(define (resolve-alias name aliases)
+ "Resolve NAME against ALIASES, a list of aliases. ALIASES should be
+in the form of the argument of the same name to `tissue-configuration'
+in (tissue tissue). If no alias is found, NAME is returned as such."
+ (cond
+ ((find (cut member name <>)
+ aliases)
+ => (match-lambda
+ ((canonical-name _ ...) canonical-name)
+ (() name)))
+ (else name)))
+
(define (file-details file)
"Return a hashtable of details extracted from gemini FILE."
(let ((result (make-eq-hashtable)))
@@ -162,7 +178,9 @@ return #f."
;; their keys.
(for-each (match-lambda
(((or 'assign 'assigned) . values)
- (hashtable-append! result 'assigned values))
+ (hashtable-append! result 'assigned
+ (map (cut resolve-alias <> (%aliases))
+ values)))
(((or 'keywords 'severity 'status 'priority 'tags 'type) . values)
(hashtable-append! result 'keywords values))
(_ #t))
@@ -205,7 +223,8 @@ return #f."
(tmap (match-lambda
((index . line)
(let* ((alist (call-with-input-string line read))
- (author (assq-ref alist 'author))
+ (author (resolve-alias (assq-ref alist 'author)
+ (%aliases)))
(date (assq-ref alist 'author-date))
(relative-date (assq-ref alist 'author-relative-date)))
(when (zero? index)