-Музыка

 -Подписка по e-mail

 

 -Поиск по дневнику

Поиск сообщений в Flashr

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 26.02.2007
Записей:
Комментариев:
Написано: 6574


Source-Code.Me - Highlighter

Четверг, 25 Декабря 2008 г. 14:02 + в цитатник

В предыдущем посте я активно использовал вставки кусков кода в текст поста. Как вы могли видеть, текст был подсвечен и красиво оформлен. Это было сделано не спомощью стандартных средств, а с помощью самописного проекта Source-Code.ME (s-c.me).

При его написании использовалось: ASP.NET,IIS,ASP AJAX Toolkit,Log4net(логирование),URLRewriter(перезапись обращений), inettuts(Перемещаемые виджеты), jQuery(работа с куками), ManoliCode HighLighter(основа для подсветки кода).

Времени потрачено: 4 вечера-ночи.

Что нового сделано: Автоматическое определение механизма подсветки в зависимости от куска кода; PHP подсветка; Улучшенный алгоритм подсветки объектов для Csharp кода; Интегрирован inettuts в качестве компонента и виджетов; Возможность подсветки как чистым HTML'ом так и в виде CSS вставки; Добавлено выравнивание по левому краю; Возможность копирования как кода, так и конечного HTML'a по одному клику.

Что в планах: Автоматическое проставление тэгов для кода и поиск по тегам; Обсуждение куска кода при помощи F*Connect; Проверка орфографии(рус-анг) в куске кода с предложением возможных правильных вариантов; Мобильная версия =), позиционированная как Spell-Check.ME с возможностью перевода слов-фраз; Может еще какие мысли прийдут в голову.


Пример подсветки класса URLRewriter под катом, кому не влом - тестируйте =)


Copy Source | Copy HTML
  1. using System.Configuration;

  2. using System.Diagnostics;

  3. using System.Text.RegularExpressions;

  4. using System.Web;

  5. using System.Xml;

  6.  

  7. // nicked from http://www.codeproject.com/aspnet/URLRewriter.asp

  8.     public class URLRewriter : IConfigurationSectionHandler {

  9.         public static log4net.ILog Logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

  10.         protected XmlNode _oRules = null;

  11.  

  12.         protected URLRewriter() { }

  13.  

  14.         public string GetSubstitution(string zPath) {

  15.             Regex oReg;

  16.  

  17.             foreach (XmlNode oNode in _oRules.SelectNodes("rule")) {

  18.                 // get the url and rewrite nodes

  19.                 XmlNode oUrlNode = oNode.SelectSingleNode("url");

  20.                 XmlNode oRewriteNode = oNode.SelectSingleNode("rewrite");

  21.  

  22.                 // check validity of the values

  23.                 if (oUrlNode == null || string.IsNullOrEmpty(oUrlNode.InnerText)

  24.                     || oRewriteNode == null || string.IsNullOrEmpty(oRewriteNode.InnerText)) {

  25.                     Logger.Warn("Invalid urlrewrites rule discovered in web.config file.");

  26.                     continue;

  27.                 }

  28.  

  29.                 oReg = new Regex(oUrlNode.InnerText, RegexOptions.IgnoreCase);

  30.  

  31.                 // if match, return the substitution

  32.                 Match oMatch = oReg.Match(zPath);

  33.                 if (oMatch.Success) {

  34.                     return oReg.Replace(zPath, oRewriteNode.InnerText);

  35.                 }

  36.             }

  37.  

  38.             return null; // no rewrite

  39.         }

  40.  

  41.         public static void Process() {

  42.             URLRewriter oRewriter = (URLRewriter)System.Configuration.ConfigurationManager.GetSection("urlrewrites");

  43.  

  44.             string zSubst = oRewriter.GetSubstitution(HttpContext.Current.Request.Path);

  45.  

  46.             if (!string.IsNullOrEmpty(zSubst)) {

  47.                 Logger.InfoFormat("Rewriting url '{0}' to '{1}' ", HttpContext.Current.Request.Path, zSubst);

  48.                 HttpContext.Current.RewritePath(zSubst);                

  49.             }

  50.         }

  51.  

  52.         #region Implementation of IConfigurationSectionHandler

  53.         public object Create(object parent, object configContext, XmlNode section) {

  54.             _oRules = section;

  55.  

  56.             return this;

  57.         }

  58.         #endregion

  59.     }



PS: Исходники с http://source.virtser.net/ не использовались.

http://flashr.ya.ru/replies.xml?item_no=1255
Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку