MapSorter.SortSpec (Map Sorter v0.2.72)

Copy Markdown View Source

Defines sort spec types and generates square brackets access syntax strings.

Summary

Types

Sort spec key

Sort direction

t()

Sort spec

Functions

Generates a square brackets access syntax string from a sort spec key.

Types

key()

@type key() :: Map.key() | [Map.key()]

Sort spec key

sort_dir()

@type sort_dir() :: :asc | :desc

Sort direction

t()

@type t() ::
  key()
  | {key(), module()}
  | {sort_dir(), key()}
  | {sort_dir(), {key(), module()}}

Sort spec

Functions

brackets(key)

@spec brackets(key()) :: String.t()

Generates a square brackets access syntax string from a sort spec key.

Examples

iex> import MapSorter.SortSpec
iex> brackets([:birth, :date])
"[:birth][:date]"

iex> import MapSorter.SortSpec
iex> brackets([:address, CITY, :state])
"[:address][CITY][:state]"

iex> import MapSorter.SortSpec
iex> brackets([:dob])
"[:dob]"

iex> import MapSorter.SortSpec
iex> brackets(:dob)
"[:dob]"

iex> import MapSorter.SortSpec
iex> brackets(DOB)
"[DOB]"

iex> import MapSorter.SortSpec
iex> brackets([1, <<1, 2, 3>>, 3.14, DOB])
"[1][<<1, 2, 3>>][3.14][DOB]"

iex> import MapSorter.SortSpec
iex> brackets([DOB, "3.14", 3.14, 0, {1, 2}, :likes])
~s<[DOB]["3.14"][3.14][0][{1, 2}][:likes]>

iex> import MapSorter.SortSpec
iex> brackets([{[:birth, :date], Date}, :likes])
"[{[:birth, :date], Date}][:likes]"

iex> import MapSorter.SortSpec
iex> brackets([{:desc, {[:birth, :date], Date}}, :likes])
"[{:desc, {[:birth, :date], Date}}][:likes]"

iex> import MapSorter.SortSpec
iex> brackets(~c"abc")
~s<[~c"abc"]>