среда, 7 мая 2014 г.

Как разместить исходный код в комментариях Blogger

Иногда возникает потребность разместить исходный код в комментариях Blogger. К сожалению, если ничего не предпринимать, как минимум, начальные пробелы, отражающие структуру исходного текста, будут удалены при публикации комментария, что сделает текст нечитаемым.
Заранее прошу извинить, если почтенной публике содержимое данного сообщения покажется банальным.
К счастью, всё оказалось довольно просто (если знаешь - как ;-)).
Достаточно проделать следующее:
  1. Запустить LibreOffice Writer (вероятнее всего, подойдёт любой текстовый процессор)
  2. Вставить в документ исходный текст, который требуется поместить в комментарий Blogger
  3. Провести замену символов (Ctrl+H): обычный пробел следует заменить на неразрывный пробел. Неразрывный пробел можно вставить в текст посредством комбинации клавиш Ctrl+Shift+Space. На всякий случай: этот символ можно скопировать в поле ввода строки замены из текста посредством простейшего копипаста (Ctrl+C, Ctrl+V).
После этого результат замены пробелов на "неразрывные" варианты этого символа можно скопировать в поле комментария на web-странице Blogger.
Результаты описанного преобразования можно увидеть здесь - не Бог весть что, но IMHO, вполне читаемо...
Для меня получение этого "тайного знания" стало маленькой победой, поскольку с марта прошлого года то, что Blogger творит с исходным текстом в комментариях, меня просто "вымораживало", а Google ничем внятным помочь не мог, хотя понятно, что виноват не он, а моя неспособность спросить его так, чтобы он ответил :-)

Далее, если уж пошла речь об оформлении комментариев, думаю, следует упомянуть о других возможностях, которые предоставляет Blogger. Тем более, что их совсем уж немного...
В комментариях Blogger поддерживаются некоторые тэги HTML, отвечающие за форматирование:
  • <i> и </i> для выделения текста курсивом
  • <b> и </b> для использования жирного шрифта
  • <a href="http://..."> и </a> для гиперссылок.
В заключение, ещё одно обстоятельство.
Иногда возникает потребность расположить фрагмент HTML/XML в тексте комментария.
При обнаружении тэга в комментарии Blogger выдаёт сообщение "Ваш код HTML не может быть принят: Недопустимый тэг: <название тэга>".
Эту неприятность можно обойти, выполнив замену: '<' → '&lt;', '>' → '&gt;', '"' (двойные кавычки) → '&quot;', ''' (одинарные кавычки) → '&#39;', '&' (амперсанд) → '&amp;'. Соответствующие рекомендации получены отсюда.
Online-сервис, выполняющий требуемые замены, расположен здесь.

Всем удачи, надеюсь, это сообщение кто-нибудь найдёт полезным.
Разумеется, если Вам известно, как проделать вышеперечисленное более оптимально, был бы признателен, если бы Вы поделились известными Вам сведениями.
В частности, было бы замечательно, если бы можно было использовать моноширинный шрифт в комментариях. Про подсветку синтаксиса я уже не говорю... :-)

5 комментариев :

  1. Неразрывный пробел я набираю в _любом_ месте сочетанием ALT+0160 - цифры набираются на доп. (num) клавиатуре.
    (ну т.е. не нужен вообще никакой спец. софт), правда это под Windows, не знаю как в Linux-оболочках.

    ОтветитьУдалить
  2. Этот комментарий был удален автором.

    ОтветитьУдалить
  3. Этот комментарий был удален автором.

    ОтветитьУдалить
  4. Можно попробовать такой вариант, не требующий редактора вообще:
    <code language="python">
    # -*- encoding: utf-8 -*-
    from __future__ import unicode_literals
    import win32clipboard, win32con

    __docstring__ = """Обработка исходного кода для размещения его в комментарии Blogger (http://blogspot.ru)."""
    __revision__ = 'rev. 01 07.05.2014 14:38:35'

    win32clipboard.OpenClipboard()
    try:
        text = win32clipboard.GetClipboardData(win32con.CF_UNICODETEXT).replace(u'\u0020', u'\u00a0')
        win32clipboard.EmptyClipboard()
        win32clipboard.SetClipboardData(win32con.CF_UNICODETEXT, text)
    finally:
        win32clipboard.CloseClipboard()
    </code>
    Предварительно обрабатываемый текст должен быть помещён в буфер обмена.
    Результаты обработки будут там же.

    ОтветитьУдалить
  5. Для кроссплатформенной работы с буфером обмена рекомендую использовать pyperclip. Да и как-то он приятнее выглядит.

    ОтветитьУдалить