aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-08-15Track variables provided by certain features.Arun Isaac
We track the value of variables provided by certain features. This is so that we rebuild correctly when the user sets a configuration variable. * ennum.el: Require loadhist. (ennum-track-features, ennum-feature-hash): New variables. (ennum--feature-environment): New function. (ennum-exp): Include ennum-feature-hash in hash computation. (ennum-publish): Recompute ennum-feature-hash.
2022-08-15Do not double prepend directories to filenames.Arun Isaac
The return value of ennum-directory-files now includes the respective directories. There is no need to prepend the directory again. * ennum.el (ennum-posts, ennum-publish-generic): Do not prepend directory to filename.
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-03Expose paths to external utilities.Arun Isaac
* ennum-image.el (ennum-image-convert-path, ennum-image-identify-path, ennum-image-jpegtran-path, ennum-image-optipng-path): New variables. (ennum-image-resize-image): Use ennum-image-convert-path. (ennum-image-optimize-image): Use ennum-image-jpegtran-path and ennum-image-optipng-path. (ennum-image-get-width): Use ennum-image-identify-path.
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-08-01Prefix ennum-html symbols with ennum-html-.Arun Isaac
* ennum-html.el: Prefix all ennum-html symbols consistently with ennum-html-.
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.
2020-07-10Fix unbalanced parentheses due to an earlier partial commit.Arun Isaac
* ennu.el (ennu-server-start): Fix unbalanced parentheses.
2020-07-10Find file to serve using unhexed URI.Arun Isaac
* ennu.el (ennu-server-start): Find file to serve using unhexed URI.
2020-07-10Add comments to ennu-server-start.Arun Isaac
* ennu.el (ennu-server-start): Add comments.
2020-07-10Percent encode URIs.Arun Isaac
* ennu-html.el (ennu-html-link, ennu-export-post, ennu-export-thumbnail, ennu-export-video, ennu-export-static, ennu-export-tag): Percent encode URIs.
2020-07-09Remove file:// scheme from data attribute.Arun Isaac
SVG images displayed using the object element specify the URI in the data attribute. * ennu-html.el (ennu-html-link): Remove file:// scheme from data attribute as well, not just the src attribute.
2020-07-09Do not create tangle output in :posts-directory.Arun Isaac
An ennu-operation should not write anything in the input directories. Doing so is a recipe for data loss. * ennu.el (ennu-publish-post): Do not create tangle output in :posts-directory.
2020-07-08Set new directory permissions to 755.Arun Isaac
* ennu.el (ennu-with-temporary-directory): Set new temporary directory permissions to 755.
2020-03-15Check backend while exporting links.Arun Isaac
* ennu-html.el (ennu-export-post, ennu-export-thumbnail, ennu-export-video, ennu-export-static, ennu-export-tag): Export only if backend is either ennu-html or html.
2020-03-15Add post and image link follow functions.Arun Isaac
* ennu-html.el (ennu-follow): New macro. (ennu-follow-post, ennu-follow-image): New functions. Add respectively as :follow properties to post and image links in org-link-parameters.
2020-03-15Handle posts without summary metadata.Arun Isaac
* ennu.el (ennu--read-post): Export summary metadata only if it is non-nil.
2020-03-15Handle posts with no author metadata.Arun Isaac
* ennu.el (ennu--read-post): Export author metadata only if it is non-nil.
2020-03-15Consider org-export-with-author when exporting author.Arun Isaac
* ennu.el (ennu--feed-entry): Export author only when org-export-with-author is non-nil.
2020-03-15Handle image links with separate transcoder.Arun Isaac
* ennu-html.el (ennu-html-link): New function. (ennu-html): Add ennu-html-link transcoder. Remove :html-inline-image-rules option. (ennu-export-image): Delete function. Unregister it from org-link-parameters.
2020-03-13List tags only if present.Arun Isaac
* ennu-html.el (ennu-html-inner-template): List tags only if present.
2020-03-13Pass backend name to export functions.Arun Isaac
* ennu-html.el (ennu-html-inner-template): Pass backend name, not backend to export functions ennu-export-post and ennu-export-tag.
2020-03-13Use appropriate time locale when exporting pages.Arun Isaac
We set the appropriate time locale so that dates are exported in the correct language. * ennu.el (ennu-publish-post, ennu-publish-index): Set time locale according to language of the page. (ennu-setting): Introduce :locale-alist mapping languages to their locales. Use C locale for English pages as the default :locale-alist.
2020-03-13Log message when starting server.Arun Isaac
* ennu.el (ennu-server-start): Log message.
2020-03-13Deny requests to all html files except index.html.Arun Isaac
* ennu.el (ennu-server-start): Deny requests to all html files except index.html.
2020-03-13Provide ennu web server stop command.Arun Isaac
* ennu.el (ennu-server-start): New function.
2020-03-13Rename ennu-serve to ennu-server-start.Arun Isaac
* ennu.el (ennu-serve): Rename to ennu-server-start.
2020-03-13Simplify picking of default settings.Arun Isaac
* ennu.el (ennu-setting): Combine picking of all default settings into one clause.