parser

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

 

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

transliter.p

BeaVe 17.06.2005 20:13

Попробовал сделать класс транслитератора. Вижу, что не всё красиво и удобно... Прошу, написать мнение, предложения и если есть желание и возможность, то добавить или изменить что-нибудь.

Сам класс transliter.p:
@CLASS
transliter

@load[]
$eng[^table::create{from	to
А	A
а	a
Б	B
б	b
В	V
в	v
Г	G
г	g
Д	D
д	d
Е	E
е	e
Ё	E
ё	e
Ж	Zh
ж	zh
З	Z
з	z
И	I
и	i
Й	J
й	j
К	K
к	k
Л	L
л	l
М	M
м	m
Н	N
н	n
О	O
о	o
П	P
п	p
Р	R
р	r
С	S
с	s
Т	T
т	t
У	U
у	u
Ф	F
ф	f
Х	H
х	h
Ц	Ts
ц	ts
Ч	Ch
ч	ch
Ш	Sh
ш	sh
Щ	Shch
щ	shch
Ъ	'
ъ	'
Ы	Y
ы	y
Ь	'
ь	'
Э	Ye
э	ye
Ю	Yu
ю	yu
Я	Ya
я	ya
}]
# Таблица ГОСТ 16876-71
$gost[^table::create{from	to
А	A
а	a
Б	B
б	b
В	V
в	v
Г	G
г	g
Д	D
д	d
Е	E
е	e
Ё	E
ё	e
Ж	Zh
ж	zh
З	Z
з	z
И	I
и	i
Й	Jj
й	jj
К	K
к	k
Л	L
л	l
М	M
м	m
Н	N
н	n
О	O
о	o
П	P
п	p
Р	R
р	r
С	S
с	s
Т	T
т	t
У	U
у	u
Ф	F
ф	f
Х	Kh
х	kh
Ц	С
ц	с
Ч	Ch
ч	ch
Ш	Sh
ш	sh
Щ	Shh
щ	shh
Ъ	"
ъ	"
Ы	Y
ы	y
Ь	'
ь	'
Э	Eh
э	eh
Ю	Ju
ю	ju
Я	Ja
я	ja
}]

@format[stroke;table;string]
$type[^switch[$table]{
	^case[GOST]{$gost}
	^case[DEFAULT]{$eng}
}]
^if(def $string){
	$original[^stroke.replace[$type]]
	^switch[$string]{
		^case[DEFAULT]{^original.match[\s][g]{_}}
		^case[s]{^original.match['][g]{_}}
	}
}{
	^stroke.replace[$type]
}
ИНФО о вызове:
$translit[^transliter::load[]]
^translit.format[Вася Петров Шьявлев Эмолъволяновь;GOST]