README.md

# Bowfish

A fun, positional pipe operator >>> for when piping to the first arg just won't cut it.

Bowfish is implemented as a macro. It makes use of the Macro.pipe function called by the standard Elixir forward pipe operator.

## Usage

```elixir
import Bowfish

# --- a trivial example ---
"bowfish" >>> String.upcase(:_)
# "BOWFISH"

# --- piping to functions ---
defmodule Test do
  def div(a, b), do: a / b
end

4 >>> Test.div(1, :_)
# 0.25

# --- using with an anonymous function ---
add = fn (a, b) -> a + b end

5 >>> add.(1, :_)
# 6

# --- using in a chain ---
add = fn (a, b, c) -> a + b + c end

1 >>> add.(1, 0, :_) >>> Integer.to_string(16, :_)
# "10000"

# --- using with the forward pipe operator ---
add = fn (a, b, c) -> a + b + c end

2 
>>> add.(1, :_, 40) 
|> Integer.to_string() 
|> String.codepoints()
|> Enum.reverse()
>>> Enum.concat(["1","2"], :_)
# ["1","2","3","4"]
```

## Installation

Available in hex. The package can be installed as:

  1. Add bowfish to your list of dependencies in `mix.exs`:

        def deps do
          [{:bowfish, "~> 0.1.0"}]
        end

  2. Import bowfish in your module.

## License

This really doesn't merit one... but in case that's some kind of sticking point: MIT.

## Never stop piping... never stop...