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.