In master, Visi is now a literate programming language.

Visi models (models are descriptions of business logic as well as sources of input and sinks to output) are valid GitHub flavored Markdown documents.  Any code blocks (delimited by a line starting with ```) are considered Visi code and are parsed according to the Visi grammar.  Anything outside the ``` blocks are regular Markdown.

Why is Literate Programming important?

Programs and models and other things that instruct computers how to work are stories.  They are stories we tell our future selves or other people.  Part of the story is the description of what the computer is supposed to do, but another, much more important part of the story, is why.  Why did we write the code?  Why should someone care about the code?  Why did we make certain choices in the code?

Literate Programming allows us to write a story and wrap that story about the business logic of our program.

What are the two main complaints about spreadsheets?  They are hard to audit and they are hard to understand.  Visi is a language that replaces the row/column relationship language of Excel-style spreadsheets with a more natural, descriptive way of associating input to output, defining the logic that transforms input to output.  Wrapping prose *around* the model rather than embedding the prose in comments in a program or a model makes the prose the focus of the eye and hopefully the focus of the authors thoughts.

Literate Visi allows the generation of documentation, HTML or PDF or otherwise, directly from the models themselves.  They are the documentation.

I'm working on the test harness for Visi so that as the language evolves, the tests will evolve as well.  The harness will read models from a directory and those will be the test.  But, BUT, BUT they will also be documentation for the language itself.  Visi's tests will turn directly into HTML that will serve as the language's natural tests and documentation.

I'm stoked about this!