Etna protocol (etna v0.1.2)
Etna is a utility library inspired by RubyGem's ActiveSupport. It provides a convenient function protocol often used in Rails.
Link to this section Summary
Functions
when list
iex(18)> Etna.blank?([])
true
iex(20)> Etna.blank?([1, 2])
false
iex(21)> Etna.blank?([nil])
false
when map
iex(20)> Etna.blank?(%{})
true
iex(21)> Etna.blank?(%{key: 10})
false
When list
iex(1)> Etna.compact([1, 2, nil, 4, 5])
[1, 2, 4, 5]
When map
iex(1)> Etna.compact(%{a: 10, b: nil})
%{a: 10}
when list
iex(15)> Etna.except([], :some_key)
{:error, Etna.List}
when map
iex(17)> Etna.except(%{name: "pantani", age: 28, job: :rider}, :name)
%{age: 28, job: :rider}
when list
iex(4)> Etna.exclude?([1,2,3], 4)
true
iex(5)> Etna.exclude?([1,2,3], 3)
false
when map
iex(4)> Etna.exclude?(%{a: 10}, :a)
false
iex(5)> Etna.exclude?(%{a: 10}, :b)
true
when list
iex(14)> Etna.from([0, 1, 2, 3, 4, 5, 6, 7, 8], 3)
[4, 5, 6, 7, 8]
when map
iex(16)> Etna.from(%{key: "value"}, 1)
{:error, Etna.Map}
when list
iex(2)> Etna.include?([1,2,3], 1)
true
iex(3)> Etna.include?([1,2,3], 4)
false
when map
iex(2)> Etna.include?(%{a: 10}, :a)
true
iex(3)> Etna.include?(%{a: 10}, :b)
false
when list
iex(4)> Etna.index_by([%{age: 28, name: "pantani"}, %{age: 30, name: "nibali"}], fn rider -> rider.age end)
%{28 => %{age: 28, name: "pantani"}, 30 => %{age: 30, name: "nibali"}}
when map
iex(10)> Etna.index_by(%{name: "pantani", age: 20, job: :rider}, fn {k, _} -> k end)
%{age: {:age, 20}, job: {:job, :rider}, name: {:name, "pantani"}}
when list
iex(5)> Etna.many?([1])
true
iex(6)> Etna.many?([])
false
iex(7)> Etna.many?([1, 3])
true
when map
iex(11)> Etna.many?(%{})
false
iex(12)> Etna.many?(%{key: 10})
true
when list
iex(12)> Etna.pluck([%{name: "pantani", age: 28}, %{name: "nibali", age: 30}], :name)
["pantani", "nibali"]
when map
iex(14)> Etna.pluck(%{key: "value"}, :key)
{:error, Etna.Map}
when list
iex(22)> Etna.present?([])
false
iex(23)> Etna.present?([1, 2])
true
when map
iex(22)> Etna.present?(%{})
false
iex(23)> Etna.present?(%{key: 10})
true
when list
iex(16)> Etna.stringify_keys([])
{:error, Etna.List}
when map
iex(18)> Etna.stringify_keys(%{name: "pantani", age: 28})
%{"age" => 28, "name" => "pantani"}
when list
iex(9)> Etna.sum([10, 20, 30])
60
iex(10)> Etna.sum(["a", "b", "c"])
"abc"
iex(11)> Etna.sum([[1,2,3], [4,5,6]])
21
when map
iex(6)> Etna.sum(%{a: 10, b: 20})
30
iex(7)> Etna.sum(%{a: "hello", b: "world"})
"helloworld"
iex(8)> Etna.sum(%{a: [1, 2], b: [3, 4]})
10
when list
iex(9)> Etna.sum([%{age: 20}, %{age: 30}], fn m -> m.age end)
50
when map
iex(9)> Etna.sum(%{a: 10}, fn -> nil end)
{:error, Etna.Map}
when list
iex(17)> Etna.symbolize_keys([])
{:error, Etna.List}
when map
iex(19)> Etna.symbolize_keys(%{"name" => "pantani", "age" => 28})
%{age: 28, name: "pantani"}
when list
iex(13)> Etna.to([0, 1, 2, 3, 4, 5], 2)
[0, 1, 2]
when map
iex(15)> Etna.to(%{key: "value"}, 2)
{:error, Etna.Map}
when list
iex(8)> Etna.without([1, 2, 3, 4, 5], 2)
[1, 3, 4, 5]
iex(9)> Etna.without([1, 2, 3, 4, 5], [1, 4])
[2, 3, 5]
iex(10)> Etna.without(["apple", "orange", "banana"], "banana")
["apple", "orange"]
iex(11)> Etna.without(["apple", "orange", "banana"], ["banana", "orange"])
["apple"]
when map
iex(13)> Etna.without(%{name: "pantani", age: 28, job: :rider}, :name)
%{age: 28, job: :rider}
when list
iex(24)> Etna.wrap([1, 2])
[1, 2]
iex(25)> Etna.wrap([])
[]
when map
iex(24)> Etna.wrap(%{})
[%{}]
iex(25)> Etna.wrap(%{name: "pantani", age: 28})
[%{age: 28, name: "pantani"}]
Link to this section Types
Specs
t() :: term()
Link to this section Functions
Link to this function
blank?(val)
when list
iex(18)> Etna.blank?([])
true
iex(20)> Etna.blank?([1, 2])
false
iex(21)> Etna.blank?([nil])
false
when map
iex(20)> Etna.blank?(%{})
true
iex(21)> Etna.blank?(%{key: 10})
false
Link to this function
compact(enum)
When list
iex(1)> Etna.compact([1, 2, nil, 4, 5])
[1, 2, 4, 5]
When map
iex(1)> Etna.compact(%{a: 10, b: nil})
%{a: 10}
Link to this function
except(map, key)
when list
iex(15)> Etna.except([], :some_key)
{:error, Etna.List}
when map
iex(17)> Etna.except(%{name: "pantani", age: 28, job: :rider}, :name)
%{age: 28, job: :rider}
Link to this function
exclude?(enum, val)
when list
iex(4)> Etna.exclude?([1,2,3], 4)
true
iex(5)> Etna.exclude?([1,2,3], 3)
false
when map
iex(4)> Etna.exclude?(%{a: 10}, :a)
false
iex(5)> Etna.exclude?(%{a: 10}, :b)
true
Link to this function
from(list, index)
when list
iex(14)> Etna.from([0, 1, 2, 3, 4, 5, 6, 7, 8], 3)
[4, 5, 6, 7, 8]
when map
iex(16)> Etna.from(%{key: "value"}, 1)
{:error, Etna.Map}
Link to this function
include?(enum, val)
when list
iex(2)> Etna.include?([1,2,3], 1)
true
iex(3)> Etna.include?([1,2,3], 4)
false
when map
iex(2)> Etna.include?(%{a: 10}, :a)
true
iex(3)> Etna.include?(%{a: 10}, :b)
false
Link to this function
index_by(enum, f)
when list
iex(4)> Etna.index_by([%{age: 28, name: "pantani"}, %{age: 30, name: "nibali"}], fn rider -> rider.age end)
%{28 => %{age: 28, name: "pantani"}, 30 => %{age: 30, name: "nibali"}}
when map
iex(10)> Etna.index_by(%{name: "pantani", age: 20, job: :rider}, fn {k, _} -> k end)
%{age: {:age, 20}, job: {:job, :rider}, name: {:name, "pantani"}}
Link to this function
many?(enum)
when list
iex(5)> Etna.many?([1])
true
iex(6)> Etna.many?([])
false
iex(7)> Etna.many?([1, 3])
true
when map
iex(11)> Etna.many?(%{})
false
iex(12)> Etna.many?(%{key: 10})
true
Link to this function
pluck(enum, list)
when list
iex(12)> Etna.pluck([%{name: "pantani", age: 28}, %{name: "nibali", age: 30}], :name)
["pantani", "nibali"]
when map
iex(14)> Etna.pluck(%{key: "value"}, :key)
{:error, Etna.Map}
Link to this function
present?(val)
when list
iex(22)> Etna.present?([])
false
iex(23)> Etna.present?([1, 2])
true
when map
iex(22)> Etna.present?(%{})
false
iex(23)> Etna.present?(%{key: 10})
true
Link to this function
stringify_keys(map)
when list
iex(16)> Etna.stringify_keys([])
{:error, Etna.List}
when map
iex(18)> Etna.stringify_keys(%{name: "pantani", age: 28})
%{"age" => 28, "name" => "pantani"}
Link to this function
sum(enum)
when list
iex(9)> Etna.sum([10, 20, 30])
60
iex(10)> Etna.sum(["a", "b", "c"])
"abc"
iex(11)> Etna.sum([[1,2,3], [4,5,6]])
21
when map
iex(6)> Etna.sum(%{a: 10, b: 20})
30
iex(7)> Etna.sum(%{a: "hello", b: "world"})
"helloworld"
iex(8)> Etna.sum(%{a: [1, 2], b: [3, 4]})
10
Link to this function
sum(enum, f)
when list
iex(9)> Etna.sum([%{age: 20}, %{age: 30}], fn m -> m.age end)
50
when map
iex(9)> Etna.sum(%{a: 10}, fn -> nil end)
{:error, Etna.Map}
Link to this function
symbolize_keys(map)
when list
iex(17)> Etna.symbolize_keys([])
{:error, Etna.List}
when map
iex(19)> Etna.symbolize_keys(%{"name" => "pantani", "age" => 28})
%{age: 28, name: "pantani"}
Link to this function
to(list, index)
when list
iex(13)> Etna.to([0, 1, 2, 3, 4, 5], 2)
[0, 1, 2]
when map
iex(15)> Etna.to(%{key: "value"}, 2)
{:error, Etna.Map}
Link to this function
without(enum, list)
when list
iex(8)> Etna.without([1, 2, 3, 4, 5], 2)
[1, 3, 4, 5]
iex(9)> Etna.without([1, 2, 3, 4, 5], [1, 4])
[2, 3, 5]
iex(10)> Etna.without(["apple", "orange", "banana"], "banana")
["apple", "orange"]
iex(11)> Etna.without(["apple", "orange", "banana"], ["banana", "orange"])
["apple"]
when map
iex(13)> Etna.without(%{name: "pantani", age: 28, job: :rider}, :name)
%{age: 28, job: :rider}
Link to this function
wrap(val)
when list
iex(24)> Etna.wrap([1, 2])
[1, 2]
iex(25)> Etna.wrap([])
[]
when map
iex(24)> Etna.wrap(%{})
[%{}]
iex(25)> Etna.wrap(%{name: "pantani", age: 28})
[%{age: 28, name: "pantani"}]