pine 0.1.0

Iterator over process line output
Documentation
# pine

[![Build Status](https://travis-ci.org/softprops/pine.svg?branch=master)](https://travis-ci.org/softprops/pine)

> line oriented process output

## apidocs

Find them [here](http://softprops.github.io/pine)

## usage

Rust's interface for working with [processes](https://doc.rust-lang.org/std/process/) is pretty great, but sometimes
you may wish to stream process output as it becomes available rather waiting for the process to exit before you can get
a handle on the total process [output](https://doc.rust-lang.org/std/process/struct.Output.html).

For these usecases, `pine` provides in iterator interface over lines of process output,
represented as enum of `pine::Line::StdOut` or `pine::Line::StdErr`. This is well suited for unix programs with emit
line-oriented output. A prerequite for your program to gain access
to these lines of output, is making sure your child process output is "piped" to your program. Rust's Command interface
makes this simple.

```rust
extern crate pine;
use std::process::{Command, Stdio};

let mut process = Command::new("/bin/sh")
    .arg("-c")
    .arg("curl https://www.howsmyssl.com/a/check")
    .stdout(Stdio::piped())
    .stderr(Stdio::piped())
    .spawn().ok().unwrap();
```

With the child's output piped to your program, you can then iterate over lines of output as
they are available. using the `pine::lines` function.

```rust
use pine::Line;
let lines = pine::lines(&mut process);
for line in lines.iter() {
    match line {
        Line::StdOut(line) => println!("out -> {}", line),
        Line::StdErr(line) => println!("err -> {}", line)
    }
}
```

Note `iter()` returns an iterator, which means any functions defined on iterator are
at your disposal for processing line output.

Doug Tangren (softprops) 2015