OrderedMap (OrderedMap v0.0.5) View Source

Link to this section Summary

Functions

Deletes the entry in ordered_map having key key.

Fetches the value for a specific key in the given ordered_map.

Gets the value for a specific key.

Gets the value from key and updates it, all in one pass.

Returns whether a given key exists in the given ordered_map.

Returns all keys from ordered_map.

Returns a new ordered map.

Returns and removes the value associated with key in ordered_map.

Puts the given value under key.

Puts the given value under key unless the entry key already exists.

Puts the given value under key. If key exists, a RuntimeError is raised.

Returns all values from ordered_map.

Link to this section Types

Specs

key() :: any()

Specs

t() :: %OrderedMap{keys: [key()], map: map(), size: non_neg_integer()}

Link to this section Functions

Link to this function

delete(ordered_map, key)

View Source

Specs

delete(t(), key()) :: t()

Deletes the entry in ordered_map having key key.

Examples

iex> ordered_map =
...>   %OrderedMap{
...>     keys: ["key2", "key1"],
...>     map: %{"key1" => 1, "key2" => 2},
...>     size: 2,
...>   }
iex> OrderedMap.delete(ordered_map, "key1")
%OrderedMap{
  keys: ["key2"],
  map: %{"key2" => 2},
  size: 1
}

iex> ordered_map =
...>   %OrderedMap{
...>     keys: ["key1"],
...>     map: %{"key1" => 1},
...>     size: 1
...>   }
iex> OrderedMap.delete(ordered_map, "key2")
%OrderedMap{
  keys: ["key1"],
  map: %{"key1" => 1},
  size: 1
}

iex> OrderedMap.delete(OrderedMap.new(), "key")
%OrderedMap{keys: [], map: %{}, size: 0}

Specs

fetch(t(), key()) :: {:ok, term()} | :error

Fetches the value for a specific key in the given ordered_map.

Examples

iex> ordered_map =
...>   %OrderedMap{
...>     keys: ["key2", "key1"],
...>     map: %{"key1" => 1, "key2" => 2},
...>     size: 2,
...>   }
iex> OrderedMap.fetch(ordered_map, "key1")
{:ok, 1}

iex> ordered_map = OrderedMap.new()
iex> OrderedMap.fetch(ordered_map, "key")
:error
Link to this function

get(ordered_map, key, default \\ nil)

View Source

Specs

get(t(), key(), default :: term()) :: term()

Gets the value for a specific key.

Examples

iex> ordered_map =
...>   %OrderedMap{
...>     keys: ["key2", "key1"],
...>     map: %{"key1" => 1, "key2" => 2},
...>     size: 2,
...>   }
iex> OrderedMap.get(ordered_map, "key2")
2

iex> ordered_map =
...>   %OrderedMap{
...>     keys: ["key1"],
...>     map: %{"key1" => 1},
...>     size: 1,
...>   }
iex> OrderedMap.get(ordered_map, "key2")
nil

iex> OrderedMap.get(OrderedMap.new(), "key")
nil

iex> OrderedMap.get(OrderedMap.new(), "key", :default)
:default
Link to this function

get_and_update(ordered_map, key, fun)

View Source

Specs

get_and_update(t(), key(), (any() -> any())) :: {any(), t()}

Gets the value from key and updates it, all in one pass.

Examples

iex> ordered_map =
...>   %OrderedMap{
...>     keys: ["key2", "key1"],
...>     map: %{"key1" => 1, "key2" => 2},
...>     size: 2,
...>   }
iex> fun = fn current -> {current, 3} end
iex> OrderedMap.get_and_update(ordered_map, "key1",fun)
{ 1,
  %OrderedMap{
    keys: ["key2", "key1"],
    map: %{"key1" => 3, "key2" => 2},
    size: 2,
  }
}
Link to this function

has_key?(ordered_map, key)

View Source

Specs

has_key?(t(), any()) :: boolean()

Returns whether a given key exists in the given ordered_map.

Examples

