diff --git a/lib/enumerable/vivid/buffer.ex b/lib/enumerable/vivid/buffer.ex new file mode 100644 index 0000000..414b716 --- /dev/null +++ b/lib/enumerable/vivid/buffer.ex @@ -0,0 +1,23 @@ +defimpl Enumerable, for: Vivid.Buffer do + alias Vivid.Buffer + + @moduledoc """ + Implements the Enumerable protocol for Buffer. + """ + + @doc """ + Returns the number of pixels in a buffer. + """ + def count(%Buffer{buffer: buffer}), do: {:ok, Enum.count(buffer) } + + @doc """ + Returns whether a colour is a member of a buffer. + This is mostly useless, but it's part of the Enumerable protocol. + """ + def member?(%Buffer{buffer: buffer}, colour), do: {:ok, Enum.member?(buffer, colour) } + + @doc """ + Reduce the buffer into an accumulator. + """ + def reduce(%Buffer{buffer: buffer}, acc, fun), do: Enumerable.List.reduce(buffer, acc, fun) +end \ No newline at end of file diff --git a/mix.exs b/mix.exs index 2d2c3fc..f3d4e23 100644 --- a/mix.exs +++ b/mix.exs @@ -3,7 +3,7 @@ defmodule Vivid.Mixfile do def project do [app: :vivid, - version: "0.1.0", + version: "0.1.1", description: description, elixir: "~> 1.3", build_embedded: Mix.env == :prod,