Everything_is_not_so_bad, mayton2019, calculator212, pfg21, WbICHA, был занят.
Итак, вводные. Есть код написанный не мной. В нем перед автором поставили задачу - нужно проверять в автоматическом режиме пдф на соответствие теста в нем определенным критериям. При этом чтобы хоть немного проверялось форматирование - вторая строка не вылезала на четвертую и так далее.
Автор решил вопрос так - установил библиотеку pdf-parse, которая парсит документ (спасибо, кэп)) . В результате текст документа получаем как массив строк -
"string1",
"string2",
"string3".
Представим для наглядности, что в документе строка 1 и 2 - неизменяемы, а 3 - может заканчиваться на любые цифры. Наш анонимный автор для такого сравнения написал функцию, представлю в виде псевдокода -
const 1 = [
"string1",
"string2",
"string3"
];
const 2 = [
"string1",
"string2",
/^string\d$/ //возможно ошибся в регулярке))
]
if(1 > 2) ошибка - несовпадение длинны. Проверяем дальше.
2.forEach(
если элемент строка - сравниваем с аналогичным (по индексу) элементом массива 1
если элемент регулярка - проверяем на регулярку
)
выводим массив несовпадений
Вот и думаю есть ли поудобнее инструменты для подобных сравнений, или нужно переписывать код основываясь на том что есть. Надеюсь поток сознания хоть немного прояснил ситуацию.
Сейчас часто разделяют юнит тестирование, компонентное тестирование и е2е, грубо говоря системное. Для ознакомления с первыми двумя посмотреть популярный фреймворк тестирования для конкретно твоего инструмента, вью. Там ты с вероятностью в 90 процентов найдешь полезные ссылки и лучшие практики, причем самые свежие. Последнее это про автоматизацию естирования, тебе скорее всего не сдалось.
WbICHA, есть массив, который содержит строки или регулярки, и функция которая парсит пдф, разделяя текст по символу новой строки. Далее перебором сравниваются строки из пдф с соответствующим по индексу значением из первого массива. Потому порядок важен. Не совсем представляю куда бежать чтобы привести все это в нормальное состояние.
WbICHA, есть документ, который содержит динамически изменяющиеся данные. Есть тест который проверяет документ на соответствие шаблону - строкам и регулярным выражениям там где информация меняется. В силу того что пдф не просто текст ,поддержание такой проверки довольно геморройный процесс. Думаю как можно оптимизировать.
Everything_is_not_so_bad, WbICHA, в данный момент парсится построчно, проверяя текст и "(минимально) форматирование. Буквально что на какой строке. Выглядит ужасно, потому как при любом изменении документа концы с концами не свести.
Valentin Barbolin, Спасибо за наводку, обязательно ознакомлюсь. Но вот вообще шикарно бы найти что-то от третьей стороны либо вообще решение в плане железа.
Dmitry Bay, печаль. Я рассчитывал на обычную боевую лошадку с кучей портов, а получил эту кроху с маленьким экраном и двумя тайпси. Пока выглядит как фигня полная, тем более что я привык к двум полноразмерным мониторам. Ещё и автономность печаль...
Speakermen, просто в твоём коде есть попытка реализовать функциональность библиотеки react "своими" методами (useState). Упражнение может и Окей если хочешь понять работу реакт. В ином случае если ты просто учишь основы javascript логичнее пройтись основательно по замыканиям в джаваскрипт, без изощрений.
Итак, вводные. Есть код написанный не мной. В нем перед автором поставили задачу - нужно проверять в автоматическом режиме пдф на соответствие теста в нем определенным критериям. При этом чтобы хоть немного проверялось форматирование - вторая строка не вылезала на четвертую и так далее.
Автор решил вопрос так - установил библиотеку pdf-parse, которая парсит документ (спасибо, кэп)) . В результате текст документа получаем как массив строк -
Представим для наглядности, что в документе строка 1 и 2 - неизменяемы, а 3 - может заканчиваться на любые цифры. Наш анонимный автор для такого сравнения написал функцию, представлю в виде псевдокода -
Вот и думаю есть ли поудобнее инструменты для подобных сравнений, или нужно переписывать код основываясь на том что есть. Надеюсь поток сознания хоть немного прояснил ситуацию.