Проект "Вычислитель отличий"

Вычислитель отличий – проект, который по-настоящему прокачивает даже опытных разработчиков. Здесь вам придется столкнуться с принятием сложных архитектурных решений, автоматизированным тестированием и непрерывной интеграцией, функциональным программированием, работе с древовидными структурами данных и рекурсивными алгоритмами.

Для начала произведем установку Commander посредством npm install commander и запустим справку как указано ниже:

asciicast

Далее нам необходимо произвести проверку плоских файлов JSON. Диф строится на основе того как файлы изменились относительно друг друга, ключи выводятся в алфавитном порядке. Отсутствие плюса или минуса говорит, что ключ есть в обоих файлах, и его значения совпадают. Во всех остальных ситуациях значение по ключу либо отличается, либо ключ есть только в одном файле. Ниже приведен пример сравнения такого типа файлов (с расширениями .json и .yml):

asciicast

asciicast

Далее проводим рекурсивное сравнение файлов:

asciicast

На этом шаге мы отделяем форматирование дифа от вычисления различий. Удобство внутреннего представления в том, что очень сильно упрощается форматирование, так как форматер работает уже с вычисленной разницей.

Проект завершаем тем, что показываем имеющиеся файлы непосредственно в формате .json:

asciicast

Hexlet tests and linter status:

Actions Status

Github Actions