summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-01-23web: Deprecate add-methods.Arun Isaac
Functionally setting generic functions (like add-methods does) doesn't work since methods can still refer to the old generic function. The future of generic functions in the theming system is in doubt. It must be rethought out carefully. * tissue/web/themes.scm (add-methods): Delete function. * tissue/web/themes/default.scm (default-theme): Replace add-methods! with add-method.
2022-12-27document: Support symbol serialization and deserialization.Arun Isaac
* tissue/document.scm (object->scm, scm->object): Support symbols.
2022-12-27doc: Add identifiers to all chapters and sections.Arun Isaac
* doc/tissue.skb: Add identifiers to all chapters and sections.
2022-12-25git: Find git top level correctly even in bare repositories.Arun Isaac
* tissue/git.scm (git-top-level): Find git top level correctly even in bare repositories.
2022-12-25bin: Replace define* with define.Arun Isaac
* bin/tissue (load-config): Define using define instead of define*.
2022-12-25web: static: Build website from within temporary clone of repo.Arun Isaac
The build process may run code that expects files to be on the filesystem. Not all of this file accessing code is within tissue's control. Think arbitrary code in skribilo documents. So, we cannot always work around this by pointing file accesses into a bare git repository. * tissue/web/static.scm: Import (git). (build-website): Move into temporary clone of git repository before building files. (exporter): Use call-with-input-file instead of call-with-file-in-git.
2022-12-25web: static: Deprecate with-current-directory.Arun Isaac
with-current-directory is the exact same as call-with-current-directory from (tissue utils). * tissue/web/static.scm (with-current-directory): Delete function. (build-website): Replace with-current-directory with call-with-current-directory.
2022-12-25tissue: Deprecate #:project configuration parameter.Arun Isaac
The project name is not used anywhere now. If it is required, it should be passed through the lexical context of closures in the tissue configuration object. * tissue/tissue.scm (<tissue-configuration>)[project]: Delete field. (tissue-configuration-project): Delete function. (tissue-configuration): Remove project argument. * tissue.scm (tissue-configuration)[#:project]: Delete parameter. * tissue/web/static.scm (%project-name): Delete parameter. * bin/tissue (pull): Do not parameterize %project-name.
2022-12-25tissue: Deprecate #:web-css configuration parameter.Arun Isaac
CSS is now specified exclusively through the lexical context of closures in the tissue configuration object. * tissue.scm: Use (tissue web themes default). (%css, %engine): New variables. (tissue-configuration)[#:web-css]: Delete parameter. [#:web-search-renderer]: Pass %css to default theme. [#:web-files]: Pass %engine to gemtext-exporter and skribe-exporter. * tissue/tissue.scm (<tissue-configuration>)[web-css]: Delete field. (tissue-configuration-web-css): Delete function. (tissue-configuration): Remove web-css argument.
2022-12-25web: static: Introduce functional html engine customizer.Arun Isaac
* tissue/web/static.scm (engine-custom-set): New function. (html-engine): New public function. (gemtext-exporter, skribe-exporter): Use html-engine in default value of engine.
2022-12-25web: static: Allow customization of engine used in export.Arun Isaac
* tissue/web/static.scm (gemtext-exporter, skribe-exporter): Accept engine keyword argument.
2022-12-25web: static: Accept reader as a keyword argument.Arun Isaac
* tissue/web/static.scm (gemtext-exporter, skribe-exporter): Accept reader as a keyword argument, instead of as an optional argument.
2022-12-25web: Do not pass project configuration to theme.Arun Isaac
Parameters from the project configuration may be needed by the theme. But, these parameters should not passed as explicit parameters to the generic function of the theme. Instead, they should be passed implicitly through the lexical context of the generic methods. * tissue/web/server.scm (search-handler): Do not pass project to search renderer. * tissue/web/themes/default.scm: Do not import (tissue tissue). (default-theme): New public function. (make-head-renderer): New function. (render-sxml): Make private. Remove project parameter from all generic methods. * tissue/tissue.scm (tissue-configuration): Set default value of web-search-renderer to (default-theme) instead of render-sxml.
2022-12-25web: themes: Add functional way to define methods.Arun Isaac
* tissue/web/themes.scm: Import (srfi srfi-26). (add-methods): New function.
2022-12-25web: dev: Accept thunk to read project configuration.Arun Isaac
To the development server, pass a thunk to read project configuration instead of the project configuration itself. This allows us to hack on the project's tissue.scm without having to restart the development server to see changes. * bin/tissue (tissue-web-dev): Pass thunk to read project configuration instead of the project configuration itself. * tissue/web/dev.scm (handler, start-dev-web-server): Accept thunk to read project configuration instead of the project configuration itself.
2022-12-25web: Implement themes for the search page.Arun Isaac
We factor out all display related code to a theming module, and support powerful user customization of the theme thanks to generic functions. * tissue/commit.scm (document->sxml): Move to (tissue web themes default). * tissue/document.scm (document->sxml): Move to (tissue web themes default). * tissue/file-document.scm (document->sxml): Move to (tissue web themes default). * tissue/issue.scm (sanitize-string, document->sxml): Move to (tissue web themes default). * tissue/tissue.scm: Import (tissue web themes default). (<tissue-configuration>)[web-search-renderer]: New field. (tissue-configuration-web-search-renderer): New function. (tissue-configuration): Accept web-search-renderer argument. * tissue/web/server.scm: Import (oop goops) and (tissue web themes). Do not import (tissue document). (%css, make-search-page, search-handler): Move to (tissue web themes default). * tissue/web/themes.scm, tissue/web/themes/default.scm: New files. * Makefile (sources): Add $(top_level_module_dir)/web/themes/*.scm.
2022-12-24bin: Pass along entire project configuration object to servers.Arun Isaac
Themes should be free to access the entirety of the project configuration. It is impossible to predict which parts of the project configuration they will need. * bin/tissue (tissue-web, tissue-web-dev): Pass entire configuration object to start-web-server and start-dev-web-server respectively. * tissue/web/dev.scm: Import (tissue tissue). (handler, start-dev-web-server): Accept entire configuration object. * tissue/web/server.scm: Import (tissue tissue). (search-handler, start-web-server): Accept entire configuration object.
2022-12-24web: Move query string utilities.Arun Isaac
* tissue/web/server.scm (query-parameters, query-string): Move to ... * tissue/utils.scm: ... here. Import (ice-9 match) and (web uri).
2022-12-24bin: Expose new development web server.Arun Isaac
* bin/tissue: Import (tissue web dev). (tissue-web-dev): Run the new development web server. (main): Remove web-build command. (print-usage): Delist deprecated web-build command. Update synopsis of web-dev command. (tissue-web-build): Delete function.
2022-12-24dev: Implement development web server.Arun Isaac
* tissue/web/dev.scm: New file.
2022-12-24server: Factor out reusable parts into separate functions.Arun Isaac
The newly factored out functions will be used in the upcoming development web server. * tissue/web/server.scm (handler): Factor out reusable parts into ... (log-request, mime-type-for-extension, 404-response, search-handler, try-paths): ... new functions.
2022-11-28web: server: Do not prepend / to URI path.Arun Isaac
* tissue/web/server.scm (handler): Do not prepend / to URI path.
2022-11-28web: server: Serve path/index.html if path ends in /.Arun Isaac
* tissue/web/server.scm (handler): Serve path/index.html if path ends in /.
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-09-19guix.scm: Add dependencies.Arun Isaac
* guix.scm: Import autoconf and automake from (gnu packages autotools). Import gnu-gettext from (gnu packages gettext). Import guile-3.0 and guile-git from (gnu packages guile). Import guile-filesystem and guile-xapian from (gnu packages guile-xyz). Import (gnu packages skribilo) with a guix: prefix. (skribilo-latest): New variable. (tissue)[inputs]: Add guile-3.0, guile-filesystem, guile-git and guile-xapian. [propagated-inputs]: Add skribilo-latest.
2022-09-19guix.scm: Patch shebang in executable script.Arun Isaac
* guix.scm (tissue)[arguments]: Add patch-source-shebangs script.
2022-09-19guix.scm: Wrap tissue executable.Arun Isaac
* guix.scm (tissue)[arguments]: Import target-guile-effective-version from (guix build guile-build-system). Add wrap phase.
2022-09-19tissue.scm: Add CSS.Arun Isaac
* website/style.css: New file. * tissue.scm (#:web-files): Copy CSS to website. (#:web-css): Use it.
2022-09-19tissue.scm: Copy IBM Plex fonts to built website.Arun Isaac
* tissue.scm (#:web-files): Copy IBM Plex fonts.
2022-09-19bin: Print error message and exit on user-error conditions.Arun Isaac
This allows us to report fatal user errors and exit. * bin/tissue (main): Print error message and exit on user-error conditions.
2022-09-19bin: Error out if web-dev subcommand is not given a website directory.Arun Isaac
* bin/tissue (tissue-web-dev): Raise user error if not given a website-directory command-line argument.
2022-09-19bin: Define &user-error-condition.Arun Isaac
* bin/tissue (&user-error-condition): New condition type.
2022-09-19bin: Separate development and deployment subcommands in listing.Arun Isaac
* bin/tissue (print-usage): Separate development and deployment subcommands in listing.
2022-09-19bin: Clarify that web-dev serves both built website and issues.Arun Isaac
* bin/tissue (tissue-web-dev, print-usage): Clarify in the usage summary that web-dev serves both the built website and the issues.
2022-09-19bin: Deprecate tissue index subcommand.Arun Isaac
The index is built on all tissue subcommands. There is no need for a separate subcommand to build the index. Having a separate subcommand only complicates the command-line interface and confuses the user. * bin/tissue (tissue-index): Delete function. (print-usage): Unlist index subcommand. (main): Do not call tissue-index.
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-23bin: Add tissue web-dev subcommand.Arun Isaac
* bin/tissue (tissue-web-dev): New function. (print-usage): List the tissue web-dev subcommand. (main): Call tissue-web-dev.
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-23bin: Abstract out REPL listen code.Arun Isaac
* bin/tissue (start-repl): New function. (listen-repl-option): New variable. (tissue-web): Use listen-repl-option. Call start-repl.
2022-07-21bin: Add tissue web-build subcommand.Arun Isaac
* bin/tissue (tissue-web-build): New function. * bin/tissue (print-usage): List web-build subcommand. (main): Invoke tissue-web-build.
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-20bin: Do not print canonical paths when pulling.Arun Isaac
`tissue pull' may be run in CI with the logs getting published. It is better to not expose the canonical paths in such public logs. * bin/tissue (pull): Do not print canonical paths.