• Страница 1 из 1
  • 1
Тестим подсветку кода.
Aleko
Дата: Суббота, 07.11.2009, 03:16 | Сообщение # 1
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
переписал подсветку кода. в паблик пока не поставил и на форум не установил. хочу сначала пофиксить возможные баги. так что вот вам тестовый файл: 2 поля, в верхнее впечатываете код, в нижнем он автоматически подсвечивается. пробуйте найти ошибки подсветки и пишите о них в тему.

я проверял во всех ослах и в нормальных браузерах. работает везде за исключением переключения режима переноса строк в осле 5.5 и глюками этого же переключения в 6 и 7 ослах. в 8 всё отлично.

- исправлены ошибки с подсветкой регулярных выражений (вродебы 100%)
- вообще много чего исправлено


Бесплатные обои.
  
DSC
Дата: Суббота, 07.11.2009, 12:04 | Сообщение # 2
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
Не делает отступы:
Прикрепления: test.bmp (486.1 Kb)


aka Latro

Сообщение отредактировал DSC - Суббота, 07.11.2009, 12:10
  
Aleko
Дата: Суббота, 07.11.2009, 19:04 | Сообщение # 3
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
DSC, знаю. Это дань кроссбразуерности - в осле сделать сохранение форматирования текста очень сложно ввиду нескольких свалившихся в кучу багов - innerHTML, стирающего форматирование и очень криво работающего white-space.

Кстати нумерации строк не будет ни в каком виде.


Бесплатные обои.
  
DSC
Дата: Воскресенье, 08.11.2009, 11:00 | Сообщение # 4
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
А, ну тогда ещё одно, юкозовские коды не подсвечиваются!

aka Latro
  
Aleko
Дата: Понедельник, 09.11.2009, 02:48 | Сообщение # 5
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
DSC, подсветка конструкций отключена. Она будет позднее.

Бесплатные обои.
  
Aleko
Дата: Понедельник, 09.11.2009, 04:14 | Сообщение # 6
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Тема ап, прошу внимания. Сейчас добавляю в подсветку новую фичу - распознавание и подсветка js кода в css expressions. Для нахождения самих эспрешенов написал вот такую страшноужассную регулярку, которая работает со скобками и определяет, когда скобки закрыты, а когда нет.

Code
<script>:/(expression\s*)(\((?:\\\)|(\((?:\\\)|(?:\(.*?)\)|(?:'.*?)\)(?:.*?')|(?:\/.*?)\)(?:.*?\/)|(?:".*?)\)(?:.*?")|[^\)])*\))|(?:\/.*?)\)(?:.*?\/)|(?:'.*?)\)(?:.*?')|(?:".*?)\)(?:.*?")|[^\)])*\))/ig</script>

Меня интересует, можно ли вообще её сократить? (про мелкие сокращения с кавычками и слешами знаю, но число групп лень считать))

Пример работы регулярки (зеленым выделен определенный регуляркой участок):

expression()

с пустыми скобками не определяется, так как подсвечивать нечего.

expression())

определит до первой закрывающей скобки

expression(\))

но пропустит заслешованную скобку

expression(')'")"/)/)

или скобки в кавычках и в регулярном выражении

expression(())

так же пропустит закрытые скобки

Вроде бы всё. Работает у меня всё верно. млин. нашел ошибку, туплю...


Бесплатные обои.
  
Aleko
Дата: Понедельник, 09.11.2009, 23:15 | Сообщение # 7
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Так, новая версия пошла в паблик. тестим прямо на форуме.

Бесплатные обои.
  
Aleko
Дата: Понедельник, 16.11.2009, 04:14 | Сообщение # 8
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Уважаемые пользователи!

Срочно начинаем дружно искать баги в новой версии подсветки кода. В паблик она ещё не выложена но уже стоит на моем сайте. Из новшеств: поочередная подсветка строк, нумерация строк, возможность переносить длинные строки, если они не влезают в экран.

Я так же сделал возможным соблюдение разметки и локально у меня всё отлично работало, но вот ucoz увы сам запарывает всю разметку, так что эта функция отключена.

Скрипт почти полностью переписан и должен работать быстрее. Но ошибки наверняка есть. очень прошу мне помочь с дебугой)

Пример работы:

