Замена слов в браузере
Обновлено: 07.07.2024
БлогNot. Пишем "Добрый браузер правды" или замена слов на загружаемых веб-страницах
Пишем "Добрый браузер правды" или замена слов на загружаемых веб-страницах
Первым массово известным продуктом такого рода был "добрый браузер правды" от Навального и Ко, так что это не какая-то свежая аналогия :) Суть дела, думаю, понятна - как сделать так, чтобы на всех загружаемых страницах одни слова могли заменяться на другие в соответствии с неким словарём или списком. При этом хотелось бы, чтоб замены были достаточно гибкими, например, умели учитывать падежные конструкции русского языка и РеГиСтР символов.
Попробуем разработать такое приложение, а точней, расширение для "Хрома", "с нуля".
Файл манифеста manifest.json будет совсем типовым:
В нём дополнительно указано, что замены делаются до конца документа ( document_end ). Кодировка этого и остальных файлов - Юникод (UTF-8).
Картинки icon32.jpg и icon128.jpg соответствующих размеров я нарисовал в Paint, приводить их здесь незачем, а главный файл script.js мы сейчас напишем.
Функцию для рекурсивного обхода всех узлов документа я банально скоммуниздил вот отсюда:
Достаточно единственного глобального вызова этой функции, чтобы обход заработал:
Будет не так скучно, если некоторые замены мы сделаем вариативными, то есть, слово для замены будет случайно выбираться из списка вариантов. Поможет в этом маленькая функция randomWord :
Осталось написать функцию replaceMe , которая выполнит всю работу. Она будет устроена так:
Сами замены сделаем с помощью метода Javascript replace, который "понимает" не только тупую замену слова на слово, но может работать и с регулярными выражениями, обеспечивающими должную гибкость поиска словоформ.
Если Вы знакомы с RegExp'ами, то будет совсем легко, если нет - помогут показанные ниже простые примеры.
1. Просто меняем слово на слово, второе слово может иметь несколько вариантов
Здесь слова для замены склоняются так же, как искомое, учёт падежей излишен. Ключ /g после строки поиска нужно указывать обязательно, если требуются замены всех вхождений. Если к ключу добавить ещё символ i - будет игнорироваться регистр символов при поиске ( /gi )
2. Замена целых словосочетаний
$1, . $5 - номера вхождений подшаблонов в круглых скобках, эти подшаблоны можно ставить потом в строку для замены. Мы берём из исходной строки окончание первого слова $2 , пробельные разделители $3 и окончание второго слова $5 , так что получается всё корректно;
(ая|ой) - альтернатива; конструкцию (. |. ) можно вкладывать произвольное количество раз. В ней легко учесть отличающиеся части слов;
(\s) - пробельные символы.
3. Применяем подшаблоны и замену по списку одновременно
Обратите внимание, что второй подшаблон может быть и пустым - (|а|е|у) , это обеспечит нормальную замену для именительного падежа.
Нужно следить, если какие-то падежные окончания у слов для замены не совпадают с исходным, такие варианты можно обработать отдельно:
4. Замена только в начале слова
^ - контроль начала слова. Слово "думский" будет обработано, а, к примеру, фамилия "Стародумский" - нет.
Здесь первая буква "Шпанского комитета" принудительно станет большой.
Если хотим, чтоб замены оставляли регистр первой буквы искомого слова "как есть", придётся часть выражений дублировать:
Это относится и к остальным пунктам.
Стоит сказать, что конструкция \b , использующаяся для обозначения границы слова, не работает с кириллицей (или работает как-то криво), хотя границу слова, написанного латинскими буквами, определяет. Может пригодиться также спецсимвол $ , обозначающий конец слова.
Пополнив списки по этим несложным шаблонам, вы сможете сделать собственный комфортный для вас лексикон своему браузеру :)
А я упакую папку с исходниками расширения в ZIP и прикреплю его к статье, о подключении сторонних расширений к "Хрому" говорится здесь, о дурацком предупреждении на сторонние расширения - тут. После установки расширения проверить его работу можно, например, на этой странице.
P.S. из 2021-го. К сожалению, в актуальных версиях Firefox скачанное с этой страницы и установленное из файла расширение непосредственно работать уже не будет из-за изменения требований к служебным файлам. Хотя, наверное, несложно было бы модифицировать.
Проверил также удалённо в "Хромом" актуальной версии 88 - всё работает (скачать архив, распаковать без создания папки любым архиватором, в браузере обратиться Настройки - Расширения, разрешить "режим разработчика", потом "Загрузить распакованное расширение", показав на папку).
Всем привет! Я продолжаю делиться своими профессиональными наработками в теме работы с англоязычными текстами. Сегодня речь пойдет о том, какие браузерные расширения можно использовать, чтобы облегчить создание качественных материалов и научиться писать на английском лучше. Поехали!
Примечание: в тексте представлены расширения для Google Chrome и Mozilla Firefox, потому что я пользуюсь лишь этими браузерами. Не все упомянутые продукты имеют версию для обоих браузеров.
Linguix
Из фич, которые нравятся – модуль расчета статистики. Система анализирует «читабельность» текста и говорит, насколько он сложен. Полезно, чтобы бороться с соблазном сделать текст слишком громоздким.
Еще удобная вещь – pastebin-режим редактирования в веб-версии, который работает как секретный чат в мессенджере. После написания и редактирования текста он полностью удаляется.
Writer
Мастхэв-приложение для всех, кто работает с текстами на английском с помощью браузера. Это расширение позволяет открыть в Chrome крайне удобный, гибко настраиваемый и не отвлекающий редактор. Выглядит очень круто:
В редакторе работает Linguix – так что можно сразу же искать ошибки
Из удачных решений – расширение автоматически сохраняет текст время от времени. Можно задавать цели, легко получать статистику о количестве символов в тексте и т.п. Несмотря на то, что у приложения есть отдельная страница в магазине расширений Chrome, по факту она редиректит на веб-версию сервиса, и пользоваться ей можно из любого браузера.
Google Dictionary
Словарь от Google позволяет перевести незнакомое слово – бывает полезно при работе с англоязычными материалами для подготовки текста. С этим расширением можно без лишних усилий узнать значение любого слова, которое встретилось вам на веб-странице. Нужно только выделить слово, и появится поп-ап с переводом.
Удобная вещь – программа умеет произносить слова вслух, так что можно подтянуть и произношение. Получается, что Google dictionary полезен не только при непосредственной работе над текстом, но и как инструмент изучения языка.
Dark Reader
Будем честны, очень многие из нас постоянно сидят за компьютером до ночи, в том числе и в полной темноте. Некоторые, например я, могут в таком формате даже работать, в том числе над текстами.
Надо ли говорить, что большинство веб-редакторов текстов представляют из себя яркие белые страницы, на которых появляются черные буквы. В темноте это крайне серьезная нагрузка на зрение, поэтому я пользуюсь расширением DarkReader. Он затемняет фон на веб-страницах, так что с ними гораздо приятнее работать в вечернее время. К примеру, вот как с этим расширением выглядит блог-платформа Medium:
StayFocusd
С его помощью можно запретить себе на время уходить с определенного сайта. В итоге если вам нужно написать блог-пост, то пока не напишете, в фейсбук не зайдете. С началом использования этого расширения моя продуктивность заметно повысилась. Рекомендую.
А какие полезные в деле работы с текстом браузерные расширения знаете вы? Делитесь ссылками в комментариях. Спасибо за внимание!
Читайте также: