Блок задач

4. Один класс

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

Задача «HTML-подсветка слов»

Требуется реализовать программу, раскрашивающую текстовый файл в различные цвета по заданным правилам и сохраняющую результат в формате HTML.

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

  1. Файл с каким-либо текстом (на усмотрение студента).
  2. Файл-словарь пар «слово — цвет». Цвет можно задавать в формате, принятом в HTML. Формат файла:
foo : FF0000
bar : 00FF00
...
baz : 0000FF

Задание

Реализовать класс для HTML-подсветки файла. На вход подаётся ссылка на поток std::istream и уже загруженный в память (для этого удобно использовать std::map или std::unordered_map словарь пар «слово – цвет». На выходе должен генерироваться HTML-файл с подсвеченным текстом.

О формате HTML можно почитать в википедии или попробовать его в деле, используя онлайн HTML-редактор.

Цвет в HTML задается в формате "<R><G><B>" в 16-ричной системе исчисления: например, #FF0000 означает R=FF (то есть 255), G=00, B=00. В таком случае цвет красный. Пример кодирования:

<span style="color: #FF0000;">text</span>

Обратите внимание, что некоторые символы в HTML нужно кодировать специальным образом (они называются entities). Символ < записывается как &lt;, > — как &gt;, а символ & – как &amp;.

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

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

Для словаря

foo : ff0000
bar : 00ff00

и текста

foobar bar & foo.

должен получиться выход

foobar <span style="color: #00ff00;">bar</span> &amp; <span style="color: #ff0000;">foo</span>.