Это форк пакета js-arabic-reshaper
, нужный для подстановки лигатур арабской вязи, для корректного отображения текста на арабском языке.
Интерфейс пакета представлен функцией
reshape(input: string, options?: Options): string
используется которая как-то так:
const Reshaper = require('arabic-reshaper');
// Простой вызов
var reshapedWord = Reshaper.reshape(arabicWord);
// Вызов с опциями
Reshaper.reshape(arabicWord, {
ligatures: true,
delete_harakat: false
});
В пакете был оптимизирован алгоритм подстановки лигатур. Вместо линейного поиска здесь используется trie, что дает сложность O(logN) вместо оригинальной O(N).
Внедрение trie внесло некоторые сложности в обновление пакета. Теперь, чтобы добавить или убрать что-то нужно поменять оригинальный конфиг в файле originals.js
и выполнить команду
npm run gen
Команда сгенерирует 2 файла letters.json
и ligas.json
, содержимое которых нужно вручную вставит в index.js
в значение переменных LETTERS
и LIGATURES_TRIE
соответственно.