Without this patch, parse-commit will unconditionally use a faillure
continuation which simply returns `#f`. This may be undesirable in
some situations. As such, this commit allows (optionally) passing
a custom failure continuation as a second argument. If none is passed
the old behavior is used, hence this commit doesn't cause any backwards
incompatible API changes.
See #822
While testing a `(chibi parser)`-based parser I noticed that
`parse-string` is the only provided parser combinator which uses a list,
instead of a string, as a failure reason. It is not explicitly
documented but since all other standard parser combinator use a string
for the error reason I assume this to be a bug and have adjusted the
`parse-string` combinator accordingly in this commit.
In `servlet-respond', the server defaults to Content-Type "text/html;
charset=UTF-8" for extensions that don't appear in
`mime-type-from-extension'. This meant that CSS files, JavaScript
files, and various types of image files were getting the wrong
Content-Type, which was fine when they were served directly, but
caused clients to close the connection when they were loaded over
HTTP/1.1, which can deliver back-to-back resources on the same
connection.
Sort the types in the `mime-type-from-extension' list now that it is
longer. It's still not long enough for the order to be material for
performance.
This restores third-party (ab)users of the Chibi macro system such
as in https://gist.github.com/baguette/2632464, while allowing us
to break those uses in more interesting ways.
It also keeps the core slightly smaller (both in C and Scheme)
and speeds up the macro expansion process.
Add some newlines and a comment to improve readability.
Use local string port instead of parameterizing current-output-port.
Pass symbol 'BEGIN to tell test reporter that evaluation of a test
starts. Adapt documentation of current-test-reporter accordingly.
Use define-opt instead of case-lambda.
Fix standard test runner so that its output is properly indented and
lines are properly terminated.
Refactor standard test runner so that it is possible to plug in another
runner with different output.