HomeSoftware Development Tools and Techniques

Mole

Current stable version is Mole 3.7
Chicken package by Felix Winkelmann.

Mole
SXML-based source code transformation tool which may be used as Literate Programming or Elucidative Programming tool, for souce code mining, Extreme Programming, and more. Mole reads the Scheme source code and parse it to the structural elements using ";====" as chapter separator, ";----" as section start, ";^^^^" as section end (if necessary) and "; " or "(" at the beginning of the "chunk". Chunk may be a function, macro, binding, etc. More documentation on the source code formatted style may be found in the Mole manual and in the paper "Scheme Program Source Code as a Semistructured Data" presented at 2nd Workshop on Scheme and Functional Programming.

Parsed data is represented as the SXML tree. A number of usefull reports may be generated querying this data. For example, Mole may be used as a tool for automated documentation generation. For such a purpose it works as a filter that reads documented Scheme code from the standard input and produces some kind of hypertext documentation in the HTML format to the standard output.
Mole-generated Mole documentation is an example of such a report.
It is generated with a command

mole <mole.scm >mole-doc.html
Use the command mole -h for usage instructions.

Previous Mole version 2.X reads the Scheme source code and parse it to the structural elements using ";;;" and ";;;;" comments in accordance with the Tutorial on Good Lisp Programming Style.
It may be also used for the selection of the specified functions from the source code file, etc. In the 3.X family this functionality is supported via custom reports.

Since version 3.4 Mole has an ability to attach a test suite to every function in documentation which has a test case in a test fixture file specified with --tf=file option. If the file name is omitted (an option --tf ), then file xtest-fixture.scm in subdirectory test is used. Test cases are XTester-compatible they has to be formatted as follows:

;@ name (optional)
; description (optional)
(xtest-assert
...
)
Please note the closing ) in first position (It's used to detect end of test case). If the name of the function tested may be not detected automatically, it has to be specified explicitly using
;@ some-name
comment before the test case. Processing of test fixture file may be controlled using ;$ comment as an explicit end of file. The rest of test fixture will be not processed by Mole. For every function with test suite clicable [+] is included in table of content.

HomeSoftware Development Tools and Techniques