# `Unicode.String.Dfa.Sentence`
[🔗](https://github.com/elixir-unicode/unicode_string/blob/v2.4.1/lib/unicode/string/dfa/sentence.ex#L1)

Table-driven engine implementing UAX #29 sentence breaking, with CLDR's
locale tailoring and abbreviation suppressions.

Generated from the `SentenceBreak` state machine tables published in PRI #555.
See `Unicode.String.Dfa` for the engine and `Unicode.String.Break.Tailoring`
for the tailoring and suppressions.

The arity-1 functions implement UAX #29 as published. The arity-3 and arity-4
functions add the locale-dependent behaviour on top.

# `break?`

Returns `true` when a segment boundary falls between `string_before` and
`string_after`.

The automaton always restarts at a boundary, so the question "is there a
break at this join" is answered by segmenting from the start of the
combined text and asking whether any boundary lands exactly on the join.

# `break?`

Returns `true` when a sentence boundary falls between the two strings.

# `next`

Returns `{segment, rest}`, or `nil` when `string` is empty.

# `next`

Returns `{sentence, rest}`, or `nil` when `string` is empty.

# `rule_split`

Splits `string` using the rules alone, without the dictionary pass.

# `split`

Splits `string` into segments.

Where the data defines dictionary symbols, the rule-based segments are
passed through the dictionary breaker afterwards, which is how the
standard describes complex context-dependent breaking being triggered.

# `split`

Splits `string` into sentences under `locale`.

# `splitter`

Lazily splits `string` into sentences under `locale`.

The stream carries the tailored text alongside the original and the offset
reached in it, so the tailoring is applied once at construction and every
sentence is still sliced from the original string.

---

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