The glossary in
by Monday, May 9, 2016

One of the features Frank McPherson asked for in his feedback post was a glossary. He uses the feature in Fargo, my Dropbox-based outliner, but it actually goes back way before that. It was a feature of the earliest web CMSes I did in the mid-late 90s. (Again, why the product is called 1999.)

I already had the glossary in 1999 almost completely done, so I put in a couple of hours over the weekend to finishing and testing the feature and now in v0.89g, it's released.

The basic idea

Think of the glossary as a two-column table with strings in each column. 

When we "run" text through the glossary, we look for occurrences of strings in the left column and replace them with strings in the right column.

It's like the glossary in the back of a book, but for writing. 

It's useful for links that might change, as an example. So I could create a glossary element that's triggered by "Wikipedia" and when it appears in text, it's replaced with Wikipedia. That way in the unlikely event that the site moves, I can just change the definition in the glossary and rebuild. 

It's also good for saving work! ;-)

How it works in 1999

There's a new setting in the Misc panel that lets you enter the URL of an OPML file that contains your glossary. Here's a screen shot of the panel, as I have it set up on my blog.

This is a link to the OPML file it points to.

When 1999 launches, it reads the file, and uses it to compile the glossary table. Then whenever it you save a post it passes the text through the glossary, doing the substitutions it calls for. 

The OPML file is organized so that the top-level items are the terms (the left column) and the text subordinate to the items are the definitions (the right column). 

When you edit the OPML file, you have to reload to get the changes to show up in 1999. It isn't watching the file for changes. 

You also have to reload the app when you first enter the URL in the Settings dialog.

You can use Fargo to edit your OPML files. It's possible at some point we will have a glossary editor inside, as we have one for templates and menus. 

Glossary substitution is case-insensitive.