Files
craft-libs/crates
janis luksandClaude Sonnet 5.5 a4edc0dce7 Hunspell: support FULLSTRIP, NEEDAFFIX and CIRCUMFIX
The affix engine refused any dictionary that uses these three
directives, so a dictionary such as Latvian lv_LV (hunspell-lv,
LGPL-2.1+) never loaded and its language showed "(dictionary
unreadable)".

- FULLSTRIP: an affix may strip, and so replace, a whole stem.
- NEEDAFFIX: a stem carrying the flag is not a word on its own, and a
  rule with it among its continuation classes gives forms that need one
  more affix (a prefix satisfies it for a suffix and the other way).
- CIRCUMFIX: a prefix or suffix carrying the flag is valid only
  together with one that carries it too; plain affixes never pair with
  circumfix ones.

forms() follows the same rules, so every form it lists is still
accepted by the checker, and the compact format keeps the three
directives. Tests cover each directive, the forms invariant and the
compact round trip.

Ported from storytold/wordcraft#5012 (989e942bc) onto craft-proof.
Adapted to craft-proof's flag ids (this branch sits on the FLAG
num/long port, storytold/wordcraft#5142): NEEDAFFIX and CIRCUMFIX are
flag ids read in the FLAG mode, continuation-class tests are set
lookups, and NEEDAFFIX joins the lookup exclusions. The ROADMAP.md part
and the Latvian language module (c99142ae9) are WordCraft's, not ported.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FypgCX8LsYYE8fsj4byBm2
2026-11-01 22:34:32 +00:00
..
…
…
…
…