Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.02.2015, 14:44
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Вопрос по регулярному выражению
В общем, такое дело...
Сделал парсер CSS-кода для подсветки синтаксиса:


Собираюсь делать аналогичный для JavaScript кода.
Интересует вопрос, как правильно через регулярку исключить парсинг в кавычках?
Допустим у меня есть некий JS код:
function test() {
   return 'foo';
}

var testStr = 'function test(){return \'foo\'}';


И регулярка, которая обернёт все "function" в <span class="color-pink"></span>.
В данном случае действие применится и к строке. Как более грамотно исключить парсинг строк в кавычках? Кавычки могут быть как двойные, так и одинарные, ещё нужно учесть, что кавычка не экранирована.

Всем спасибо за ответы.

Последний раз редактировалось ruslan_mart, 10.11.2015 в 22:21.
Ответить с цитированием
  #2 (permalink)  
Старый 09.02.2015, 15:03
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,205

Сообщение от Ruslan_xDD
Как более грамотно исключить парсинг строк в кавычках?
Мы, в свое время, просто "прятали" строковые константы... Т.е. меняли их на некие уникальные выражения. Типа

function test() {
   return 'foo';
}

var testStr = 'function test(){return \'foo\'}';

Превращали в

function test() {
   return 'foo';
}

var testStr = ~1~;

А после расскрасски или форматирования текста вставляли строки вместо их "идентификаторов"...
Ответить с цитированием
  #3 (permalink)  
Старый 09.02.2015, 15:13
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

ksa, есть идея все строки оборачивать в какой-нибудь <span class="code-string"></span>

И в CSS прописывать:
.code-string, .code-string * {
    color: green !important;
}


Т.е., вся строка будет одноцветной, не зависимо от внутренних элементов.
Но мне кажется, что это немного извращённо.
Ответить с цитированием
  #4 (permalink)  
Старый 09.02.2015, 15:29
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,577

Escaper - микробиблиотека для "экранирования" литералов
Сообщение от Ruslan_xDD Посмотреть сообщение
Т.е., вся строка будет одноцветной, не зависимо от внутренних элементов.
Но мне кажется, что это немного извращённо.
А если в строке закрывающая скобка например?) Не так всё просто.
__________________
29375, 35

Последний раз редактировалось Aetae, 09.02.2015 в 15:41.
Ответить с цитированием
  #5 (permalink)  
Старый 09.02.2015, 15:35
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,205

Сообщение от Ruslan_xDD
вся строка будет одноцветной, не зависимо от внутренних элементов.
Но мне кажется, что это немного извращённо
Так это же строка... Она вся т.с. "однородная". Просто некая последовательность символов...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание строки по регулярному выражению 2chan Общие вопросы Javascript 31 29.11.2014 18:07
К строкам, соответствующим регулярному выражению добавить подстроку grifangel Общие вопросы Javascript 1 18.02.2014 20:33
Строка в массив по регулярному выражению Pegas12345 Элементы интерфейса 8 27.06.2013 21:16
Всплытие событий или что то не так... Кирюха =) jQuery 6 30.03.2013 12:56
Проверка строки на соответствие регулярному выражению Telnet Общие вопросы Javascript 9 17.07.2011 22:33