ISoDS R1

Over the last couple weeks, I’ve rewritten much of ISoDS to the point where it’s smaller, faster, better-looking, and has a few convenience features that were sorely missing from the original prototype - namely button shortcuts, a system for dynamically generating scenes from files (rather than hard-coding the layout of each scene), and - what I’m most proud of - something that I call SMUL or Sloppy MarkUp Language.

SMUL is the markup language used for creating scenes for ISoDS. Right now, it’s very primitive and modeled after MarkDown. Essentially, the SMUL parser reads the file (a *.txt file), and notes the first character on each line. If the line begins with #, it’s formatted as a title, if it begins with !, it’s formatted as the author name and so on. Any line that doesn’t begin with a special symbol is formed as a normal indented paragraph.

As it stands, SMUL has some shortcomings that I plan to address with a total reimplementation of it. Namely, it doesn’t strip whitespace around the special tokens, and any paragraphs must exist entirely on a single line, something that, as a Vim user, I kick myself for. In its current state, SMUL wasn’t meant to be anything more than a prototype for a parser, just to see what I could make. Still, it’s almost completely useable, which gives me great courage to see where I can take the next generation of the SMUL parser.

I won’t bother posting a full specification for SMUL right now, because the very next thing I’m going to do is completely tear it down and reinvent it. I don’t like MarkDown (even though I build this site with Hugo). My typesetter and markup language of choice has always been groff and its many devices along with the ms macro language. Therefore, in the next generation of SMUL, I plan to implement special tokens on separate lines, and have the parser collect the information after those tokens until it arrives at another token, and replacing newlines with normal whitespace as it does so, much like groff. This will also allow me to redo all those special tokens in a way that is more readable and makes more sense - something like .TL for title; .AU. for author and so on.