Code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Верстка от AD</title>
<style type="text/css">
html, body {margin:0;height:100%;}
#wrapper {height:auto !important;height:100%;min-height:100%;min-width:800px;}
#header {height:200px;}
#left {float:left;width:200px;}
#right {float:right;width:200px;}
#center {margin:0 200px 0 200px;}
#spacer {height:100px;}
#footer {height:100px;margin-top:-100px;}
.clear {clear:both;}
</style>
</head>
<body>
<div id='wrapper'>
   <div id='header'>
   <!-- Содержимое хэдэра -->
   </div>
   <div id='container'>
    <div id='left'>
    <!-- Содержимое левой колонки -->
    </div>
    <div id='right'>
    <!-- Содержимое правой колонки -->
    </div>
    <div id='center'>
    <!-- Содержимое центральной колонки -->
    </div>
   </div>
   <div class='clear'></div>
   <div id='spacer'></div>
</div>
<div id='footer'>
<!-- Содержимое футера -->
</div>
</body>
</html>


Бесплатные обои.
  
Aleko
Дата: Понедельник, 16.11.2009, 04:50 | Сообщение # 9
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Code
Тест запарывания пробелов системой:
Тут должно быть 10 пробелов: !          !

Тест запарывания табов системой:
   Это текст с одним табом.
    Это текст с двумя табами.
     С тремя.

Такс. Пробелы не режутся. А вот табы режутся. Обидно. Ко всем в обработанном коде появляется куча лишних пробелов. Надо будет написать свой бб код [code] с нормальной обработкой символов.


Бесплатные обои.
  
Aleko
Дата: Понедельник, 16.11.2009, 05:04 | Сообщение # 10
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Так, в 6 и 7 ослах всё падает. это я знаю.

Бесплатные обои.
  
DSC
Дата: Понедельник, 16.11.2009, 10:36 | Сообщение # 11
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
Aleko, ты написал, что есть нумерация строк, и где она?

aka Latro
  
frost
Дата: Понедельник, 16.11.2009, 12:20 | Сообщение # 12
молчун
Группа: Проверенные
Пользователь №: 344
Сообщений: 29
Получено оценок: 7
посмотри внимательно на код... слева синим цветом :D
  
frost
Дата: Понедельник, 16.11.2009, 12:25 | Сообщение # 13
молчун
Группа: Проверенные
Пользователь №: 344
Сообщений: 29
Получено оценок: 7
Code

<!--
Многострочный коммент
работает
-->
  
DSC
Дата: Понедельник, 16.11.2009, 12:38 | Сообщение # 14
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
frost, сейчас уже есть)
Aleko, посмотри на сообщение #13, там в нумерации 1 и 2 слелись!


aka Latro
  
Aleko
Дата: Понедельник, 16.11.2009, 21:23 | Сообщение # 15
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
DSC, сейчас уже всё нормально.

Code
1
2

3


Бесплатные обои.
  
MrOizo
Дата: Понедельник, 16.11.2009, 22:51 | Сообщение # 16
говорун
Группа: Проверенные
Пользователь №: 42
Сообщений: 188
Получено оценок: 6
Aleko, у меня почему-то цифры сливаются



  
Aleko
Дата: Вторник, 17.11.2009, 01:21 | Сообщение # 17
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
нда, в опере глюк

Бесплатные обои.
  
Aleko
Дата: Вторник, 17.11.2009, 01:24 | Сообщение # 18
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
вернул пока старый вариант.

Бесплатные обои.
  
frost
Дата: Вторник, 17.11.2009, 12:30 | Сообщение # 19
молчун
Группа: Проверенные
Пользователь №: 344
Сообщений: 29
Получено оценок: 7
Aleko, для нумерации лучше такой код
Code

