summaryrefslogtreecommitdiff
path: root/ennum.el
AgeCommit message (Collapse)Author
2022-08-14Rewrite many to many grouping using functional setters.Arun Isaac
* ennum.el (ennum-assoc-delete, ennum-assoc-set, ennum-assoc-prepend): New functions. * ennum.el (ennum-many-to-many-group-by): Use ennum-assoc-append instead of mutating the result association list.
2020-08-03Include file name in hash computation.Arun Isaac
Prior to this, files of different name but same content would be indistinguishable and cause trouble. * ennum.el (ennum--file-hash): Include file name in hash computation.
2020-08-03Print better log messages.Arun Isaac
* ennum.el (ennum-intern, ennum-publish-feed, ennum-publish-image, ennum-copy): Print log messages. (ennum-eval): Do not print "skipping build" messages. It is too verbose.
2020-08-03Use output-html-file argument passed to ennum-export-post.Arun Isaac
Prior to this, the output-html-file was disregarded and recomputed unnecessarily. * ennum.el (ennum-export-post): Use output-html-file argument, instead of recomputing it.
2020-08-03Use closures instead of ennum-exp objects.Arun Isaac
The lexical environment of a closure can capture all inputs to an expression. Earlier we were capturing some of these inputs using the inputs slot of an ennum-exp object. Capturing dynamically scoped global variables is a different matter, and is not addressed by this commit. * ennum.el (ennum-exp): Delete type. (ennum--rewrite-inputs): Delete macro. (ennum-eval): Deal with closures not ennum-exp objects. (ennum-store-item-union, ennum-publish-post, ennum-publish-generic, ennum-publish-feed, ennum-publish-image, ennum-publish-copy): Pass inputs as lexically bound variables of a closure, rather than as ennum-exp inputs.
2020-08-03Disentangle index page generation expressions.Arun Isaac
* ennum.el (ennum-publish-index): Publish each page as a separate ennum expression. Make them separate functions to avoid closure capture. (ennum-publish-index-page, ennum-publish-index-home): New functions. (ennum-publish): Concatenate return value of ennum-publish-index.
2020-08-03Replace ennum--expand-relative with ennum--file-join.Arun Isaac
* ennum.el (ennum--file-join): New function. (ennum--expand-relative): Delete function. (ennum-posts, ennum-publish-generic, ennum-publish-image, ennum-publish-link, ennum-publish): Replace ennum--expand-relative with ennum--file-join.
2020-08-02Pass post object in info.Arun Isaac
* ennum-html.el (ennum-html-inner-template): Use translations from post object. (ennum-html-find-link): New function. (ennum-html-link): Use post titles and video posters from post object. * ennum.el (ennum-export-post): Pass post object as :ennum-posts in info.
2020-08-02Pass post titles in info.Arun Isaac
* ennum-html.el (ennum-html-link): Handle post links as a special case. (ennum-html-export-post): Use post link description received as argument. When description is nil, do not attempt to read source files to find the post title. * ennum.el (ennum-export-post): Pass post titles as :ennum-post-titles in info.
2020-08-02Embed post link target title in post-link object.Arun Isaac
* ennum.el (ennum-post-set-links, ennum-post-link-set-target-title): New functions. (ennum-post-link): New type. (ennum--read-post): Create post-link object when applicable. (ennum-posts): Set target-title slot of post-link objects.
2020-08-02Create a functional setter for ennum-post-translations.Arun Isaac
* ennum.el (ennum-make-functional-setter): New macro. (ennum-post-set-translations): New function. (ennum-posts): Use ennum-post-set-translations.
2020-08-02Embed video poster in link object.Arun Isaac
* ennum.el (ennum-post): Remove video-posters slot. (ennum-video-link): New type. (ennum--read-post): Create video link when applicable. Do not set video-posters in post object. (ennum-publish-post, ennum-publish-link): Use ennum-video-link-poster.
2020-08-02Introduce ennum-link type.Arun Isaac
* ennum.el (ennum-link): New type. (ennum--read-post, ennum-publish-link): Use ennum-link type.
2020-08-02Deduplicate ennum-html export.Arun Isaac
* ennum.el (ennum-export-post): New function. (ennum-publish-post, ennum--feed-entry): Invoke ennum-export-post.
2020-08-01Embed list of translations into post object.Arun Isaac
* ennum.el (ennum-post): Add ennum-copy-post copier and translations slot. (ennum-posts): Set translations slot. (ennum-publish-post): Publish a single post, not a translation group of posts. (ennum-publish): Pass posts to ennum-publish-post one by one, without grouping. * ennum-html.el (ennum-html-inner-template): Use translations alist.
2020-07-31Switch from ennum-operation to ennum-exp.Arun Isaac
ennum-exp is a simple embedded domain specific language to express blog publishing in a more expression oriented form. * ennum.el (ennum-operation): Delete type. (ennum--do-operation): Delete function. (ennum-intern, ennum--hash, ennum-file-hash, ennum--file-hash, ennum--set-file-modes-recursively, ennum--rewrite-inputs, ennum-eval, ennum-store-item-union): New functions. (ennum-exp): New macro. (ennum-setting): Introduce :store setting. (ennum-publish-post, ennum-publish-generic, ennum-publish-index, ennum-publish-feed, ennum--feed-entry, ennum-publish-image, ennum-publish-copy, ennum-publish-link, ennum-publish): Switch from ennum-operation to ennum-exp.
2020-07-31Delete ennum-publish-static-file.Arun Isaac
ennum-publish-static-file is a duplicate of ennum-publish-copy. * ennum.el (ennum-publish-static-file): Delete function.
2020-07-31Use ennum-mkdir-p in ennum-copy.Arun Isaac
* ennum.el (ennum-copy): Use ennum-mkdir-p.
2020-07-31Specify post title explicitly in the link description.Arun Isaac
Index generation uses the html backend, and cannot access the special post link of the ennum-html backend. * ennum.el (ennum-publish-index): During index generation, specify post title explicitly in the link description.
2020-07-31Leave new temporary directory permissions unchanged.Arun Isaac
* ennum.el (ennum-with-temporary-directory): Leave new temporary directory permissions unchanged.
2020-07-31Introduce ennum-directory-files.Arun Isaac
ennum-directory-files is a more convenient around directory-files and directory-files-recursively. * ennum.el (ennum-directory-files): New function. (ennum-posts, ennum-video-poster, ennum-publish): Use ennum-directory-files. (ennum-publish-generic): Accept files that are not prefixed by other-files-directory.
2020-07-31Define ennum-blog variable.Arun Isaac
* ennum.el (ennum-blog): Define variable.
2020-07-31Pass video posters through info.Arun Isaac
* ennum.el (ennum-post): Add video-posters slot. (ennum--read-post): Set video-posters slot when creating post object. (ennum-publish-post, ennum--feed-entry): Pass video-posters in info communication channel. * ennum-html.el (ennum-html-link): Handle video links differently from normal org links since they require access to the info communication channel. Get poster from info instead of reading the source tree directly. (ennum-export-video): Delete function. (org-link-parameters): Unregister ennum-export-video.
2020-07-31Prefix :translations in info with ennum-.Arun Isaac
* ennum.el (ennum-publish-post): Prefix :translations in info communication channel with ennum-. * ennum-html.el (ennum-html-inner-template): Use :ennum-translations instead of :translations.
2020-07-18Rename ennu to ennum.Arun Isaac
* ennu.el: Rename to ... * ennum.el: ... this. Replace all instances of ennu with ennum. * ennu-html.el: Rename to ... * ennum-html.el: ... this. Replace all instances of ennu with ennum. * ennu-image.el: Rename to ... * ennum-image.el: ... this. Replace all instances of ennu with ennum.