Yeah... what happens is that the code in the *.tube files expects to
be run within a specific context - that is, when a particular var
(*pipe*) is set. I use the Clojure Var feature (thread local, stack-
based reference type) to ensure that it is available when parsing a
*.tube file. You can see this at line 13 of engine.clj - the actual
*.tube file is loaded on line 16, within the binding.
I should probably go through and put in catches that re-throw
meaningful exceptions that will help say whether exceptions happened
in the parsing, the engine, or in which component.
Thanks,
-Luke