iex> ordered_map =
...>   %OrderedMap{
...>     keys: ["key2", "key1"],
...>     map: %{"key1" => 1, "key2" => 2},
...>     size: 2,
...>   }
iex> OrderedMap.has_key?(ordered_map, "key1")
true

iex> OrderedMap.has_key?(OrderedMap.new(), "key")
false

Specs

keys(t()) :: [term()]

Returns all keys from ordered_map.

Examples

iex> ordered_map =
...>   %OrderedMap{
...>     keys: ["key2", "key1"],
...>     map: %{"key1" => 1, "key2" => 2},
...>     size: 2,
...>   }
iex> OrderedMap.keys ordered_map
["key1", "key2"]

iex> OrderedMap.keys OrderedMap.new()
[]

Specs

new() :: %OrderedMap{keys: [], map: %{}, size: 0}

Returns a new ordered map.

Examples

iex> OrderedMap.new()
%OrderedMap{keys: [], map: %{}, size: 0}

Specs

pop(t(), key()) :: {term(), t()}

Returns and removes the value associated with key in ordered_map.

Examples

iex> ordered_map =
...>   %OrderedMap{
...>     keys: ["key2", "key1"],
...>     map: %{"key1" => 1, "key2" => 2},
...>     size: 2,
...>   }
iex> OrderedMap.pop(ordered_map, "key1")
{ 1,
  %OrderedMap{
    keys: ["key2"],
    map: %{"key2" => 2},
    size: 1,
  }
}
Link to this function

put(ordered_map, key, value)

View Source

Specs

put(t(), term(), term()) :: t()

Puts the given value under key.

Examples

iex> ordered_map = OrderedMap.new()
iex> ordered_map =
...>   OrderedMap.put(ordered_map, "key1", 1)
%OrderedMap{
  keys: ["key1"],
  map: %{"key1" => 1},
  size: 1,
}
iex> OrderedMap.put(ordered_map, "key2", 2)
%OrderedMap{
  keys: ["key2", "key1"],
  map: %{"key1" => 1, "key2" => 2},
  size: 2,
}

iex> ordered_map =
...> %OrderedMap{
...>   keys: ["key2", "key1"],
...>   map: %{"key1" => 1, "key2" => 2},
...>   size: 2,
...> }
iex> OrderedMap.put(ordered_map, "key2", 3)
%OrderedMap{
  keys: ["key2", "key1"],
  map: %{"key1" => 1, "key2" => 3},
  size: 2,
}
Link to this function

put_new(ordered_map, key, value)

View Source

Specs

put_new(t(), term(), term()) :: t()

Puts the given value under key unless the entry key already exists.

Examples

iex> ordered_map = OrderedMap.new()
iex> ordered_map =
...>   OrderedMap.put_new(ordered_map, "key1", 1)
%OrderedMap{
  keys: ["key1"],
  map: %{"key1" => 1},
  size: 1,
}
iex> OrderedMap.put_new(ordered_map, "key1", 2)
%OrderedMap{
  keys: ["key1"],
  map: %{"key1" => 1},
  size: 1,
}
Link to this function

put_new!(ordered_map, key, value)

View Source

Specs

put_new!(t(), term(), term()) :: t() | no_return()

Puts the given value under key. If key exists, a RuntimeError is raised.

Examples

iex> ordered_map = OrderedMap.new()
iex> ordered_map =
...>   OrderedMap.put_new!(ordered_map, "key1", 1)
%OrderedMap{
  keys: ["key1"],
  map: %{"key1" => 1},
  size: 1,
}
iex> OrderedMap.put_new!(ordered_map, "key1", 2)
** (RuntimeError) key "key1" already exists in: %OrderedMap{keys: ["key1"], map: %{"key1" => 1}, size: 1}

Specs

values(t()) :: [term()]

Returns all values from ordered_map.

Examples

iex> ordered_map =
...>   %OrderedMap{
...>     keys: ["key2", "key1"],
...>     map: %{"key1" => 1, "key2" => 2},
...>     size: 2,
...>   }
iex> OrderedMap.values ordered_map
[1, 2]

iex> OrderedMap.values OrderedMap.new()
[]