Я иногда смотрю сообщения про купоны на e-disclosure и там такие тексты, что очень сложно разобраться и понять, о чём речь, сколько выплатили и как. И я решил написать скриптик для выделения ключевой инфы из таких сообщений, чтобы не искать её в тексте. В результате получаются разные варианты. Это просто купон:

Это купон и амортизация:

Может быть одно сообщение как здесь, а может быть 2 отдельных, одно про купон, одно про аморт. Это купон и погашение:

Вот купон в долларах:

Ещё бывает в юанях и евро, юани я делал, в смысле символ валюты показываю как тут доллар, а евро нет т.к. он редко бывает. Заодно дивы попались:

Также, если объём выплаты не 100% (при техдефолте), этот момент выделяется красным и в таком случае пишется и объём выплаты:

Заодно сделал выделение текста сообщений в каждом параграфе, чтобы легче было понять, где начинается собственно текст и где заканчивается заголовок параграфа. Это работает не только для сообщений про выплаты, а для всех вообще:

Принцип работы скрипта такой: находим нужный абзац и в нём удаляем всё лишнее. Т.е. я просто показываю все числа, что есть, при этом удаляя ненужное, типа «п. 5.4» или «12345 штук облигаций». Работает это в Хроме через расширение «User JavaScript and CSS» как обычно. Код можно взять здесь.
Думал, сделаю за 1 вечер, в результате провозился недели 2 (вечерами). Всё дело в том, что, как оказалось, что никакого стандарта таких сообщений нет — каждый эмитент может писать в своём формате. При этом, ошибки могут быть в чём угодно, чего я только не видел. Даже русские буквы в Isin (RU000A108РС1) или Isin с пробелом «RU000A10 CSD0».
В результате пришлось очень долго тестировать и просматривать много сообщений. Вроде всё работает, потом раз — оказывается, что есть ещё и другой формат, надо понимать и его. Меняешь скрипт и всё по новой. Если попадётся какой-то невиданный вариант, то скрипт и сейчас может выдать что-то не то.
Не понимаю, почему Интерфакс не сделал для всех эмитентов единую форму, чтобы нужно было только ввести числа и не придумывать каждый раз текст заново.