# `Unicode.NfkcQuickCheck`
[🔗](https://github.com/elixir-unicode/unicode/blob/v2.2.0/lib/unicode/property/nfkc_quick_check.ex#L1)

Functions to introspect the Unicode `NFKC_Quick_Check` property for binaries (Strings) and codepoints.

The `NFKC_Quick_Check` property is used by the quick check algorithm of [UAX #15](https://www.unicode.org/reports/tr15/) to determine whether a string is already in Normalization Form KC. The values are `:no` and `:maybe`; codepoints that are always allowed in NFKC have the default value `:yes`.

The primary API is `nfkc_quick_check/1` which returns the value of a codepoint, or the list of values of a string.

# `aliases`

Returns a map of aliases for `NFKC_Quick_Check` values.

### Returns

* A map where the alias string is the key and the value is the atom value.

### Examples

    iex> Unicode.NfkcQuickCheck.aliases() |> Map.get("n")
    :no

# `count`

Returns the count of the codepoints with a given `NFKC_Quick_Check` value.

Aliases are resolved by this function.

### Arguments

* `value` is any value name or alias, as an atom or string.

### Returns

* A non-negative integer count of the codepoints with the value.

* `:error` if the value is not known.

### Examples

    iex> is_integer(Unicode.NfkcQuickCheck.count(:no))
    true

# `fetch`

Returns the codepoint ranges for a given `NFKC_Quick_Check` value.

Aliases are resolved by this function.

### Arguments

* `value` is any value name or alias, as an atom or string.

### Returns

* `{:ok, range_list}` where `range_list` is a list of codepoint ranges as 2-tuples.

* `:error` if the value is not known.

### Examples

    iex> Unicode.NfkcQuickCheck.fetch(:no) |> elem(0)
    :ok

    iex> Unicode.NfkcQuickCheck.fetch(:invalid)
    :error

# `get`

Returns the codepoint ranges for a given `NFKC_Quick_Check` value.

Aliases are resolved by this function.

### Arguments

* `value` is any value name or alias, as an atom or string.

### Returns

* A list of codepoint ranges as 2-tuples.

* `nil` if the value is not known.

### Examples

    iex> Unicode.NfkcQuickCheck.get(:invalid)
    nil

# `known_nfkc_quick_check`

Returns a list of known `NFKC_Quick_Check` values.

### Returns

* A list of atom values.

### Examples

    iex> :maybe in Unicode.NfkcQuickCheck.known_nfkc_quick_check()
    true

# `nfkc_quick_check`

Returns the map of `NFKC_Quick_Check` values to codepoint ranges.

### Returns

* A map where the quick check value (`:no` or `:maybe`) is the key and a list of codepoint ranges as 2-tuples is the value.

### Examples

    iex> Unicode.NfkcQuickCheck.nfkc_quick_check() |> Map.keys() |> Enum.sort()
    [:maybe, :no, :yes]

# `nfkc_quick_check`

Returns the `NFKC_Quick_Check` value of the given binary or codepoint.

### Arguments

* `string_or_codepoint` is either a binary (String) or a codepoint in the range `0..0x10FFFF`.

### Returns

* For a codepoint, `:no`, `:maybe` or the default `:yes`.

* For a binary, a list of the distinct values of the codepoints in the binary is returned.

### Examples

    iex> Unicode.NfkcQuickCheck.nfkc_quick_check(?A)
    :yes

    iex> Unicode.NfkcQuickCheck.nfkc_quick_check(0x0300)
    :maybe

---

*Consult [api-reference.md](api-reference.md) for complete listing*