<script>
    eachLine = function() {
     var _8 = studioad.get(".codeMessage")
     for (_9 = 0; _8.length > _9; _9++) {
      var _10, _1e, _2a, _3a, _3b, _3c, _4a;
      _10 = _8[_9];
      _10e = _10.innerHTML;
      _11 = 1;
      _12a = /*@cc_on!@*/false ? /(<BR>)/ig : /(<br(?:\s*\/)?>)/ig;
      _12b = /(<td class=['"]?number['"]?>)(\d{1})\.(<div.*?>)?(<\/td>)/ig;
      _12c = /(<td class=['"]?number['"]?>)(\d{2})\.(<\/td>)/ig;
      _12d = _10e.replace(_12a, function () {
       return '</td></tr><tr><td class="number">' + (++_11) + '.</td><td class="content">'
      });
      tabs = function () {
       _10e = '<table class="tbl" border="0" cellpadding="0" cellspacing="0"><tr><td class="number">1.<div style="overflow:hidden;width:35px;"></div></td><td class="content">' + _12d + '</td></tr></table>';
       if (_11 > 9 && _11 < 100) {
        _10e = _10e.replace(_12b, '$10\$2.\$3')
       }
       else if (_11 >= 100 && _11 < 1000) {
        _10e = _10e.replace(_12b, '$10\$2.\$3').replace(_12c, '$10\$2.\$3')
       }
       _10e = _10e.replace(/(<td class=['"]?content['"]?>)(<\/(td|tr)>)/ig, '$1 $2')
      };
      tabs();
      _10.innerHTML = _10e +'<div class="menu"><a href="javascript:" onclick="setbrs(this,'+_9+');">не переносить динные строки</a></div>'
     }
    };eachLine();
</script>

работает даже в ie5;

а для табов можно заменять напирмер __tab4__, __tab3__, ... 4 3 - количествро табов

Code

<script>
    padTab = function () {
                   var oneTabPaddingPx = 30;
     var _13 = studioad.get(".content");
     for (_14 = 0; _13.length > _14; _14++) {
      var _15 = _13[_14];
      _15.innerHTML = _15.innerHTML.replace(/(__tab)(\d+)(__)/g, function (_16a, _16b, _16c, _16d) {
       _15.style.paddingLeft = _16c * oneTabPaddingPx + 'px';
       return _16a.innerHTML = '';
      });
     }
    };padTab();
</script>

класс content потомучто в table -> content (думаю ты понял)
работает тоже везде


Сообщение отредактировал frost - Вторник, 17.11.2009, 12:35
  
Aleko
Дата: Вторник, 17.11.2009, 20:06 | Сообщение # 20
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
frost, спасибо конечно, но лучшести не вижу. А табы убирает ucoz, я бы их сохранил в теге pre именно табами.

Бесплатные обои.
  
frost
Дата: Вторник, 17.11.2009, 23:05 | Сообщение # 21
молчун
Группа: Проверенные
Пользователь №: 344
Сообщений: 29
Получено оценок: 7
ну этот код получше тем что более точно под себя можно подогнать оформление..
а насчет тега pre в ie вроде какието баги есть..
помойму там не работает "\n" :)
  
Aleko
Дата: Среда, 18.11.2009, 00:19 | Сообщение # 22
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
frost, с pre я все баги решил уже. Но на ucoz его увы не поиспользуешь - код не тот выдается, лишнего куча.

Бесплатные обои.
  
Aleko
Дата: Пятница, 20.11.2009, 03:12 | Сообщение # 23
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Таакс. Значит вроде бы баги я пофиксил. И всё подсвечивается правильно. Тестим:
Code
Подсветка!!!


Бесплатные обои.
  
DSC
Дата: Пятница, 20.11.2009, 10:35 | Сообщение # 24
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
Aleko, ты конечно такой геморрой сделал, с <li> былобы гораздо проще!))

aka Latro
  
frost
Дата: Пятница, 20.11.2009, 13:32 | Сообщение # 25
молчун
Группа: Проверенные
Пользователь №: 344
Сообщений: 29
Получено оценок: 7
DSC, так настроить диз проще
  
DSC
Дата: Пятница, 20.11.2009, 13:35 | Сообщение # 26
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
ну пох, я нашёл типо баг, короче он не распознаёт вот такое: &# 1074;&# 1086;&# 1090;(без пробелов после решётки)

aka Latro

Сообщение отредактировал DSC - Пятница, 20.11.2009, 13:36
  
MrOizo
Дата: Пятница, 20.11.2009, 15:38 | Сообщение # 27
говорун
Группа: Проверенные
Пользователь №: 42
Сообщений: 188
Получено оценок: 6
А где можно качнуть последнюю версию подсветки?

  
neio
Дата: Пятница, 20.11.2009, 15:41 | Сообщение # 28
говорун
Группа: Проверенные
Пользователь №: 128
Сообщений: 195
Получено оценок: 26
MrOizo, вроде вот
Но эта версия вроде в паблик еще не вышла :?
  
Aleko
Дата: Пятница, 20.11.2009, 17:21 | Сообщение # 29
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Quote (DSC)
я нашёл типо баг

C этим придется смириться.


Бесплатные обои.
  
DSC
Дата: Пятница, 20.11.2009, 17:27 | Сообщение # 30
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
Aleko, да?, ну ладно...) хотя у меня вроде есть идея как такое сделать, хочешь напишу в аську)

aka Latro
  
Aleko
Дата: Суббота, 21.11.2009, 22:02 | Сообщение # 31
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Так, снова всё обновил. Вроде багов нет. Проверяем.

Бесплатные обои.
  
Slimmi
Дата: Воскресенье, 22.11.2009, 07:14 | Сообщение # 32
говорун
Группа: Модераторы
Пользователь №: 5
Сообщений: 287
Получено оценок: 38
Aleko, проверяем и пока багов не наблюдаем B)

Большие фотостатусы
  
Vanofuture
Дата: Четверг, 26.11.2009, 18:38 | Сообщение # 33
молчун
Группа: Пользователи
Пользователь №: 35
Сообщений: 27
Получено оценок: 2
Знаю что не так важно, но всё-таки regexp-проблемы не решены :D
Code

<script type="text/javascript">

var lol = i++ //ilold

var lol = (navigator.cookieEnabled && /666/ig.test('666'));

var brainfuck = /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\
\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|
2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1
f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/i;

</script>
  
Aleko
Дата: Пятница, 27.11.2009, 01:04 | Сообщение # 34
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Vanofuture, я упростил их решение) кстати, в dreamweaver экспы подсвечиваются только после скобки круглой и равно. Всё, больше ни после чего. Так что я хз, к чему склонятся)) Что касается браинфака: смотрим скрин (слеши то экранировать надо и регекспы в одну строку писать):

