Back to index

plone3  3.1.7
ru.py
Go to the documentation of this file.
00001 # -*- coding: UTF-8 -*-
00002 
00003 from plone.i18n.normalizer.interfaces import INormalizer
00004 from zope.interface import implements
00005 from plone.i18n.normalizer.base import mapUnicode
00006 
00007 # Russian character mapping
00008 mapping = {
00009     1081 : 'i', 1049 : 'I', 1094 : 'c', 1062 : 'C',
00010     1091 : 'u', 1059 : 'U', 1082 : 'k', 1050 : 'K',
00011     1077 : 'e', 1045 : 'E', 1085 : 'n', 1053 : 'N',
00012     1075 : 'g', 1043 : 'G', 1096 : 'sh', 1064 : 'SH',
00013     1097 : 'sch', 1065 : 'SCH', 1079 : 'z', 1047 : 'Z',
00014     1093 : 'h', 1061 : 'H', 1098 : '', 1066 : '',
00015     1092 : 'f', 1060 : 'F', 1099 : 'y', 1067 : 'Y',
00016     1074 : 'v', 1042 : 'V', 1072 : 'a', 1040 : 'A',
00017     1087 : 'p', 1055 : 'P', 1088 : 'r', 1056 : 'R',
00018     1086 : 'o', 1054 : 'O', 1083 : 'l', 1051 : 'L',
00019     1076 : 'd', 1044 : 'D', 1078 : 'zh', 1046 : 'ZH',
00020     1101 : 'e', 1069 : 'E', 1103 : 'ya', 1071 : 'YA',
00021     1095 : 'ch', 1063 : 'CH', 1089 : 's', 1057 : 'S',
00022     1084 : 'm', 1052 : 'M', 1080 : 'i', 1048 : 'I',
00023     1090 : 't', 1058 : 'T', 1100 : '', 1068 : '',
00024     1073 : 'b', 1041 : 'B', 1102 : 'yu', 1070 : 'YU',
00025     1105 : 'yo', 1025 : 'YO'
00026 }
00027 
00028 class Normalizer(object):
00029     """
00030     This normalizer can normalize any unicode string and returns a version
00031     that only contains of ASCII characters.
00032 
00033     Let's make sure that this implementation actually fulfills the API.
00034 
00035       >>> from zope.interface.verify import verifyClass
00036       >>> verifyClass(INormalizer, Normalizer)
00037       True
00038 
00039       >>> norm = Normalizer()
00040       >>> norm.normalize(u'\u0429')
00041       'SCH'
00042     """
00043     implements(INormalizer)
00044 
00045     def normalize(self, text, locale=None, max_length=None):
00046         """
00047         Returns a normalized text. text has to be a unicode string.
00048         """
00049         return mapUnicode(text, mapping=mapping)
00050 
00051 normalizer = Normalizer()