Skip to content

Feature Custom

github-actions[bot] edited this page Jul 16, 2026 · 1 revision

🧱 Пользовательские словари

← Возможности · Главная · Сравнение

Создание

Из компактных данных (формат файлов data/) или из готовых записей:

use CloudCastle\Dictionary\{Dictionary, Gender, WordEntry};

$custom = Dictionary::fromArray([
    'кофе' => ['g' => 'm', 'f' => ['nom:sg' => 'кофе', 'nom:pl' => 'кофе']],
]);

$entries = Dictionary::fromEntries([
    new WordEntry('терминал', Gender::Masculine, ['gen:sg' => 'терминала']),
]);

Ключи компактного формата: g — код рода (m|f|n|c), f — карта форм, a — одушевлённость. Дубликат леммы в fromEntries — исключение InvalidEntryException.

merge — уточнение поставляемого словаря

merge возвращает новый словарь; при совпадении лемм побеждает запись аргумента — так доменный словарь уточняет поставляемый:

use CloudCastle\Dictionary\WordClass;

$nouns = Dictionary::load('ru', WordClass::Noun)->merge($custom);

$nouns->find('кофе')?->gender;    // Masculine — из вашего словаря
$nouns->find('человек')?->lemma;  // «человек» — поставляемый сохранён

Исходные словари иммутабельны: merge не изменяет ни один из них.

Свои схемы ключей

Схема ключей форм не фиксирована — для доменных словарей можно вводить собственные ключи ('voc:sg', 'abbr', …): formOf/form работают с любыми строками.

Clone this wiki locally