Adds module to parse arguments passed to mediate
This commit is contained in:
16
lib/options.ex
Normal file
16
lib/options.ex
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
defmodule Options do
|
||||||
|
|
||||||
|
def parse([]), do: defaults
|
||||||
|
def parse(args) do
|
||||||
|
Enum.reduce(args, defaults, fn(arg, acc) ->
|
||||||
|
Map.merge(acc, parse_argument(arg))
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
def parse_argument("--clear-screen"), do: %{ clear_screen: true}
|
||||||
|
def parse_argument(_), do: %{}
|
||||||
|
|
||||||
|
defp defaults do
|
||||||
|
%{ clear_screen: false}
|
||||||
|
end
|
||||||
|
end
|
||||||
18
test/options_test.exs
Normal file
18
test/options_test.exs
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
defmodule OptionTest do
|
||||||
|
use ExUnit.Case, async: true
|
||||||
|
|
||||||
|
test "has default options" do
|
||||||
|
options = Options.parse([])
|
||||||
|
refute Map.fetch!(options, :clear_screen)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "override clearing of screen" do
|
||||||
|
options = Options.parse(["--clear-screen"])
|
||||||
|
assert Map.fetch!(options, :clear_screen)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "ignores unknown options" do
|
||||||
|
options = Options.parse(["--foo"])
|
||||||
|
refute Map.fetch!(options, :clear_screen)
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user