Why do I keep seeing people that use #Emacs #OrgMode with an external static website generator, usually Hugo, to make a website? Is there something wrong with the org-publish subsystem that comes with org-mode? It seems to work well to me.

Or maybe there's nothing wrong per se with org-publish, but Hugo is somehow better? I can't really imagine Hugo is more extensible than org-publish, but maybe it's better in some other way?

@oantolin Well, I haven't used any #staticwebpage generator except my own: #lazyblorg.

The reason why I programmed my own generator was that I could not get the features I wanted to have anywhere else:

- blog posts anywhere I like them: among my tasks/projects/contacts/...
- absolute minimal effort to write a post
- that includes also being able to include images with just mentioning their file name
- navigation via #tags and #TagTrees (combination of different tags - very cool!)
- different types of pages: temporal, persistent, ...
- different Atom #feeds for the users: all articles, just one tag, all articles that combine 2 tags

It just feels "home" to me.

More: https://github.com/novoid/lazyblorg

#orgmode #Emacs #orgdown #staticwebpagegenerator #publicvoit

@publicvoit I think you could have implemented that using org-publish and it probably would have been less work than implementing lazyblorg, but I do know you prefer writing Python to Emacs Lisp, which of course is a valid preference. And while I think using org-publish as a base would have helped a little bit, you definitely would still have had to write a bunch of code: the features you are after don't come with org-publish out of the box.

Let me ask something else: has having to adapt to two different org parsers given you any trouble? Probably not, since you control the dialect of Org recognized by lazyblorg, so any departures from Emacs's Org are just conventions you follow personally anyway (like requiring blank lines to separate some constructs).

@oantolin Maybe. I might have thought about re-using org-publish for parts. Maybe there was too much post-processing which made it easier to be be able to control the whole process.

Re your question: what do you mean by 2 parsers? My own na茂ve Python parser + pypandoc? It's either/or. So no issue.

Yes, the one empty line between two syntax elements is a result of my na茂ve parser. It was actually a quick hack that turned out working good enough to that I didn't want to start all over again. 馃様

@publicvoit By 2 parsers I meant your Python parser used in lazyblorg and Org Mode's own parser (which normal org mode commands use).
@oantolin I defined a subset of the syntax of Org-mode. Similar to the idea of orgdown1: https://gitlab.com/publicvoit/orgdown/-/blob/master/doc/Orgdown-Levels.org
doc/Orgdown-Levels.org 路 master 路 Karl Voit / Orgdown 路 GitLab

Orgdown (in short 鈥淥D) is a lightweight markup language similar to Markdown but it鈥檚 consistent, easy to learn, simple to type even without tool-support, and it is based...

GitLab
@publicvoit Do you sometimes forget exactly what subset lazyblorg uses and accidentally write a blog post that lazyblorg cannot process?

@oantolin Nope.

All previously unknown syntax elements go to pypandoc as a fallback. This is really capable.

So I do handle the most common and/or easiest syntax elements with my own Python code. Lists, AFAIR tables and unknown elements go to pypandoc.

This way, lazyblorg is able to deal with pretty much anything you'll throw at it as long as there is an empty line between two different syntax elements.