summaryrefslogtreecommitdiff
path: root/tissue
AgeCommit message (Collapse)Author
2022-10-10tissue: Document #:indexed-documents as a list of <document> objects.Arun Isaac
* tissue/tissue.scm (tissue-configuration): Document #:indexed-documents as a list of <document> objects, not a list of <indexed-document> objects.
2022-10-10doc: Add documentation.Arun Isaac
* doc/skribilo.scm, doc/tissue.skb: New files. * tissue.scm (#:web-files): Add manual/dev/en/index.html.
2022-10-10tissue: Introduce define-lazy, an abstraction for lazy functions.Arun Isaac
* tissue/tissue.scm (define-lazy): New macro. (tissue-configuration): Define using define-lazy. (pairify): Delete function. (<tissue-configuration>[tissue-configuration-project, tissue-configuration-aliases, tissue-configuration-web-css]: Force values in getters.
2022-10-07tissue: Markup docstrings in texinfo syntax.Arun Isaac
* tissue/document.scm (slot-set): Markup docstring in texinfo syntax. * tissue/file-document.scm (read-gemtext-document): Markup docstring in texinfo syntax. * tissue/git.scm (git-tracked-files): Markup docstring in texinfo syntax. * tissue/issue.scm (read-gemtext-issue): Markup docstring in texinfo syntax. * tissue/tissue.scm (gemtext-files-in-directory): Markup docstring in texinfo syntax. * tissue/web/static.scm (exporter, copier, gemtext-exporter, skribe-exporter): Markup docstrings in texinfo syntax.
2022-07-24web: server: Use small caps for document type identifiers.Arun Isaac
* tissue/web/server.scm (%css)[.document-type]: Remove text-transform property. Set font-variant property.
2022-07-24web: server: Style document type identifiers without color.Arun Isaac
* tissue/web/server.scm (%css)[.document-type]: Remove font-size, padding, background-color and color properties. [.open-issue-document-type]: Remove background-color property.
2022-07-23web: server: Use default font size for search result titles.Arun Isaac
* tissue/web/server.scm (%css)[.search-result a]: Remove font-size property.
2022-07-23web: server: Remove special line height for search hints.Arun Isaac
* tissue/web/server.scm (%css)[.search-hint]: Remove line-height property.
2022-07-23git: Prefer reading checked out files.Arun Isaac
This generalization of call-with-file-in-git permits preferential reading of uncommitted changes, and reading of files external to the git repository. * tissue/git.scm (call-with-file-in-git): Prefer reading checked out files.
2022-07-21web: server: Be unaware of the state directory.Arun Isaac
The server should be unaware of the specifics of the state directory and its directory structure. It should be explicitly passed paths to all necessary directories. This way, the server can be repurposed for other applications such as the development web server---something that is coming soon in the subsequent commits. * tissue/web/server.scm (handler): Remove state-directory argument. Use directory paths in hosts argument. (start-web-server): Remove state-directory argument. Do not pass on state-directory to handler. * bin/tissue (tissue-web): Pass directory paths explicitly to start-web-server in hosts argument. Do not pass the removed state-directory argument.
2022-07-20web: server: Add article 'the' in handler docstring.Arun Isaac
* tissue/web/server.scm (handler): Add article 'the' in docstring.
2022-07-20utils: Allow specifying parent of temporary directory.Arun Isaac
* tissue/utils.scm (call-with-temporary-directory): Allow specifying directory in which to create temporary directory.
2022-07-20git: Add git-tracked-file? utility.Arun Isaac
* tissue/git.scm: Import (rnrs exceptions). (git-tracked-file?): New public function.
2022-07-20web: server: Respond to a static file request with a bytevector.Arun Isaac
If the response to a static file request is returned as a procedure, (web server) tries to interpret the response as text. This results in encoding errors with binary files. Fixing this is not worth the trouble since (tissue web server) is anyway not meant to serve large static files. Large static files should be served using a more capable server such as nginx. * tissue/web/server.scm (handler): Return response to a static file request as a bytevector, instead of as a procedure.
2022-07-19web: server: Move document type identifier into HTML.Arun Isaac
* tissue/commit.scm (document->sxml): Generate document type identifier. * tissue/file-document.scm (document->sxml): Generate document type identifier. * tissue/issue.scm (document->sxml): Generate document type identifier. * tissue/web/server.scm (%css): Style document type identifiers.
2022-07-19web: server: Remove rounded edges on search filters.Arun Isaac
* tissue/web/server.scm (%css)[.search-filter]: Remove rounded edges.
2022-07-19web: server: Remove rounded edges on tags.Arun Isaac
* tissue/web/server.scm (%css)[.tag a]: Remove rounded edges and reduce padding.
2022-07-19issue: Render tags as an unordered list.Arun Isaac
* tissue/issue.scm (document->sxml): Render tags as an unordered list. * tissue/web/server.scm (%css): Style list items with tag classes, not anchor tags.
2022-07-19web: server: Link to Xapian::QueryParser syntax documentation.Arun Isaac
* tissue/web/server.scm (make-search-page): Link to upstream Xapian::QueryParser syntax documentation.
2022-07-19file-document: Show created and last updated dates in listings.Arun Isaac
* tissue/file-document.scm (print, document->sxml): Show created and last updated dates in listings. * tissue/web/server.scm (%css): Put DOC identifier before metadata, not before title.
2022-07-19web: server: Parse provided search query only once.Arun Isaac
* tissue/web/server.scm (matches): Accept parsed search query. (handler): Parse provided search query only once.
2022-07-19search: Sort by date on strictly boolean queries.Arun Isaac
* issues/sort-by-date.gmi: Close issue. * tissue/search.scm (term-ref, query-terms-every): New functions. (boolean-query?): New public function. (search-fold): Sort by date on strictly boolean queries. * tissue/web/server.scm (handler): Sort by date on strictly boolean queries.
2022-07-19utils: Add string-contains? utility.Arun Isaac
* tissue/utils.scm (string-contains?): New public function.
2022-07-19issue: Quote tags with spaces instead of hyphenating them.Arun Isaac
* tissue/issue.scm (document->sxml): Quote tags with spaces instead of hyphenating them.
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-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-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-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-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-08issue: Allow specifying tags with keyword and tag singulars.Arun Isaac
* tissue/issue.scm (file-details): Allow specifying tags with keyword and tag singulars.