Подсветка исходного кода (новая версия)

    Сегодня вышла новая версия моего модуля, который подсвечивает исходный код C#, VB.NET, HTML/XML/ASPX, JavaScript и SQL.

    Если Вы хотите вставить кусок исходного кода в новую запись или комментарий к записи на Хабре, Source Code Highlighter подсветит Ваш код.

    Есть поддержка нумерации строк и вставки переноса строк, если вы отметили «Отключить автоматические переносы строк и создание ссылок» при написании поста.

    В новой версии:

    • Исправлена нумерация строк кода. Теперь можно выделять исходный код без нумерации.
    • Добавлена кнопка для быстрого копирования форматированного кода в буфер обмена — «Copy formated code to clipboard».
    • Добавлена возможность сохранять оригинальные отступы (по просьбе dunkan_macleod) — «Preserve Original Padding».
    • UPD: Добавлена поддержка нормальных кавычек. ("")

    Вот пример подсвеченного исходного кода который выдает этот модуль:
    1. using System;
    2. using System.Data;
    3. using System.Configuration;
    4. using System.Web;
    5. using System.Web.Security;
    6. using System.Web.UI;
    7. using System.Web.UI.WebControls;
    8. using System.Web.UI.WebControls.WebParts;
    9. using System.Web.UI.HtmlControls;
    10.  
    11. /// <summary>
    12. /// Summary description for Test
    13. /// </summary>
    14. public class Test
    15. {
    16.  
    17.     private int m_TestVar1;
    18.     private float m_TestVar2;
    19.     private DateTime m_TestVar3;
    20.  
    21.     public Test()
    22.     {
    23.         //
    24.         // TODO: Add constructor logic here
    25.         //
    26.     }
    27.  
    28.     public int TestVar1
    29.     {
    30.         get { return m_TestVar1; }
    31.         set { m_TestVar1 = value; }
    32.     }
    33.  
    34.     public float TestVar2
    35.     {
    36.         get { return m_TestVar2; }
    37.         set { m_TestVar2 = value; }
    38.     }
    39.  
    40.     public DateTime TestVar3
    41.     {
    42.         get { return m_TestVar3; }
    43.         set { m_TestVar3 = value; }
    44.     }
    45.  
    46. }
    * This source code was highlighted with Source Code Highlighter.

    Пользуйтесь на здоровье пока на Хабре нет такой возможности.
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 62

      +2
      Когда ждать подсветку Python кода?
        0
        От меня, наверное, никогда.
        Я просто не знаком с Python. :)
          0
          Разве списка ключевых слов не достаточно? Могу подкинуть.
            0
            Не совсем.
            Надо знать как, что и каким цветом подсветить.
              0
              что? — ключевые слова, каким цветом? — можно взять за основу подсветку на википедии, как? — это уж ты сам должен знать.
            0
            а Ruby? и ROR? :'(
              0
              К сожалению, тоже нет…
              • UFO just landed and posted this here
                  +1
                  Haskell тоже есть? :-D
                  • UFO just landed and posted this here
                    0
                    Если еще и с «правильным» форматированием
                    (старое убирается, новое делается)
                    например
                    if ( $flag )
                    {
                    do();
                    }

                    на
                    if($flag) {
                    do();
                    }

                    и изменением «правил» обзывания переменных…
                    например переменных вида $a_var на $aVar

                    то вообще бы цены не было ;)
            +2
            Вот бы ещё « на & quot; заменял, так вообще цены бы не было. Пока это единственный способ обходить замену кавычек на «лапки» в коде 8(
              +1
              Грр, хабрапарсер опять исковеркал. Вобщем хочу, чтобы символ двойной кавычки заменялся хтмлным эквивалентом.
                +1
                Сейчас посмотрим что можно сделать…
                  +1
                  Сделано.
                  Проверь пожалуйста.
                    +1
                    Отлично, работает! Спасибо большое! Ещё пожелание — если в конце кода нет перевода строки, добавлять, иначе «This source code was highlighted with Source Code Highlighter.» смотрится некрасиво.
                      0
                      Хммм, у меня не получается воспроизвести этот баг…
                        0
                        Полный багрепорт:
                        ФФ3. source.virtser.net/default.aspx. Ввожу текст без перевода строки на конце (просто несколько символов). Копирую текст в буфер обмена. habrahabr.ru Создаю хабратопик. В текст вставляю код из Хайлайтера. Ввожу мусор в заголовок и теги. Результат photofile.ru/photo/aeremihin/135138420/xlarge/137864417.jpg Можно видеть, что надпись находится на той же строке, а не идёт с отступом. Чтобы избежать такой ситуации надо в конец кода дописать перевод строки.
                          0
                          Забыл дописать, что перевод строки в конце кода является хорошим стилем программирования. Например, gcc пишет предупреждение, если файл не заканчивается пустой строкой, а в vim это вообще поведение по умолчанию — файл всегда заканчивается символом перевода строки (естественно, это можно отключить).
                          gcc a.cpp
                          a.cpp:4:2: предупреждение: no newline at end of file

                            0
                            Да, теперь вижу.
                            Спасибо, исправлю.
                  +5
                  А PHP планируется?
                    +1
                    В принципе, его как Си подсвечивать можно :)
                      0
                      нет.
                        +2
                          0
                          Source Code Highlighter в последнее время работает как-то странно. Он генерирует СТОЛЬКО лишних font-ов что парсер перестаёт его понимать.

                          Ваш мне понравился гораздо больше.
                          Только, при вставке русского текста результат подсветки показывается правильно, а у исходника проблемы с кодировкой. Поравьте пожалуйста.

                          И ещё просьба: заменять отступы на   и, помимо blockquote обрамлять текст в code. Я пока обновлённую версию парсера не выложил, но в ней, в теге code отключена типографика
                            0
                            :) отступы на  
                              0
                              Ок, посмотрю что тама с кодировками…
                              code добавлю, отступы заменять на & nbsp; ???
                                0
                                Да, желательно ) Только надо учесть что где-то табы, где-то пробелы
                          0
                          Код не предназначен для копирования в буфер обмена? Номера строк тоже ведь туда попадут.
                            0
                            Если не ставить номера строк, то текст отлично подходит для копирования.
                              +1
                              Логично :)
                              0
                              В Опере копируется без номеров строк.
                                0
                                Предназначен.
                                Они туда не попадают.
                                  –1
                                  Прошу прощения, был введен в заблуждение методом выделения текста в Chrome.
                                0
                                В сообщении
                                * This source code was highlighted with Source Code Highlighter.

                                не работает ссылка.
                                  0
                                  Странно… у меня работает.
                                  +1
                                  C# 3
                                  var t = new Generic<ClassName>();

                                  Не подсвечивает имя типа ClassName. Можно поправить?
                                    0
                                    Добавил Generic в словарь атрибутов. Теперь должно подсвечивать.
                                    С C# 3 не работал пока…
                                      0
                                      Хех. Спасибо, конечно! Теперь подсвечивает, да не то:)
                                      var t = new Generic<ClassName>();

                                      А надо так:
                                      var t = new Generic<ClassName>();
                                        0
                                        Ох… Хабр, хабр…

                                        Короче, выделять цветом не слово Generic, а слово ClassName, пжлст!!!
                                          0
                                          нет, этого не будет.
                                          Это название класса.
                                          У каждого оно свое.

                                            0
                                            Что значит не будет?:) VS именно так и подсвечивает.
                                      0
                                      Следующее выражение сномит башню:

                                      <script type='text/javascript' src='/js/png.js'></script>
                                      <script type='text/javascript' src='/js/swfobject.js'></script>
                                      
                                        0
                                        Что сносит?
                                        Я ничего необычного не вижу…
                                          0
                                          Плохо смотрите
                                          <script type='text/javascript' src='/js/png.js'></script>
                                          <script type='text/javascript' src='/js/swfobject.js'></script>
                                            0
                                            А ведь в предпросмотре текст пестрил разноцветными красками!

                                            Короче, просто взгляните повнимательнее.
                                              0
                                              <script type='text/javascript' src='/js/png.js'></script>
                                              <script type='text/javascript' src='/js/swfobject.js'></script>
                                                0
                                                Это ХабраЕдитор комментарий убирает все цвета.
                                                В постах такое не происходит.
                                                  0
                                        0
                                        Еще можно добавить небольшую настройку шрифтов: размер и пару-тройку популярных моноспейсов
                                          0
                                          ура! Нормальные кавычки! Спасибо.
                                          • UFO just landed and posted this here
                                            • UFO just landed and posted this here
                                                0
                                                По-моему, посдветка для C# вполне справляется с С++
                                                0
                                                actionscript'a нет. Пригодилось бы. Часто помогаешь с кодом, а как запостишь — подсветки очень не хватает.
                                                  0
                                                  А есть коренные отличия с JavaScript?
                                                    0
                                                    конечно есть. Особенно в третьем.
                                                  +1
                                                  Спасибо.

                                                  А вообще, если не ошибаюсь, это базируется на одном из примеров регулярных выражений. Может открыть в опенсорс? Пусть народ себе дописывает нужные языки, ключевые слова и т.д., а на хостинг выкладываться уже будет только с твоего ведома (через тебя конкретно).
                                                    +1
                                                    Ну в общем-то код этого проекта всегда был открыт, его можно скачать здесь — www.manoli.net/csharpformat/CSharpFormat.zip

                                                    Я только переделал его для правильной работы с ХабраЕдитором, изменил и добавил несколько функций.
                                                      0
                                                      Я, к стати, тоже как только проблема объявилась начал писать подобную штуку. Даже практически закончил, но появился Code Highlighter :) Так и забросил. Но я, вроде, на базе чего-то другого делал.
                                                  • UFO just landed and posted this here

                                                    Only users with full accounts can post comments. Log in, please.