# `JsonRemedy.Context.ContextValues`
[🔗](https://github.com/nshkrdotcom/json_remedy/blob/v0.2.1/lib/json_remedy/context/context_values.ex#L1)

Enum definitions and utilities for JSON parsing context values.

This module provides validation, transition logic, and repair prioritization
for context values used throughout the JSON repair pipeline.

# `can_transition_to?`
[🔗](https://github.com/nshkrdotcom/json_remedy/blob/v0.2.1/lib/json_remedy/context/context_values.ex#L57)

```elixir
@spec can_transition_to?(any(), any()) :: boolean()
```

Determines if a transition between contexts is valid.

## Examples

    iex> JsonRemedy.Context.ContextValues.can_transition_to?(:root, :object_key)
    true

    iex> JsonRemedy.Context.ContextValues.can_transition_to?(:root, :object_value)
    false

# `context_allows_repair?`
[🔗](https://github.com/nshkrdotcom/json_remedy/blob/v0.2.1/lib/json_remedy/context/context_values.ex#L126)

```elixir
@spec context_allows_repair?(JsonRemedy.Context.JsonContext.context_value(), atom()) ::
  boolean()
```

Determines if a context allows a specific type of repair.

## Examples

    iex> JsonRemedy.Context.ContextValues.context_allows_repair?(:object_key, :unquoted_keys)
    true

    iex> JsonRemedy.Context.ContextValues.context_allows_repair?(:object_key, :boolean_normalization)
    false

# `get_repair_priority`
[🔗](https://github.com/nshkrdotcom/json_remedy/blob/v0.2.1/lib/json_remedy/context/context_values.ex#L165)

```elixir
@spec get_repair_priority(JsonRemedy.Context.JsonContext.context_value(), atom()) ::
  non_neg_integer()
```

Returns the priority for a repair type in a given context.

Higher numbers indicate higher priority.

## Examples

    iex> JsonRemedy.Context.ContextValues.get_repair_priority(:object_key, :unquoted_keys)
    80

    iex> JsonRemedy.Context.ContextValues.get_repair_priority(:invalid_context, :quote_normalization)
    50

# `next_expected_context`
[🔗](https://github.com/nshkrdotcom/json_remedy/blob/v0.2.1/lib/json_remedy/context/context_values.ex#L98)

```elixir
@spec next_expected_context(
  JsonRemedy.Context.JsonContext.context_value(),
  String.t()
) ::
  JsonRemedy.Context.JsonContext.context_value() | :pop_context
```

Predicts the next expected context based on current context and character.

## Examples

    iex> JsonRemedy.Context.ContextValues.next_expected_context(:object_key, ":")
    :object_value

    iex> JsonRemedy.Context.ContextValues.next_expected_context(:object_value, ",")
    :object_key

# `valid_context?`
[🔗](https://github.com/nshkrdotcom/json_remedy/blob/v0.2.1/lib/json_remedy/context/context_values.ex#L40)

```elixir
@spec valid_context?(any()) :: boolean()
```

Checks if a context value is valid.

## Examples

    iex> JsonRemedy.Context.ContextValues.valid_context?(:object_key)
    true

    iex> JsonRemedy.Context.ContextValues.valid_context?(:invalid)
    false

# `valid_context_values`
[🔗](https://github.com/nshkrdotcom/json_remedy/blob/v0.2.1/lib/json_remedy/context/context_values.ex#L23)

```elixir
@spec valid_context_values() :: [JsonRemedy.Context.JsonContext.context_value()]
```

Returns all valid context values.

## Examples

    iex> JsonRemedy.Context.ContextValues.valid_context_values()
    [:root, :object_key, :object_value, :array]

---

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