parser

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

 

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

Транслитировщик

greg.frolov 21.10.2002 11:45

Почитал тут немного форум по 2му парсеру и вот родилась такая штука.
Ошибки возможны т.к. только что написал (за 15-20 минут). Для этого вообщем-то и постю на любимый форум =)

0. создаем вспомогательный файл (alpha.cfg) - у меня он находится в /cfg/alpha.cfg
а	б	в	г	д	е	ё	ж	з	и	й	к	л	м	н	о	п	р	с	т	у	ф	х	ц	ч	ш	щ	ъ	ы	ь	э	ю	я
а	b	v	g	d	e	yo	zh	z	i	j	k	l	m	n	o	p	r	s	t	u	f	h	c	ch	sh	shch	'	y	'	e'	yu	ya
1. У меня все работает как метод класса @SYS - поэтому для желающих "квик теста" лучше создать такой класс.
2. создаем вспомогательный метод - @normalize[]
@normalize[what]
$heh[^what.left(1)]
$lower[^what.lower[]]
$result[^heh.upper[]^lower.right(^eval(^what.length[]-1))]
3. теперь самое интересное
@abracadabra[text]
$alpha[^table::load[/cfg/alpha.cfg]]
$text[^trim[$text]]
$i(0)
^while($i < ^text.length[]){
$column[^text.mid($i;1)]

^if(^column.match[[а-яА-Я]]){
^if($column ne ^column.lower[]){
$lower[^column.lower[]]
$temp[$alpha.$lower]
^sys:normalize[$temp]
}{
$alpha.$column
}
}{$column}

^i.inc[]
}