mirror of
https://github.com/storytold/craft-libs.git
synced 2026-11-08 19:42:12 +00:00
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