Блок задач

6. Парочка классов

Темы
Сложность 4

Задача «Робот-редактор»

Разработать программу, которая будет редактировать файл по заданному «рецепту» и сохранять результат в другой файл.

Входные данные

I. «Рецепт» — файл с командами редактирования, по одной на строку:

  • delete from MM to NN — удалить строки с номерами MM..NN. Секции from MM и to NN могут опускаться, в этом случае подразумевается, что удалять нужно с начала или до конца файла.
  • change from MM to NN with "TEXT". Заменить строки с MM до NN на текст TEXT. Текст может быть многострочным. Перевод строки записывается как \n, символ обратного слеша — как \\, кавычка — \". Секции from MM и to NN опциональны (см. описание команды delete).
  • insert after MM "TEXT". Вставить TEXT после строки MM.
  • replace from MM to NN "TEXT" with "TEXT2". Заменить в строках от MM до NN текст TEXT на TEXT2. Секции from MM и to NN опциональны (см. описание команды delete).
  • undo. Отменить действие предыдущей команды.

II. Входной файл, к которому будет применяться рецепт.

Задача

Применить команды к входному файлу.

Выходные данные

Отредактированный входной файл.

Тестирование

Разработать набор тестов, проверяющий корректность исполнения различных команд. Уделить внимание командам с некорректными параметрами (например, где номер строки превышает количество строк в файле). Команды должны выполняться, но в границах реально поданного на вход файла. Например, delete from 1 to 1000 должна удалить все строки в файле из двух строк, не приводя к возникновению ошибки.