chris blogs

March 2005

22mar2005 · Vooly

This is one of these ideas I wished I had about a century ago, because the “world” would have been much better then. I’m talking about my new metalanguage. “Oh, no!”, I hear you scream… “Not another metalanguage! Isn’t it enough we already have XML and YAML and OGML and RLML?”

Yes, you have. And they solve their job. XML is a ok format for writing websites and manuals, but it sucks for RPC, for example. YAML is a nice format for config files, but I don’t like indenting all my text. Every metalanguage was made with a reason, and that (at least, should) be the part where it’s really good at. For the other parts, most languages suck.

Vooly surely is no difference here. It was made by me to allow for expressing hierarchical, as free-form as possible data with low cost of markup (almost no escaping), userfriendlyness (you can learn the language in 2 minutes, I promise) and extremely (not to say trivial) implementation. I already wrote two implementations of it in Ruby, one Push-API and the same again for pulling. Both are about 30 lines of pretty Ruby. :-)

Vooly is soo damn easy, everyone can pick it up in two minutes. A Vooly document is a text file, for example, let’s markup an recipe:

Cuba Libre
- 2 ounces Rum (White)
- 3/4 ounce Lime Juice
- 5 ounces Cola
Put lime juice and a twist of lime into highball glass. Add
rum and fill with cola.

Now, let’s markup the different parts of the document, by surrounding them with << and >>:

<<
  << Cuba Libre >>
  <<
     << 2 ounces Rum (White) >>
     << 3/4 ounce Lime Juice >>
     << 5 ounces Cola >>
  >>
  <<
     << Put lime juice and a twist of lime into highball glass. >>
     << Add rum and fill with cola. >>
  >>
>>

Now, add information about what’s between the tags by writing it directly after the tags where this makes sense:

<<recipe
  <<drink Cuba Libre >>
  <<ingredients
     << 2 ounces Rum (White) >>
     << 3/4 ounce Lime Juice >>
     << 5 ounces Cola >>
  >>
  <<steps
     << Put lime juice and a twist of lime into highball glass. >>
     << Add rum and fill with cola. >>
  >>
>>

That’s it, you’re done! See, Vooly is soo easy. :-)

With this knowledge, you can apply Vooly to just about everything. Make your own Vooly-RSS, Vooly-RFC822, Vooly-DocBook today! (Don’t forget converters to take over the world :-))

Heck, you can even embed XML or YAML if that makes sense to get your job done. There shouldn’t be any escaping problems, simply stuff your things in there. (I need to further specify what happens if you want to insert <<, a rather rare sequence of chars in ordinary text.)

Ruby libraries to do cool stuff with Vooly are soon to come.

NP: Bob Dylan—Tomorrow Is A Long Time

Copyright © 2004–2013