diff options
author | Arun Isaac | 2022-07-13 00:33:23 +0530 |
---|---|---|
committer | Arun Isaac | 2022-07-13 01:40:08 +0530 |
commit | 887b608122b660ab5df3f89784af5511497b4872 (patch) | |
tree | fb88b523f9244d7b8a6aa347b261d1bc412098aa /tissue/file-document.scm | |
parent | 3d0dcdd2358b7373506b7928ef32761a80b3fbf9 (diff) | |
download | tissue-887b608122b660ab5df3f89784af5511497b4872.tar.gz tissue-887b608122b660ab5df3f89784af5511497b4872.tar.lz tissue-887b608122b660ab5df3f89784af5511497b4872.zip |
issue: Move <issue> posts slot into <file-document>.
We move the posts slot of <issue> into the <file-document> parent
class as a commits slot. We also no longer store the creator,
created-date, last-updater, last-updated-date of <issue> in
slots. Rather, we compute them on-demand from the commits slot.
* tissue/file-document.scm: Import (rnrs hashtables), (srfi
srfi-1), (srfi srfi-26), (git), (tissue commit) and (tissue person).
(<file-document>)[commits]: New slot.
(file-document-creator, file-document-created-date,
file-document-last-updater, file-document-last-updated-date): New
public functions.
(read-gemtext-document): Initialize commits slot.
* tissue/issue.scm (file-modification-table-for-current-repository):
Move to (tissue file-document).
(<issue>)[creator, created-date, last-updater, last-updated-date,
posts]: Delete slots.
(<post>): Delete class.
(document-term-generator, print, print-issue-to-gemtext,
document->sxml): Use file-document-creator,
file-document-created-date, file-document-last-updater,
file-document-last-updated-date and file-document-commits instead of
issue-creator, issue-created-date, issue-last-updater,
issue-last-updated-date and issue-posts.
(read-gemtext-issue): Use read-gemtext-document. Do not initialize
creator, created-date, last-updater and last-updated-date slots.
Diffstat (limited to 'tissue/file-document.scm')
-rw-r--r-- | tissue/file-document.scm | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/tissue/file-document.scm b/tissue/file-document.scm index 621e9bb..112c7f2 100644 --- a/tissue/file-document.scm +++ b/tissue/file-document.scm @@ -17,20 +17,45 @@ ;;; along with tissue. If not, see <https://www.gnu.org/licenses/>. (define-module (tissue file-document) + #:use-module (rnrs hashtables) #:use-module (rnrs io ports) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) #:use-module (srfi srfi-171) + #:use-module (git) #:use-module (oop goops) #:use-module (term ansi-color) + #:use-module (tissue commit) #:use-module (tissue document) #:use-module (tissue git) + #:use-module (tissue person) #:use-module (tissue utils) #:use-module (xapian xapian) #:export (<file-document> file-document-path + file-document-commits + file-document-creator + file-document-created-date + file-document-last-updater + file-document-last-updated-date read-gemtext-document)) (define-class <file-document> (<document>) - (path #:accessor file-document-path #:init-keyword #:path)) + (path #:accessor file-document-path #:init-keyword #:path) + ;; List of <commit> objects, oldest first. + (commits #:accessor file-document-commits #:init-keyword #:commits)) + +(define file-document-creator + (compose doc:commit-author first file-document-commits)) + +(define file-document-created-date + (compose doc:commit-author-date first file-document-commits)) + +(define file-document-last-updater + (compose doc:commit-author last file-document-commits)) + +(define file-document-last-updated-date + (compose doc:commit-author-date last file-document-commits)) (define-method (document-type (document <file-document>)) (next-method)) @@ -81,6 +106,10 @@ a list of search results." ,@snippet)) (list))))) +(define file-modification-table-for-current-repository + (memoize-thunk + (cut file-modification-table (current-git-repository)))) + (define (read-gemtext-document file) "Read gemtext document from FILE. Return a <file-document> object." (make <file-document> @@ -96,4 +125,11 @@ a list of search results." port))) ;; Fallback to filename if document has no title. file) - #:path file)) + #:path file + #:commits (map (lambda (commit) + (make <commit> + #:author (resolve-alias (signature-name (commit-author commit)) + (%aliases)) + #:author-date (commit-author-date commit))) + (hashtable-ref (file-modification-table-for-current-repository) + file #f)))) |