diff options
author | Arun Isaac | 2023-01-29 16:23:45 +0000 |
---|---|---|
committer | Arun Isaac | 2023-01-29 16:46:38 +0000 |
commit | 8516e5d0f5b64c681d31efa2944bb9a9de32dbbc (patch) | |
tree | e8def557954f95796cb419ada71a7ed5346533c2 /tissue/skribilo.scm | |
parent | d5adbcf983bb2d83fd46041ad3226dd8912266a6 (diff) | |
download | tissue-8516e5d0f5b64c681d31efa2944bb9a9de32dbbc.tar.gz tissue-8516e5d0f5b64c681d31efa2944bb9a9de32dbbc.tar.lz tissue-8516e5d0f5b64c681d31efa2944bb9a9de32dbbc.zip |
document: Inter snippet source text into the xapian index.
We store snippet source text in a slot of the <document> class thus
interring into the xapian index. This allows us to render search
snippets using only the xapian index without referring back to the git
repository.
* tissue/document.scm (<document>)[snippet-source-text]: New slot.
* tissue/document.scm (document-snippet-source-text): Delete method.
(document-html-snippet): Remove blank lines from snippet source text
before generating a snippet.
* tissue/commit.scm (document-snippet-source-text): Delete method.
(repository-commits): Initialize snippet-source-text.
* tissue/skribilo.scm (fragment-text): New function.
(document-fragment): Initialize snippet-source-text.
(document-text): Use fragment-text.
(document-snippet-source-text): Delete method.
* tissue/file-document.scm (file-text): New function.
(document-text): Use file-text.
(read-gemtext-document): Initialize snippet-source-text.
* tissue/issue.scm (read-gemtext-issue): Initialize
snippet-source-text.
* issues/skribilo-fragment-snippets-need-code-from-repo.gmi: Close
issue.
Diffstat (limited to 'tissue/skribilo.scm')
-rw-r--r-- | tissue/skribilo.scm | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/tissue/skribilo.scm b/tissue/skribilo.scm index d0c90ba..b17b30d 100644 --- a/tissue/skribilo.scm +++ b/tissue/skribilo.scm @@ -47,6 +47,14 @@ (call-with-input-file file (cut evaluate-ast-from-port <> #:reader (make-reader reader-name))))) +(define (fragment-text file identifier reader-name) + "Return the full text of skribilo fragment in @var{file} identified by +@var{identifier} using reader named by @var{reader-name}." + (call-with-output-string + (cut ast->text + (document-node file identifier reader-name) + <>))) + (define* (document-fragment file identifier #:key (reader-name 'skribe)) "Return a @code{<skribilo-fragment>} object describing node identified by @var{identifier} in @var{file} read using reader named by @@ -58,7 +66,8 @@ by @var{identifier} in @var{file} read using reader named by #:path file #:commits (commits-affecting-file file) #:identifier identifier - #:reader-name reader-name)) + #:reader-name reader-name + #:snippet-source-text (fragment-text file identifier reader-name))) (define-method (document-id-term (fragment <skribilo-fragment>)) "Return the ID term for skribilo @var{fragment}." @@ -89,16 +98,6 @@ output to @var{port}." (define-method (document-text (fragment <skribilo-fragment>)) "Return the full text of skribilo @var{fragment}." - (call-with-output-string - (cut ast->text - (document-node (file-document-path fragment) - (skribilo-fragment-identifier fragment) - (skribilo-fragment-reader-name fragment)) - <>))) - -;; We temporarily disable snippets for skribilo fragments until -;; issues/skribilo-fragment-snippets-need-code-from-repo.gmi is fixed. -(define-method (document-snippet-source-text (fragment <skribilo-fragment>)) - "Return the source text for FRAGMENT from which to extract a search -result snippet." - "") + (fragment-text (file-document-path fragment) + (skribilo-fragment-identifier fragment) + (skribilo-fragment-reader-name fragment))) |