don't wear a stache
…. Broke out some tests to be more explicit as well.
Removes the template_source and local_assignment_code methods and replaces them with #precompiled_template, #precompiled_preamble, and #precompiled_postamble methods. Template subclasses can hook in and provide template source generation at different levels. Line offset calculation is cleaned up a bit as well.
This should guarantee that method names never collide and also improves lookup performance, since the method name is generated once and then stored in a Hash. The downside is that generating the method name initially will be a bit slower since we bring in MD5 and sort the keys.
This branch adds support for fast, precompiled templates using a mixin module. Include the Tilt::CompileSite module in your scope objects to enable method based template compilation for source generating templates like ERB, Erubis, and Builder. Special thanks to Josh Peek, Magnus Holm, and Yehuda Katz for their input. See the following discussion for more info on this approach: http://tinyurl.com/yjj2z2x
Weird. It seems object_ids are reused before finalizers are triggered for the previous object with same id, so there's all kinds of spooky behavior with methods being removed immediately after others are added. Added a high frequency timestamp to the method names to make them more unique.