parser

Написать ответ на текущее сообщение

 

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

уникальность == позиция %-)

Misha v.3 03.07.2008 12:51

первое выкушенное надо вставить первым. даже в этом форуме уже подобный подход ни раз обсуждался.

md5, кстати, запросто может встретиться в тексте, особенно как в варианте Eugene-а, без /%%/ (хотя уж лучше было использовать что-то более стандартное, например /**/)

т.е. предлагается что-то типа этого:
@textPreprocess[text][tTag]
$result[$text]
^if(^result.pos[<] >= 0 || ^result.pos[>] >= 0){
	^if(!def $tRepl)
		$tRepl[^table::create{from	to^#0A<	&lt^;^#0A>	&gt^;}]
	}
	$tTag[^table::create{sValue}]
	$result[^result.match[(</?(?=[a-z])[^^>]+>)][gi]{/*UNIQUE-MARKER*/^tTag.append{^taint[$match.1]}}]
	$result[^result.replace[$tRepl]]
	^if($tTag){
		$result[^result.match[/\*UNIQUE-MARKER\*/][g]{^taint[as-is][$tTag.sValue]^tTag.offset(1)}]
	}
}
### End @textPreprocess
правда в случае работы с данными произвольных taint-расскрасок table не подходит (в тексте может быть clean \t\n, которые поломают таблицу) и нужно использовать хеш, что незначительно изменит код, однако работать будет медленнее (согласно моим давним тестам)