# `Unicode.Transform.Parser`
[🔗](https://github.com/elixir-unicode/unicode_transform/blob/v1.1.0/lib/unicode/transform/parser.ex#L1)

Parses CLDR transform rule text into structured rule types.

The parser handles the five rule types defined by the
[CLDR specification](https://unicode.org/reports/tr35/tr35-general.html#Rule_Syntax):

* Comment rules — lines starting with `#`.

* Filter rules — `:: [unicode_set] ;`.

* Transform rules — `:: transform_name ;`.

* Variable definition rules — `$var = value ;`.

* Conversion rules — with `→`, `←`, or `↔` operators.

# `parse`

```elixir
@spec parse(String.t()) :: [struct()]
```

Parses a complete rule text string into a list of rule structs.

### Arguments

* `rule_text` — the raw rule text from a CLDR transform XML file.

### Returns

A list of rule structs.

# `parse_rule`

```elixir
@spec parse_rule(String.t()) :: struct() | nil
```

Parses a single rule string into a rule struct.

### Arguments

* `rule_string` — a single rule line.

### Returns

A rule struct or `nil` for empty/unparseable lines.

---

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