- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
# save all blocks to %blocks. Replace first block with <block blockname />
sub _parse_block {
my $tag = $_[1];
last unless $_[0]=~s#($tag->[0]block +([^ /]*?) *$tag->[1])((.*?)$tag->[0]/?block$tag->[1])#
my($opentag,$source,$bname,$bcode, $retval) = ($1,$3, $2, $4, '');
if( $bcode =~m|$tag->[0]block +[^ /]*? *$tag->[1]|){
_parse_block($source, $tag);
$retval = $opentag.$source;
}else{
$retval = "$tag->[0]block $bname /$tag->[1]" unless exists $blocks{$bname};
$bcode=~s%$tag->[0](:? |/)*parent(:? |/)*$tag->[1]%$blocks{$bname}%g;
$blocks{$bname} = $bcode;
}
$retval;
#seg;
}
foreach my $tag( @{$self->{tag_symbols}} ){
_parse_block($code,$tag) while(1);
}
#if <blockmode> turned on, delete all data that not in blocks until </blockmode> or end of code
foreach my $tag( @{$self->{tag_symbols}} ){
$code=~s%$tag->[0] *blocks?(?:mode?)? *$tag->[1](.*?)(?:(?:$tag->[0] *\/ *blocks?(?:mode?)? *$tag->[1])|(';#end of code))%
$_ = $1; my $end_of_code = $2;
my $retval;
$retval .= $1 while( m/($tag->[0]block +[^ ]*? *\/.*?$tag->[1])/g );
$retval.$end_of_code;
%esg;
#
}
# replace <block blockname /> with a code block
foreach my $tag( @{$self->{tag_symbols}} ){
while($code=~s|$tag->[0]block +([A-zА-я0-9_-]*?) */.*?$tag->[1]|$blocks{$1}|eg){};
};
Кусок шаблонизатора. Парсинг вложенных тегов регулярками.
mac-t 03.01.2013 00:29 # 0
А вы бы за что?
Dummy00001 03.01.2013 03:54 # 0
то же /[A-zА-я]/ чего стоит...
с такими регулярками, можно было бы уже и сабрутин на-eval()-ить и закэшировать.
ЗЫ интересно какой редактор вот те `#seg;` и `%esg;` правильно вообще захайлайтит? надо будет в емаксе этот код открыть.
nyaknyan 03.01.2013 04:13 # 0
Хайлайтится с кастомными разделителями нормально нотпадом++, только код в замене не хайлайтится как код.
Вообще это мой старый код, он говно, стоило бы сделать на стеках, а не этой рекурсивной регуляркохуйне, но переписывать лень, оно просто работает.
guest 05.01.2013 05:39 # 0
kate (katepart) к примеру. Пруфпик: http://rghost.ru/42744334/image.png
Dummy00001 05.01.2013 12:24 # 0
roman-kashitsyn 05.01.2013 14:09 # +2
Вы так говорите, будто vim находится примерно на том же уровне, что блокнот.
Dummy00001 05.01.2013 14:18 # +1
MAKAKA 14.05.2020 16:49 # 0
jojaxon 14.05.2020 16:49 # 0
MAKAKA 14.05.2020 16:56 # 0
Другого знаешь? Говноблогер такой
Drugogo 14.05.2020 16:56 # 0
Dpyroro 14.05.2020 16:58 # 0
Dpyroro 14.05.2020 16:58 # 0
Drugogo 14.05.2020 17:02 # 0
Dpyroro 14.05.2020 17:06 # 0
ATKAH4Au 14.05.2020 17:14 # 0
Kakou ykpauHckuu TpaHcJIuT )))
guest8 14.05.2020 17:17 # −999
guest8 14.05.2020 17:08 # −999
ATKAH4Au 14.05.2020 17:20 # 0
Угадайте компилятор с одной попытки.
guest8 14.05.2020 17:20 # −999
guest8 14.05.2020 17:21 # −999
ATKAH4Au 14.05.2020 17:22 # 0
А компилятор, скорее всего, «Turbo C/C++» или «Borland C/C++».
Dpyroro 14.05.2020 17:26 # +1
ATKAH4Au 14.05.2020 17:44 # 0
Dpyroro 14.05.2020 17:54 # 0
ATKAH4Au 14.05.2020 17:57 # 0
ATKAH4Au 14.05.2020 18:02 # 0
В каком порядке следуют прототипы, всем насрать, они же друг на друга не ссылаются и к физическому порядку в библиотеке тоже не привязаны.
guest8 14.05.2020 17:30 # −999
MAKAKA 14.05.2020 17:30 # 0
лол)
ATKAH4Au 14.05.2020 17:32 # 0
MAKAKA 14.05.2020 17:34 # +1
под dos нужен был специфичный API, но был и ansi.sys (для понимагния ESC кодов терминалав)
Винда свременная умеет только ConsoleAPI, но есть уже проект и
виндотерминала тоже
В conio/crt был gotoxy
ахахах, бивис
ты слышал?
Он сказал "иди ху"
mish 26.01.2013 23:15 # −2