wycats/rake-pipeline-web-filters — pull request #28 by ethul (2012-03-19 00:50:31+00:00)
Title: Implementing the TiltYieldingFilter

Hi All,

The purpose of this filter is to allow templates that adhere to the Tilt interface to yield to other templates, and be able to generate the final result from the nested structure. For example, if we have a slim template called `layout.slim` that we wanted to use as the layout for all of our HTML pages, it might look something like the following.

```jade
doctype html
html lang="en"
head
meta charset="utf-8"
title template
body
== yield
```

For completeness, say we have an `index.slim` as follows where we want to use the template above as our layout for the index.

```jade
h1 Hello
```

Using the `TiltYieldingFilter`, we can create an Assetfile to generate the desired result. For instance:

```ruby
require "slim"
require "rake-pipeline-web-filters"
output "public"
input "assets" do
match "{layout,index}.slim" do
tilt_yielding :yields_to => ["layout","index"], :output_name => "index.html"
end
end
```

Building the Assetfile above, the filter would run the `index.slim` through Tilt, and then pass that result as the value for the yield in the `layout.slim`.

I am sure there is a more elegant way to do this, but I couldn't manage to get it going with the current filters out there. Though, maybe I am missing something! Anyways, if you have any suggestions or want to accept the pull request, that would be great!

Best,
-Eric

PS - I was thinking to modify the existing `TiltFilter`, but the behavior of the `generate_output` is so different that I thought it was cleaner to just make a new filter. I'd be open to working in the functionality to `TiltFilter` though.