AkelPad Forum Index AkelPad
Support forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Coder plugin (2)
Goto page Previous  1, 2, 3 ... 56, 57, 58 ... 61, 62, 63  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins
View previous topic :: View next topic  
Author Message
YuS



Joined: 15 Sep 2013
Posts: 126

PostPosted: Wed Jul 30, 2014 1:54 pm    Post subject: Reply with quote

Infocatcher wrote:

работает только «t[a-z]+?t», а «t[a-z]+t» не находит вообще ничего (я так понимаю, оно «поедает» всю последовательность, а назад, если не найдено, не возвращается). И явно больше похоже не «t[a-z]++t».

Не, в данном случае всё нормально, самая обычная жадность...
"t" попадает в диапазон "a-z" и будет им захвачено, даже при условии возврата, для поиска возможных вариантов совпадения. Но в итоге не будет найдено общего совпадения из-за отсутствия в тексте "t" (она уже захвачена жадным шаблоном "[a-z]+"), т.к. последняя "t" шаблона будет искать свое совпадение... ревнивая же квантификация, просто ускорит все проверки и не даст алгоритму возвращаться, т.е. захватывает однократно максимально возможный вариант и идет на перекур (ну, это классически). Smile


Last edited by YuS on Fri Aug 01, 2014 5:16 am; edited 3 times in total
Back to top
View user's profile Send private message
Skif_off



Joined: 20 Oct 2013
Posts: 366

PostPosted: Wed Jul 30, 2014 6:01 pm    Post subject: Reply with quote

