summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-07-19search: Parse boolean terms in search query.Arun Isaac
* tissue/search.scm: Import (ice-9 match). (make-query-parser): New function. (%prefixes, %boolean-prefixes, query-parser): New variables. (parse-query): Use query-parser.
2022-07-19document: Index boolean terms.Arun Isaac
Metadata that will be used in boolean filtering should be indexed as boolean terms, not as free text. This also results in the happy coincidence that we no longer need a specialized document-term-generator generic method for <issue> and <commit>. * tissue/document.scm (document-boolean-terms): New public generic function. (document-term-generator): Use document-boolean-terms. * tissue/issue.scm (document-boolean-terms): New generic method. (document-term-generator): Delete generic method. * tissue/commit.scm (document-boolean-terms): New generic method. (document-term-generator): Delete generic method.
2022-07-19document: Store serialized date as value in Xapian document.Arun Isaac
* tissue/document.scm (document-recency-date): Declare public generic function. (document-term-generator): Store serialized date in slot 0 of Xapian document. * tissue/file-document.scm (document-recency-date): New generic method. * tissue/commit.scm (document-recency-date): New generic method.
2022-07-13document: Use string-blank?.Arun Isaac
* tissue/document.scm (document-snippet-source-text): Use string-blank?.
2022-07-13search: Match all on blank query, not null query.Arun Isaac
* tissue/search.scm: Import (tissue utils). (parse-query): Match all on blank query, not null query.
2022-07-13utils: Add string-blank? utility.Arun Isaac
* tissue/utils.scm (string-blank?): New function.
2022-07-13web: static: Do not log output directory name when building.Arun Isaac
The output directory is usually a randomly named temporary directory. Logging it is leaking an implementation detail. * tissue/web/static.scm (build-website): Do not log output directory name.
2022-07-13document: Tolerate unbound slots when serializing.Arun Isaac
* tissue/document.scm (object->scm): Drop unbound slots, do not raise an error.
2022-07-13document: Remove unnecessary import of (rnrs hashtables).Arun Isaac
* tissue/document.scm: Do not import (rnrs hashtables).
2022-07-13issue: Move <issue> posts slot into <file-document>.Arun Isaac
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.
2022-07-13file-document: Fix typo in read-gemtext-document docstring.Arun Isaac
* tissue/file-document.scm (read-gemtext-document): Fix typo reade with read in docstring.
2022-07-13document: Move <file-document> code to a new (tissue file-document).Arun Isaac
* tissue/document.scm: Do not import (srfi srfi-171). (<file-document>, document-type, document-id-term, document-text, document-term-generator, print, document->sxml, read-gemtext-document): Move to (tissue file-document). (document-id-term, document-text, print, document->sxml): Declare as generic functions. * tissue/file-document.scm: New file. * tissue/issue.scm, bin/tissue: Import (tissue file-document).
2022-07-11issues: Implement incremental search.Arun Isaac
* issues/incremental-search.gmi: New file.
2022-07-11issues: Implement search suggestions.Arun Isaac
* issues/search-suggestions.gmi: New file.
2022-07-11issues: Sort by date.Arun Isaac
* issues/sort-by-date.gmi: New file.
2022-07-11web: server: Summarize number of results by type.Arun Isaac
* tissue/web/server.scm (%css)[.search-results-statistics, .search-results-statistics li, .search-results-statistics a, .current-search-type]: New rules. * tissue/web/server.scm (make-search-page): Summarize number of results by type. (query-string, matches): New functions. (handler): Pass the number of matches by type to make-search-page. * issues/add-links-to-filter-documents-by-type.gmi: Close issue.
2022-07-11search: By default, search all documents not just issues.Arun Isaac
* tissue/search.scm (parse-query): By default, search all documents not just issues.
2022-07-09commit: Index commit messages too.Arun Isaac
* tissue/commit.scm: New file. * tissue/web/server.scm (%css)[.search-result-commit]: Add COMMIT marker. * bin/tissue: Import (tissue commit). * tissue.scm (#:indexed-documents): Add commits. * issues/index-commit-messages.gmi: Close issue.
2022-07-09bin: Move indexing document type into document-term-generator.Arun Isaac
* bin/tissue (index): Move indexing document type into document-term-generator generic function. * tissue/document.scm (document-term-generator): Index document type.
2022-07-09git: Use commit author date, not committer date.Arun Isaac
* tissue/git.scm (commit-author-date): New public function. (commit-date): Delete function. * tissue/issue.scm (read-gemtext-issue): Use commit-author-date instead of commit-date.
2022-07-09document: Make snippet source text extraction a generic function.Arun Isaac
* tissue/document.scm (document-snippet-source-text): New generic method. (document-html-snippet): Use document-snippet-source-text.
2022-07-09document: Prefix ID term with document type.Arun Isaac
We need to prefix the ID term in order to distinguish between future document types (such as the commit document type) that may not be based off a file. * tissue/document.scm (document-id-term): Prefix ID term with "file." indicating the document type.
2022-07-09issue: Move person related functions to (tissue person).Arun Isaac
* bin/tissue: Import (tissue person). * tissue/issue.scm: Import (tissue person). (%aliases, resolve-alias, index-person!): Move to (tissue person). * tissue/person.scm: New file.
2022-07-09document: Generalize document-type method of <document> parent class.Arun Isaac
* tissue/document.scm (document-type): Generalize generic method of <document> to apply to most child classes. Pass on generic method of <file-document> to that of <document>. * tissue/issue.scm (document-type): Remove generic method for <issue> class.
2022-07-09bin: Rename run-web subcommand to web.Arun Isaac
* bin/tissue (tissue-run-web): Rename to tissue-web, and update synopsis in usage summary. (print-usage, main): Rename run-web to web.
2022-07-09bin: Deprecate tissue web subcommand.Arun Isaac
* bin/tissue (tissue-web): Delete function. (print-usage): Unlist web subcommand. (main): Do not call tissue-web.
2022-07-09issue: Hyphenate tag in search query if it has spaces.Arun Isaac
* tissue/issue.scm (document->sxml): Hyphenate tag in search query if it has spaces.
2022-07-09bin: Make indexed documents a list of document objects.Arun Isaac
This simplifies the interface obviating the need for an <indexed-document> type. * bin/tissue: Do not import (srfi srfi-9). (<indexed-document>): Delete type. (index): Expect indexed documents to be a list of document objects. * tissue.scm (#:indexed-documents): Pass in a list of document objects, instead of a list of <indexed-document> objects.
2022-07-09Makefile: Run tests using a for loop.Arun Isaac
If guile is passed all test files at once, it only runs the first one. * Makefile (check): Run tests using a for loop.
2022-07-09tissue: Delay index-documents field.Arun Isaac
* tissue/tissue.scm: Import (ice-9 match). (<tissue-configuration>)[indexed-documents]: Rename getter to delayed-tissue-configuration-indexed-documents. (tissue-configuration-indexed-documents): New function. (pairify): New function. (tissue-configuration): Delay #:indexed-documents argument too. * tests/tissue.scm: New file.
2022-07-08tissue.scm: Remove html extension from web URIs.Arun Isaac
* tissue.scm (#:indexed-documents): Remove html extension from web URIs.
2022-07-08web: server: Serve html files even without the html extension.Arun Isaac
* tissue/web/server.scm (handler): Serve html files even if they don't have the html extension.
2022-07-08utils: Add string-remove-suffix utility.Arun Isaac
* tissue/utils.scm (string-remove-suffix): New public function.
2022-07-08issues: Support issue templates.Arun Isaac
* issues/issue-templates.gmi: New file.
2022-07-08issues: Add Gemini interface.Arun Isaac
* issues/gemini-interface.gmi: New file.
2022-07-08issue: Allow specifying tags with keyword and tag singulars.Arun Isaac
* tissue/issue.scm (file-details): Allow specifying tags with keyword and tag singulars.
2022-07-08issues: Search by date.Arun Isaac
* issues/search-by-date.gmi: New file.
2022-07-08issues: Add links to filter documents by type.Arun Isaac
* issues/add-links-to-filter-documents-by-type.gmi: New file.
2022-07-08issues: Request indexing commit messages.Arun Isaac
* issues/index-commit-messages.gmi: New file.
2022-07-08issues: Request GitHub-like milestones.Arun Isaac
* issues/github-like-milestones.gmi: New file.
2022-07-08issues: Request Emacs interface.Arun Isaac
* issues/emacs-interface.gmi: New file.
2022-07-07issues: Request internationalization.Arun Isaac
* issues/internationalization.gmi: New file.
2022-07-07issues: Request pagination of search results in the web UI.Arun Isaac
* issues/paginate-search-results.gmi: New file.
2022-07-07issue: Parse known keys in list lines even if they are long.Arun Isaac
We drop the restriction that values in key-value pairs should be 2 words or less. Instead, if the key is a known key such as "keywords:", "tags:" or "status:", we always accept it as a key. * tissue/issue.scm (file-details): Parse known keys in list lines even if they are long. * tests/issue.scm ("Parse keywords even if they are long"): New test.
2022-07-07tests: Add tests.Arun Isaac
* Makefile (GUILE, tests): New variables. (check): Run tests. * tests/issue.scm: New file.
2022-07-07issue: Comment on list-line->alist cond ladder.Arun Isaac
* tissue/issue.scm (list-line->alist): Comment on cond ladder.
2022-07-07issue: Rename hashtable-append! to hashtable-prepend!.Arun Isaac
Even hashtable-append! was prepending, not appending. We change its name to suit. * tissue/issue.scm (hashtable-append!): Rename to hashtable-prepend!. (file-details): Call hashtable-prepend! instead of hashtable-append!.
2022-07-06website: Add home page.Arun Isaac
* website/index.skb: New file. * tissue.scm (#:web-files): Add index.html.
2022-07-06bin: Print out filenames when building website.Arun Isaac
* bin/tissue (pull): Print out filenames when building website.
2022-07-06bin: Allow everyone to read built website.Arun Isaac
* bin/tissue (pull): Allow everyone to read built website.