Doxhooks lets you abstract away the content and maintenance of files in your project. Doxhooks has three main classes of abstractions: Resources (files), preprocessors and preprocessor mini-languages.
- Give names to files and directories, instead of hard-coding their paths.
- Refer to URLs by the identity of the resources, instead of hard-coding the URLs.
- Give a resource a default URL (based on its output path) or override the default.
- Mangle a URL and output filename with a custom fingerprint of the resource content.
- Update one resource, or all resources, or all resources that depend on a given input file.
- Specify the order in which resources are updated.
- Mix and match resources with preprocessors and preprocessor mini-languages.
- Create customised preprocessors by extending and overriding other preprocessors, including the built-in general-purpose lexical preprocessor.
- Use different types of preprocessors for different types of resources in the same project.
- Customise the delimiters of the preprocessor directives and variables.
- Apply character encodings and newline conventions to the output files.
- Replace HTML character references with Unicode characters, other character references, etc.
- See a preprocessor ‘stack trace’ when an error occurs in a preprocessor directive or variable.
- Evaluate preprocessor variables recursively and late.
- Mix and match preprocessors with preprocessor mini-languages.
- Create customised preprocessor mini-languages by extending and overriding other preprocessor mini-languages, including the built-in preprocessor mini-language.
- Use different types of preprocessor mini-languages for different types of resources in the same project.
- Share data that is common to different resources by using preprocessor variables and the inheritance hierarchy of your preprocessor mini-languages.
- Create your own common or domain-specific keywords in addition to the built-in keywords:
seta variable, raise an
erroror print a
ifa condition is true.
- Represent boolean output values in lowercase (
true) or start-case (
True), or exclude boolean as a valid output type.