about summary refs log tree commit diff stats

CHICKEN-SCRATCH — heredocs for CHICKEN

written by Case Duckworth off an idea by evhan

Licensed under BSD-3. See COPYING for details.

CHICKEN has “Multiline string constants with embedded expressions” syntax, which is basically shell here-doc syntax but schemier and with a real programming langugage to embed. evhan’s beaker tool (which is great, btw) uses this facility to do a quick-and-dirty templating for wiki generation. I realized that I could use the same facility for the same kind of heredoc-style templating I have done in various other SSGs like unk and vienna, but with scheme. Thus, CHICKEN-SCRATCH was born.

Dependencies

Usage

Library: chicken-scratch

expand-string is the main entry point to this module. It takes a string and returns a string with all #( ... ) forms expanded according to the CHICKEN rules. expand-port is a port version of expand-string.

To enable truly invisible definitions within the expanded string, the def macro is provided which performs a set! on its variables, then returns a string guaranteed not to be in the input string, which is then filtered out in the expanded string.

Finally, to enable CHICKEN-SCRATCH to be used in a shebang, if the first line of the input string begins with #!, it’s deleted from the input.

Executable: chicken-scratch

Run chicken-scratch FILENAME ... on the command line. In a future version I’ll include a few compile flags and the ability to read from standard input.

Installation

Running make in this directory will call chicken-install -n, leaving you with a chicken-scratch binary. Run make install to install the program to $PREFIX, or make chicken-install to run chicken-install without the -n flag. Or, you know, run those commands yourself.