Infocatcher wrote:
DV wrote:
Дело не только в "ИЛИ", а ещё и в наличии символа после "+".
Например, такой вариант работает корректно: (\()(c(a|d)+)
А как только добавляем "r" после "+", то перестаёт срабатывать на комбинации (caar, (cadr, (cdar и т.д.: (\()(c(a|d)+r)
Помнится, там чрезмерная жадность реализована, так что есть смысл попробовать (\()(c(a|d)+?r)

Пробовал, не работает.
Back to top
View user's profile Send private message
Cuprum



Joined: 28 Sep 2011
Posts: 213

PostPosted: Wed Jul 30, 2014 7:38 pm    Post subject: Reply with quote

YuS wrote:

Конечно, будет. Надо здесь:
Code:
"(-)?(\d{1,8})\s*(px|em|s|rem|deg)?"   "\1=(0,${DEL2},0) \2=(0,${NUM},0) \3=(0,${DEL1},0)"

${NUM} - заменить либо на 0, либо подсветить чем-то более нейтральным...

Сделал пока так:
Code:
0   "(-)?(\d{1,8})\s*(%|ch|cm|deg|dpcm|dpi|dppx|em|ex|grad|in|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vw)?"   "\1=(0,${DEL2},0) \2=(0,0,0) \3=(0,${IF},0)"

+ еще добавки.

css.coder 1.10

Quote:
Кстати, \d{1,8} - не мало для захвата цифр? Число символов брал практически "с потолка"

Пусть пока остается, если что, потом добавим.
Такой еще момент. Можно ли как-то ловить по признаку "Находится внутри ближайших {...}". Просто заметил вот такую подсветку


Т.е. подсвечивается как класс, но тут этого не надо.
Back to top
View user's profile Send private message
YuS



Joined: 15 Sep 2013
Posts: 126

PostPosted: Thu Jul 31, 2014 12:04 am    Post subject: Reply with quote

Cuprum wrote:

Такой еще момент. Можно ли как-то ловить по признаку "Находится внутри ближайших {...}". Просто заметил вот такую подсветку


Т.е. подсвечивается как класс, но тут этого не надо.

В текущей реализации движка регулярок (чуть выше обозначили проблему с жадностью квантификаторов) и ограничений построчного их прохода в плагине кодера, однозначно сделать это невозможно.
Но с некоторыми условностями, можно попробовать обойти ограничения, как-то так:
Code:
0   "(\.)(?!\d)(?!--)(?!-\d)(\w|-)+(?![^;}]*?[;}])"   "\1=(0,${DEL2},0) \2=(0,${VAR},0)"

- условности:
1. Если в строке не будет символа ";", то невалидные классы, находящиеся внутри {...}, будут подсвечены.
2. Если вне блока {...} в строке будет присутствовать ";", то валидные классы не будут подсвечены.
Кстати, по аналогии можно сделать проверку и для идентификаторов.
Back to top
View user's profile Send private message
Cuprum



Joined: 28 Sep 2011
Posts: 213

PostPosted: Thu Jul 31, 2014 10:29 am    Post subject: Reply with quote

YuS wrote:

Но с некоторыми условностями, можно попробовать обойти ограничения, как-то так:
Code:
0   "(\.)(?!\d)(?!--)(?!-\d)(\w|-)+(?![^;}]*?[;}])"   "\1=(0,${DEL2},0) \2=(0,${VAR},0)"


Тогда не подсвечивается класс в таком виде
Code:
.ededed {color: black;}

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

Т. е. если бы было, то решило все проблемы с подсветкой?
Back to top
View user's profile Send private message
YuS



Joined: 15 Sep 2013
Posts: 126

PostPosted: Thu Jul 31, 2014 3:47 pm    Post subject: Reply with quote

Cuprum wrote:

Тогда не подсвечивается класс в таком виде
Code:
.ededed {color: black;}


Да, этот момент не учтен. Но исправить тоже можно, надо добавить "{" в исключающий символьный класс:
Code:
0   "(\.)(?!\d)(?!--)(?!-\d)(\w|-)+(?![^;}{]*?[;}])"   "\1=(0,${DEL2},0) \2=(0,${VAR},0)"


Cuprum wrote:

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

Т. е. если бы было, то решило все проблемы с подсветкой?

Многострочный проход? Не факт. Он может решить некоторые проблемы, но привнести другие... тут надо выбирать меньшее из зол.
Back to top
View user's profile Send private message
Cuprum



Joined: 28 Sep 2011
Posts: 213

PostPosted: Fri Aug 01, 2014 9:15 am    Post subject: Reply with quote

YuS
а можно ли как сделать, чтобы цифра не выделялась в таком правиле
Code:
-webkit-transform: translate3d(10px, 10px, 10px);

в слове "translate3d"?

Доп.
Разобрался. Правило должно быть таким
Code:
0   "(-)?(\d{1,8})(%|ch|cm|deg|dpcm|dpi|dppx|em|ex|grad|in|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vw)"   "\1=(0,${DEL2},0) \2=(0,0,0)  \3=(0,${IF},0)"

Но тогда придется закомментировать эту строку
Code:
;3   0   ${NUM}   0   "0123456789"

Если надо чтобы отдельные цифры не светились.
Back to top
View user's profile Send private message
YuS



Joined: 15 Sep 2013
Posts: 126

PostPosted: Fri Aug 01, 2014 2:06 pm    Post subject: Reply with quote

Имхо, выделенные цифры более наглядны...
Но если надо, чтобы цифры внутри текста не подсвечивались:
Code:
0   "(-)?(?:(?<=\s)|(?<=\W))(?<![a-z])(\d{1,8})\s*(%|ch|cm|deg|dpcm|dpi|dppx|em|ex|grad|in|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vw)?\b"   "\1=(0,${DEL2},0) \2=(0,${NUM},0) \3=(0,${DEL1},0)"
Back to top
View user's profile Send private message
Cuprum



Joined: 28 Sep 2011
Posts: 213

PostPosted: Sat Aug 02, 2014 11:03 am    Post subject: Reply with quote

YuS
Тогда получается такой вариант:

css.coder 1.11
Я там подкорректировал, чтобы убрать подсветку, если между числом и ед. измерения есть пробел, т.к. это не по стандарту Wink
Back to top
View user's profile Send private message
YuS



Joined: 15 Sep 2013
Posts: 126

PostPosted: Sat Aug 02, 2014 2:36 pm    Post subject: Reply with quote

Cuprum wrote:

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

Так значит это где-то тут прописано?
Ага, вот вроде что-то похожее:
Quote:
The format of a length value (denoted by <length> in this specification) is a <number> (with or without a decimal point) immediately followed by a unit identifier (e.g., px, em, etc.). After a zero length, the unit identifier is optional.

Ну, значит будем считать версию 1.11 релизом файла подсветки css...

ЗЫ Только \b из моего варианта лучше добавить, иначе будет подсвечиваться набор символов типа: 345emabc
Back to top
View user's profile Send private message
Cuprum



Joined: 28 Sep 2011
Posts: 213

PostPosted: Sun Aug 03, 2014 5:03 pm    Post subject: Reply with quote

YuS
Quote:
Только \b из моего варианта лучше добавить, иначе будет подсвечиваться набор символов типа: 345emabc

Тогда "%" после числа не подсвечиваются.
Back to top
View user's profile Send private message
AMAlex



Joined: 04 Aug 2014
Posts: 2

PostPosted: Mon Aug 04, 2014 9:22 am    Post subject: Reply with quote

Добрый день.
Помогите разобраться.

Почему здесь все работает,
Code:
Words:
;1   0   ${AREA}   0   "${AREA}"
;1   0   ${VAR}   0   "${VAR}"
;1   0   ${OP}   0   "${OP}"
;1   0   ${STR}   0   "${STR}"

А здесь ни как не работает? Sad
Code:
QuotesRE:
0   "\$\{\w{2,4}\}"  "\0=(0,\0,0)"
;0   "\$\{(OP)\}"  "\0=(0,${\1},0)"

Тут выключено.
Code:
Quotes:
;5   0   ${VAR}   0   "${"   "}"   "$"   ""   ""

Наверно нельзя "указатель на указатель".


Last edited by AMAlex on Tue Aug 05, 2014 6:55 am; edited 3 times in total
Back to top
View user's profile Send private message
Drugmix



Joined: 08 Apr 2013
Posts: 444

PostPosted: Mon Aug 04, 2014 9:51 am    Post subject: Reply with quote

Вряд ли такое допустимо:
Quote:
"\0=(0,\0,0)"
Back to top
View user's profile Send private message
AMAlex



Joined: 04 Aug 2014
Posts: 2

PostPosted: Mon Aug 04, 2014 9:57 am    Post subject: Reply with quote

Допустимо. Так работает.
Code:
0   "#([A-F\d]{6}|[A-F\d]{3})\b"  "\0=(0,\0,0)"
0   "#([A-F\d]{6}|[A-F\d]{3})\b"  "\0=(0,\1,0)"
0   "#([A-F\d]{6}|[A-F\d]{3})\b"  "\1=(0,#911,0)"

Tак не работает. Без решетки это уже имя.
Code:
0   "#([A-F\d]{6}|[A-F\d]{3})\b"  "\1=(0,911,0)"


Last edited by AMAlex on Mon Aug 04, 2014 5:32 pm; edited 6 times in total
Back to top
View user's profile Send private message
YuS



Joined: 15 Sep 2013
Posts: 126

PostPosted: Mon Aug 04, 2014 4:35 pm    Post subject: Reply with quote

Cuprum wrote:

Тогда "%" после числа не подсвечиваются.

Значит "%" надо вернуть в секцию Delimeters, где этот символ был записан ранее, в том числе и в версии css.coder v1.11
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins All times are GMT
Goto page Previous  1, 2, 3 ... 56, 57, 58 ... 61, 62, 63  Next
Page 57 of 63

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


SourceForge.net Logo Powered by phpBB © 2001, 2005 phpBB Group