View Source OrderedMap (OrderedMap v0.0.8)

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.

Types

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

Functions

Link to this function

delete(ordered_map, key)

View Source
@spec 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}
@spec 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
@spec 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
@spec 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
@spec 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
@spec 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()
[]
@spec new() :: %OrderedMap{keys: [], map: %{}, size: 0}

Returns a new ordered map.

Examples

iex> OrderedMap.new()
%OrderedMap{keys: [], map: %{}, size: 0}
@spec 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
@spec 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> 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
@spec 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
@spec 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
@spec 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()
[]