Some additional specs I'd like to see passing (I'll leave the implementation as an exercise to you!):

``` ruby

  context "expect { ... }.to #{matcher_method}(/regex/)" do
    it "passes if the block outputs a string to #{stream_name} that matches the regex" do
      expect { stream.puts 'food' }.to matcher(/foo/)
    end
    it "fails if the block does not output to #{stream_name}"
    it "fails if the block outputs a string to #{stream_name} that does not match"
  end

  context "expect { ... }.to #{matcher_method}(/regex/)" do
    # similar specs needed
  end

  context "expect { ... }.to #{matcher_method}(matcher)" do
    it "passes if the block outputs a string to #{stream_name} that passes the given matcher" do
      expect { stream.puts 'foo' }.to matcher(a_string_starting_with("f"))
    end
    # more specs needed (including failing examples)
  end

  context "expect { ... }.not_to #{matcher_method}(matcher)" do
    # similar specs needed
  end
```

To get these to pass you'll need to leverage the `Composable` mixin (already included in `BaseMatcher`):

* Use `values_match?` to do the string matching (it'll match exact strings, against a regex or against any matcher).
* Use `description_of` in failure messages to get good failure output when matchers are passed.