First Commit

- include basic rendering of Sass, Less, Stylus, CoffeeScript, HAML,
Jade, Markdown
- allow custom hooks for before & after render
- support rendering of bundles (folders containing files for
concatenation)
Decouple Builder from Middleware

- Request, Response, and Next are no longer passed into Builder
- Builder does not directly send any responses back to the client
EJS

- support EJS templates with .ejs or .ejs.html extension
Better Hooks

- options must specify “before” and “after” hooks separately
- match hooks based on content type OR filename ending (e.g. “.js”)
Paths

- paths allow rendering engines to locate libraries for mixing,
partials, etc.
- engines now accept (content, options, done)
- options argument must include filename, locals, and paths
- paths may be passed along directly from middleware layer and must be
absolute
Mime Lookups

- now determines which engine to use based on custom mime types
- earlier middleware can now be used to specify additional mime types
Swig

- add basic support for swig template language
- update test server to include a local  “test” variable
Divide Test Files

- keep HTML, CSS, and Javascript related tests in separate files
Custom Extensions

- middleware options now include a map for custom file extensions
- you can override the default behaviors of extensions using the map
- for example, you can make .html files render as swig templates
Track Included Files

- keep track of partials/layouts loaded via swig via Builder
- Builder now receives back
- Builder tracks request URL and saves for before/after hooks
- catch render errors directly within engines (jade, haml, els, etc.)
Track Content Type

- content type is now stored in and passed along by options
- hooks now can detect content type (i.e. text/html, text/css,
application/javascript)
Engines meet their Builder

- bump to version 0.0.3
- engines now can read and write to Builder freely
- remove pre-defined and generic options object
- this increases flexibility but removes per-engine sandbox
- hint public and private variables within Builder
- permit before/after hooks to transform local variables, track
included files, etc.
req.files

- store files in request object
- rename includes to files in Builder
- also, disable swig caching
Always send content as a Buffer
Add ReadMe and License
Pass data through Request

- request object used to track local variables, included files, and
library paths
- render and hooks now receive Request rather than Builder
- this allows middleware executing later to learn what Compile has
discovered