parser

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

 

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

transliter.p или продолжение старого треда...

BeaVe 01.05.2006 14:44

В продолжение треда о классе транслитератора...
@CLASS
transliter

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

@format[params][table]
^if(!def $params.string){
	^throw[transliter.string;^$.string option MUST be specified.]
}
^if($params.table is 'table'){
	$table[$params.table]
}{
	^switch[$params.table]{
		^case[DEFAULT]{
			$table[$default]
		}
		^case[GOST]{
			$table[$GOST]
		}
	}
}
^if($params.untranslit){
$table[^table::create{lat	rus
^table.menu{
$table.lat	$table.rus
}
}]
}
$result[^params.string.replace[$table]]
^if(def $params.optimize){
	^switch[$params.optimize]{
		^case[whitespaces]{
			$result[^result.match[\s][g]{_}]
		}
	}
}
#end @format[]
Примеры вызовов.
$tmp[^transliter:format[
	$.table[GOST]
	$.string[Вася Петров Шьявлев Эмолъволяновь]
]]
$tmp
^transliter:format[
	$.table[GOST]
	$.untranslit(1)
	$.string[$tr1]
	$.optimize[whitespaces]
]
$.string[STRING] - обязательный параметр. В него передаётся строка для преобразования.
$.table[STRING/TABLE] - необязательным параметром. В классе 2 таблицы, одна по умолчанию (мне кажется она наиболее удобная), другая - ГОСТ 16876-71. Можно передать свою таблицу. Доступное значение: GOST.
$.untranslit(INT) - необязательный параметр. Выполняет обратное преобразование.
$.optimize[STRING] - необязательный параметр. Выполняет мелкие преобразования. Доступное значение: whitespaces (заменяет пробелы на _).

  • transliter.p или продолжение старого треда..., BeaVe 01.05.2006 14:44