diff options
-rw-r--r-- | README.org | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/README.org b/README.org new file mode 100644 index 0000000..a11adbb --- /dev/null +++ b/README.org @@ -0,0 +1,37 @@ +#+TITLE: ennum + +ennum is a purely functional Org Mode based static blog generator written in Emacs Lisp. It is intended as a complete blog-specific replacement for the org-publish system. + +* Features +- minimal rebuilds +- purely functional +- resize and optimize images for file size +- tag posts +- generate post listings (of all posts, and filtered by tag) +- generate Atom feeds +- translate posts to multiple languages +- tangle source blocks embedded in posts + +* Features in detail +** Minimal rebuilds +When an input file did not change, it is not rebuilt. This saves a lot of time and makes the "edit-compile-debug" cycle really fast. + +** Purely functional +ennum is purely functional in that the built output always corresponds to the current source. The built output is guaranteed to not contain artifacts from previous builds. For example, when a source file is deleted, the corresponding output file is also deleted in the next rebuild. + +Note that ennum's purely functional nature is not achieved by merely deleting the output directory and creating a new one in its place. That would be an enormous waste of time and a violation of the "minimal rebuilds" principle. Instead ennum uses what we call "ennum expressions"---a caching and dependency tracking system inspired by the [[https://guix.gnu.org/][Guix]] store and [[https://arxiv.org/abs/1709.00833][G-expressions]]. + +** Resize and optimize images for file size +ennum resizes and optimizes images in posts so that pages load quicker and are light on network use. + +** Generate post listings and Atom feeds +ennum generates index pages listing all posts, and posts filtered by tag. + +** Multiple languages +ennum understands posts translated to multiple languages. It automatically links to translations of a post, and generates separate post listings for different languages. + +** Tangle source blocks embedded in posts +ennum lets you tangle source blocks embedded in posts and write them to a separate source file. Thus, you can make the source code in your blog available for download without having to duplicate your code in two places. + +** Pure Emacs Lisp +ennum is written purely in Emacs Lisp [fn::except for the image processing code, for which we shell out to external command-line tools]. No need to pull up your terminal emulator or shell mode to rebuild your blog. |