24
ноябрь
2022
15:11

Пакетная проверка орфографии в файлах Markdown с помощью бесплатного спелл-чекера cSpell

24 ноябрь 2022 15:11

Недавно мне пришло письмо с комментарием, в котором посетитель сайта отметил большое количество опечаток в статьях.
Как автоматизировать процесс проверки правописания - об этом данная статья.

Введение

Чтобы исправить ошибки, их нужно вначале найти. Для этого существуют программы проверки правописания.
Одной из таких программ является бесплатная, но мощная утилита командной строки cSpell.

Что такое cSpell

cSpell - это так называемый "спелл-чекер", программа для проверки правильности написания слов и выявления опечаток.
Веб-сайт программы: https://cspell.org/, страница на GitHub: https://github.com/streetsidesoftware/cspell.

В отличие от других программ, она работает из командной строки и позволяет рекурсивно проверять каталоги, а также поддерживает одновременно несколько языков (для многоязычных текстов). Также, программа cSpell знает ключевые слова языков программирования, таких как JavaScript, TypeScript, Python, PHP, C#, C++, LaTex, Go, HTML, CSS. Скорость проверки текста высокая - проверка одного файла объёмом 4 кБайт на процессоре Core2Duo 2ГГц занимает 4 секунды.

Установка Snap

Вначале нужно установить альтернативную программу для управления пакетами snap (см. описание установки snap на сайте itfoss.com).

Так как у меня Linux Mint, близкий к Ubuntu, инсталляция snap выполнена при помощи команд APT:

sudo apt update
sudo apt install snapd

Установка NodeJS и NPM

Для выполнения cSpell, вначале нужно установить Node JS - серверный, очень мощный вариант JavaScript для написания и исполнения программ. Cайт Node JS с указанием последней версии: https://github.com/nodejs/release.
Существует несколько способов установки Node JS, я выбрал вариант установки из snap.

Примечание: если ранее был установлен nodejs более старой версии, вначале удалите node:
sudo snap remove node

1) Выполняем установку Node JS и программы управления пакетами NPM

sudo snap install node --classic --channel=19

Установится среда выполнения Node JS версии 19 и программа NPM. Проверка версий программ:

npm version

2) Очищаем кеш NPM

npm cache clean --force

3) Затем я удалил следы предыдущей установки модуля "n", которые были в операционной системе:

sudo rm -R /usr/lib/node_modules/n

4) Установил глобально программу "n":

sudo npm install -g n

5) Обновил с помощью "n" среду выполнения node js:

sudo n stable

6) Установил утилиту npm-check-updates (также известна как ncu)

sudo npm install -g npm-check-updates

7) Запустил обновление системы, включая обновление менеджера пакетов npm:

sudo npm update -g

8) Создание пользовательского файла "package.json" для локального проекта

cd ~
PATH="$PATH"
npm init

На все вопросы мастера отвечаем нажатием Enter.

Установка программы cSpell

Установка спелл-чекера (программы проверки орфографии) cSpell производится одной командой:

sudo npm install -g cspell

Установка и подключение к cSpell словаря русского языка

По умолчанию, cSpell знает только английский язык. Чтобы "обучить" его русскому, нужно установить и подключить словарь русского языка (источник - https://www.npmjs.com/package/@cspell/dict-ru_ru):

Установка словаря русского языка в CSpell:

sudo npm install -g @cspell/dict-ru_ru

Добавляем ссылку на словарь:

cspell link add @cspell/dict-ru_ru

Настройка языка документов с помощью файла конфигурации cspell.json

В папке, откуда будет запускаться cSpell (обычно - домашняя папка пользователя), создаем текстовый файл с именем cspell.json (подробный список папок, в которых программа ищет файл конфигурации перечислен в статье на CSpell.org).

cd ~
nano cspell.json

Вставляем следующее содержимое формата json и сохраняем изменения (Ctrl+O, Ctrl+X):

// cSpell Settings
{
"version": "0.2",
    "language": "en,ru",
    "words": [
        "vcfm",
        "webp",
        "Yaesu",
        "распиновка"
    ]
}

Обновление словарей cSpell из Интернет

sudo npm update -g

ncu -g

[====================] 6/6 100%

All global packages are up-to-date :)

Тестовый запуск CSpell

echo "этороверка работы eckho test" > test.txt
npx cspell test.txt    

Программа CSpell выведет слова с ошибками.

Примеры проверки орфографии файлов *.md (формата Markdown)

1) Проверка с помощью cSpell орфографии файлов Markdown в каталоге "test"

npx cspell test/*.md

---/test/item.md:29:119 - Unknown word (доставелен)
---/test/item.md:49:45 - Unknown word (микровыключатель)
---/test/item.md:64:26 - Unknown word (разъм)
---/test/item.md:78:1 - Unknown word (Цифроые)

Где 29 - номер строки, 119 - позиция ошибочного слова в строке.

2) Пакетная проверка орфографии файлов *.md в подкаталогах в папке "blog", с записью результатов проверки в файл errata.txt:

npx cspell blog/**/*.md > errata.txt

Что дальше?

Нужно исправить в текстовом редакторе найденные синтаксические ошибки и опечатки в каждом из проверенных файлов.
Также можно изучить дополнительные возможности программы на домашней странице на GitHub, а также команды "lint", которая используется для проверки файлов не только формата markdown, но и других, например, *.txt :

npx cspell lint --help 

Источник: Статья "Spell checking your markdown blog posts with cspell"