Прикрепления: 3825823.jpg (80.0 Kb)


Бесплатные обои.
  
Vanofuture
Дата: Пятница, 27.11.2009, 18:24 | Сообщение # 35
молчун
Группа: Пользователи
Пользователь №: 35
Сообщений: 27
Получено оценок: 2
Quote (Aleko)
в одну строку писать

Fukken uCoz parser! ^_^
Quote (Aleko)
слеши то экранировать

В наборах символах разве тоже?
Code
javascript: alert(/[asd/]+/.test('/'))

Quote (Aleko)
в dreamweaver

Если в дриме есть ошибки не нужно их копировать :D
  
Aleko
Дата: Пятница, 27.11.2009, 21:14 | Сообщение # 36
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Quote (Vanofuture)
В наборах символах разве тоже?

на сколько я знаю - да, другое дело что ещё можно экранировать любое количество символов между \Q и \E. Вот этого я не учел, буду исправляться.


Бесплатные обои.
  
Aleko
Дата: Пятница, 27.11.2009, 22:30 | Сообщение # 37
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Вобщем вот такая регулярка у меня получилась:

Code
/(\,|\+|\=|\||&|>|<|\:|\?|\(|\[|\{)(\s*)(\/(?=[^\*])(\\\/|\\Q.*?\/.*?\\E|[^\/<>\n\r])+\/|\/\/)([gim]{0,3})/g


Бесплатные обои.
  
ZheKA
Дата: Понедельник, 10.05.2010, 21:42 | Сообщение # 38
молчун
Группа: Проверенные
Пользователь №: 89
Сообщений: 38
Получено оценок: 4
Можно ли там где
Quote
Исходный код | Переносить строки

как нибудь добавить строку "Скопировать код" ?



  
UnderShot
Дата: Вторник, 11.05.2010, 11:37 | Сообщение # 39
оратор
Группа: Модераторы
Пользователь №: 45
Сообщений: 923
Получено оценок: 85
ZheKA, флеш нужен.

Очень важная тема!
Filmzona — онлайн фильмы.
  
Hammer
Дата: Вторник, 11.05.2010, 12:57 | Сообщение # 40
молчун
Группа: Пользователи
Пользователь №: 2965
Сообщений: 9
Aleko, сделай-ка цвет выделения цифр равным с бэкраундом синим, как бы понт.
  
ZheKA
Дата: Понедельник, 17.05.2010, 16:43 | Сообщение # 41
молчун
Группа: Проверенные
Пользователь №: 89
Сообщений: 38
Получено оценок: 4
Quote (UnderShot)
ZheKA, флеш нужен.

А разве на JS нельзя?



  
DSC
Дата: Понедельник, 17.05.2010, 17:02 | Сообщение # 42
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
ZheKA, нет нельзя!

aka Latro
  
  • Страница 1 из 1
  • 1
Поиск:
© Studioad.ru 2006 · 2010. Использование материалов форума на сторонних ресурсах без прямой обратной ссылки строго запрещено. Хостинг от uCoz.