Age | Commit message (Collapse) | Author |
|
* tissue/web/server.scm (mime-type-for-extension): Handle files
without extension.
* tests/web/server.scm: New file.
|
|
* tissue/issue.scm (file-details): Ignore preformatted blocks.
* tests/issue.scm ("Ignore preformatted block"): New test.
* issues/ignore-preformatted-blocks-in-gemtext-parser.gmi: Close
issue.
|
|
* tissue/issue.scm (file-details): Allow checkboxes without a space.
* tests/issue.scm ("Allow checkboxes without a space"): New test.
* issues/allow-checkboxes-without-a-space.gmi: Close issue.
|
|
* tissue/skribilo.scm (document-node): Check if node has identifier
before comparing that identifier.
|
|
Functions called by call-with-file-in-git may expect to read files
directly off the filesystem. These functions are not all within the
user's control and cannot be rewritten to do otherwise. It is more
robust to provide a filesystem checkout of the git repository like
these functions expect. In this commit, we deprecate
call-with-file-in-git and replace calls to it with
call-with-input-file. These invocations have been arranged such that
they all happen at the top level of a repository checkout.
* tissue/git.scm (call-with-file-in-git): Delete function.
* .dir-locals.el (scheme-mode): Unregister it.
* bin/tissue (tissue-show, load-config),
tissue/file-document.scm (file-text, read-gemtext-document),
tissue/issue.scm (read-gemtext-issue): Replace call-with-file-in-git
with call-with-input-file.
(pull, tissue-web): Call load-config from the top level of a
repository checkout.
|
|
* tissue/web/dev.scm (handler): Explain why we pass in a project
thunk.
|
|
Now that snippet source texts are interred into the xapian index, the
web server does not need a repository checkout.
* bin/tissue (tissue-web): Do not temporarily checkout repositories
being served.
* tissue/web/server.scm (handler): Do not change into repository
directory.
* tissue/git.scm (call-with-temporary-checkouts): Delete function.
* .dir-locals.el (scheme-mode): Unregister it.
|
|
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.
|
|
* tissue/commit.scm (document-snippet-source-text): Explain use of
commit-body.
|
|
* tissue/skribilo.scm (document-snippet-source-text): New method.
* issues/skribilo-fragment-snippets-need-code-from-repo.gmi: New
issue.
|
|
* tissue/git.scm (call-with-temporary-checkout): Create temporary
checkout in temporary directory, not in current directory.
|
|
Files in the repository may be read. So, we must change into a
checkout of the repository when handling requests.
* tissue/web/server.scm (handler): Change to repository directory when
handling requests.
|
|
* tissue/git.scm (call-with-temporary-checkout,
call-with-temporary-checkouts): New public functions.
* .dir-locals.el (scheme-mode): Set scheme-indent-function of
call-with-temporary-checkout and call-with-temporary-checkouts to 1.
|
|
* tissue/issue.scm: Do not export index-issue.
|
|
Names of people as non-boolean since it may be required to match them
partially. Think searching for "arun" when the full name is "Arun
Isaac".
* tissue/issue.scm (document-boolean-terms): Remove creator, last
updater and assigned terms.
(document-term-generator): New method.
* tissue/search.scm (%boolean-prefixes): Move creator, lastupdater and
assigned to ...
(%boolean-prefixes): ... here.
|
|
* tissue/web/server.scm (start-web-server): Clean up socket file when
Unix sockets are used.
|
|
* tissue/git.scm (commit-deltas): Rename to ...
(commit-file-changes): ... this. Return list of pairs mapping old
files to new files.
(file-modification-table): Use commit-file-changes instead of
commit-deltas. Adapt to new return value.
* tests/git.scm: New file.
* .dir-locals.el (scheme-mode): Set scheme-indent-function for
with-variable and with-variables.
|
|
* tissue/web/server.scm (log-request): Log complete request URI, not
just the path.
|
|
* tissue/web/static.scm (build-website): Expect to be at the top level
of the repository to be exported.
* bin/tissue (pull): Create a temporary clone of the repository and
change to it before calling build-website.
|
|
* tissue/web/dev.scm (handler): Allow files to shadow the search page.
* tissue/web/server.scm (handler): Allow files to shadow the search
page.
|
|
* tissue/skribilo.scm: New file.
|
|
* tissue/issue.scm: Do not import (git).
|
|
* tissue/file-document.scm (commits-affecting-file): New public
function.
(read-gemtext-document): Use commits-affecting-file.
|
|
Earlier, the document type returned was "file-document". It only
seemed to work because xapian split them into two terms—"file" and
"document".
* tissue/file-document.scm (document-type): Return "document".
* tissue/issue.scm (document-type): New generic method.
|
|
Earlier, the document type returned was "file-document". It only
seemed to work because xapian split them into two terms—"file" and
"document".
* tissue/file-document.scm (document-type): Return "document".
|
|
* tissue/commit.scm (document-id-term, document-recency-date): Refer
to metasyntactic variable COMMIT, not DOCUMENT.
|
|
We already have the mset from enquire-mset.
* tissue/search.scm (search-fold): Do not use
MSetIterator-mset-get. Reuse mset from enquire-mset.
|
|
The gemtext exporter is just a skribe exporter with different
defaults.
* tissue/web/static.scm (gemtext-exporter): Express in terms of
skribe-exporter.
|
|
* tissue/search.scm (search-fold): Limit to 1000 search results by
default.
* tissue/web/server.scm (search-handler): Limit to 1000 search results
by default.
|
|
* issues/allow-checkboxes-without-a-space.gmi: New file.
* tissue/issue.scm (file-details): Add TODO note.
|
|
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.
|
|
* tissue/document.scm (object->scm, scm->object): Support symbols.
|
|
* tissue/git.scm (git-top-level): Find git top level correctly even in
bare repositories.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
* 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.
|
|
* tissue/web/static.scm (gemtext-exporter, skribe-exporter): Accept
engine keyword argument.
|
|
* tissue/web/static.scm (gemtext-exporter, skribe-exporter): Accept
reader as a keyword argument, instead of as an optional argument.
|
|
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.
|
|
* tissue/web/themes.scm: Import (srfi srfi-26).
(add-methods): New function.
|
|
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.
|
|
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.
|
|
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.
|
|
* tissue/web/server.scm (query-parameters, query-string): Move to ...
* tissue/utils.scm: ... here. Import (ice-9 match) and (web uri).
|
|
* tissue/web/dev.scm: New file.
|
|
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.
|
|
* tissue/web/server.scm (handler): Do not prepend / to URI path.
|
|
* tissue/web/server.scm (handler): Serve path/index.html if path ends
in /.
|