Coding 2024-05-10
Okay, I've done some investigation, and I have a fair idea of what won't work for what I'm trying to do here. The key thing I figured out is that marimo doesn't really work for putting together a conlang grammar, not the way I'd like.
See, one of the things that I was interested in was just shoving together some widgets to handle fancy table stuff like filtering and sorting by column, and it turns out that "interactive widgets that depend on running Python code for their functionality" doesn't really have a great way forward in marimo. Too many tradeoffs that I don't really like. That said, I don't see any problem with continuing to use it for the optional interactive IPA thing.
Here's what I'm thinking I will do:
- Put together a basic scenario to make sure I understand how to use Lexurgy
- Get some hands-on experience with tup, because it seems to have some features that Ninja doesn't, and I'm curious
- Investigate pandoc's support for including files using reStructuredText
- See about generating reStructuredText tables
- Try to get pandoc to emit fancy table manipulation javascript when building HTML
My current idea about how this all ends up is to have some code that ultimately generates the lexicon (this can get pretty fancy in various ways), and possibly other sections. This feeds into a single reStructuredText file via includes. Somewhere along the line, some javascript libraries get linked into the page. The reStructuredText file gets converted to, for example, HTML and PDF, using pandoc. All of this gets glued together by tup if I can get it working, and Ninja if I can't get tup working. (I'm hopeful that tup works well, but until I've got more experience with it, I've got to allow for the possibility that there's some dealbreaker. Like how right now, marimo's HTML export puts all of the stuff specific to a given notebook into a single line of messed-up-looking text. Like, it renders mostly fine-ish, but it lacks the features I'd like.)
Anyway, that's planning done, now I just want to relax for a bit before getting to bed.
Good night.