# `NPMSemver.Range`
[🔗](https://github.com/dannote/npm_semver/blob/v0.1.0/lib/npm_semver/range.ex#L1)

npm-compatible semver range parsing and matching.

A range is a union (`||`) of comparator sets.
Each comparator set is an intersection (space-separated) of comparators.

# `comparator`

```elixir
@type comparator() :: {:gte | :lte | :gt | :lt | :eq, NPMSemver.Version.t()}
```

# `comparator_set`

```elixir
@type comparator_set() :: [comparator()]
```

# `t`

```elixir
@type t() :: %NPMSemver.Range{sets: [comparator_set()]}
```

# `parse`

```elixir
@spec parse(
  String.t(),
  keyword()
) :: {:ok, t()} | :error
```

Parse an npm range string.

# `satisfies?`

```elixir
@spec satisfies?(t(), NPMSemver.Version.t(), keyword()) :: boolean()
```

Check if a version satisfies a range.

# `to_elixir_string`

```elixir
@spec to_elixir_string(t()) :: String.t()
```

Convert range to Elixir/hex_solver requirement string.

---

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