# -*- coding: cp1251 -*- import re mail_pattern = re.compile( '[a-zA-Z0-9_][a-zA-Z0-9_.-]{0,15}@(mail\.ru|inbox\.ru|bk\.ru|list\.ru|corp\.mail\.ru)$' ) password_pattern = re.compile('[\040-\176]{4,}$') number_pattern = re.compile('\+{0,1}[0-9]+$') upper_ascii_pattern = re.compile('[\200-\377]+') invalid_chars = re.compile( '[\000-\011\013\014\016-\037\202\204-\207\210\211\213\221-\227\230\231\233\271]' ) RTF_H = '{\\rtf1\\ansi\\ansicpg1251\\deff0\\deflang1049{\\fonttbl{\\f0\\fnil\\fcharset204 Tahoma;}}\r\n{\\colortbl ;\\red0\\green0\\blue0;}\r\n\\viewkind4\\uc1\\pard\\cf1\\f0\\fs18 ' RTF_T = '\\par\r\n}\r\n' INTRANSTBL = [chr(i) for i in range(0x0,0x09)+range(0x0b,0x0d)+range(0x7f,256)] OUTTRANSTBL = [hex(ord(i)).replace('0x',"\\'") for i in INTRANSTBL] INSYMS = ['\\','\r','\n','\t','{','}'] OUTSYMS = ['\\\\','','\\par\r\n','\\tab','\\{','\\}'] '''INSMILES = [ ':)',';)',':-))',';-P','8-)','):-D','}:o)','$-)', ":-'",'):-(','8-(',":'(",":''()",'S:-o','(:-o','8-0', '8-[o]','):-p',':-(','):-$',':-D',':-E',':devil:',':vampire:', ':-][',':-|','B-j',':~o','(_I_)',':heart:',':-*',':sleepy:', ':cool:',':viva:',':ok:',':yo:',':suxx:',':think:',':figu:',':kulak:',':fuck:' ] OUTSMILES = [ '<###20###img010>','<###20###img011>','<###20###img012>','<###20###img013>', '<###20###img014>','<###20###img030>','<###20###img016>','<###20###img017>', '<###20###img018>','<###20###img028>','<###20###img020>','<###20###img021>', '<###20###img022>','<###20###img023>','<###20###img024>','<###20###img025>', '<###20###img026>','<###20###img027>','<###20###img019>','<###20###img029>', '<###20###img015>','<###20###img031>','<###20###img032>','<###20###img033>', '<###20###img034>','<###20###img035>','<###20###img036>','<###20###img037>', '<###20###img038>','<###20###img039>','<###20###img040>','<###20###img041>', '<###20###img000>','<###20###img001>','<###20###img002>','<###20###img003>', '<###20###img005>','<###20###img006>','<###20###img007>','<###20###img008>', '<###20###img009>' ]''' INSMILES = ["0:)", ":-&", ":&", ":-D", ":D", ":-P", ":P", ":-$", ":$", ":'-(", ":'(", "%-)", "%)", "B-)", "B)", ":-@", ":@", "B-)", "B)", "(B)", ":-O", ":O", "@};-", "(F)", "(Y)", ":-*", ":*", ":-$", ":$", ":-)", ":)", "(8)", ":-\"", ":\"", ":-$", ":$", ":-D", ":D", "0:)", ":-(", ":(", ":-?", ":?", ":-O", ":O", ">-)", ">)", ":-)", ":)", ":-\"", ":\"", "|-)", "|)", ";-)", ";)", ":-B", "[:]|||[:]", "{:€", ":-)", ":)", ";-)", ";)", ":-))", ":))", ";-P", ";P", "8-)", "8)", ":-D", ":D", "}:o)", "$-)", "$)", ":-'", ":'", ":-(", ":(", "8-(", "8(", ":'(", ":''()", "S:-o", "S:o", "(:-o", "(:o", "8-0", "8-[o]", "8[o]", "):-p", "):p", "):-(", "):(", "):-$", "):$", "):-D", "):D", ":-E", ":E", "(6)", "8-x", "8x", ":-][", ":][", ":-|", ":|", "B-j", "Bj", ":~o", "(_I_)", ":-x", ":x", ":-*", ":*", "|-)","|)", "(Y)", ":)>-", "(Y)", ":)>-", ":)>-", "(N)", ":-$", ":$", "*figa*", "=;", "[-(", "[(", "0:)", "(Y)(Y)(Y)", "(X)", "(B)", ":-B", ":B", ":-&", ":&", ":'-(", ":'(", "B-)", "B)", ":-@", ":@", "(C)", ":-@", ":@", ":-&", ":&", "@};-", "(F)", ":-D", ":D", ":-D:'-(", ":D:'-(", ":-D:'(", ":D:'(", "(E)", ":-L", ":L", ":-*", ":*", ":-x", ":x", "({)", ":-&", ":&", "(R)", ":-$", ":$", ":-(", ":(", "(8)", ":-|", "|-)", "|)", ":-)", ":)", ":-P", ":P", ":)>-", ":-O", ":O", ":-&", ":&", ":-)", ":)", ">:)", ":-))", ":))", "<):)", ":-@", ":@", ":-O", ":O", ":-P", ":P", "*-:)", "*:)", ":-&", ":&", ":-B", ":B", ":-O", ":O", ":-@", ":@", ":-(", ":(", "B-)", "B)", ":-D", ":D", ";-)", ";)", ":-?", ":?", ":-x", ":x", ":-|", ":|", ":'-(", ":'(", ":'-(", ":'(", "(6)", ":-&", ":&", "%-)", "%)",":-*", ":*", ":-$", ":$", "(X)", "0:)", "8-|", "8|", "(C)", ":-$", ":$", ":-$", ":$"] OUTSMILES = ["id=400 alt=':Ангелочек:'", "id=401 alt=':Тошнит:'", "id=401alt=':Тошнит:'", "id=402 alt=':Улыбка до ушей:'", "id=402 alt=':Улыбка до ушей:'", "id=403 alt=':Дразнюсь:'", "id=403 alt=':Дразнюсь:'", "id=404 alt=':Смущаюсь:'", "id=404 alt=':Смущаюсь:'", "id=405 alt=':Рыдаю:'", "id=405 alt=':Рыдаю:'", "id=406 alt=':Сумасшествие:'", "id=406 alt=':Сумасшествие:'", "id=407 alt=':Танцую:'", "id=407 alt=':Танцую:'", "id=408 alt=':Чертовски злюсь:'", "id=408 alt=':Чертовски злюсь:'", "id=409 alt=':Я круче:'", "id=409 alt=':Я круче:'", "id=410 alt=':Пиво:'", "id=411 alt=':Ты что!:'", "id=411 alt=':Ты что!:'", "id=412 alt=':Дарю цветочек:'", "id=412 alt=':Дарю цветочек:'", "id=413 alt=':Ок!:'", "id=414 alt=':Целую:'", "id=414 alt=':Целую:'", "id=415 alt=':Поцеловали:'", "id=415 alt=':Поцеловали:'", "id=416 alt=':Хихикаю:'", "id=416 alt=':Хихикаю:'", "id=417 alt=':Слушаю музыку:'", "id=418 alt=':Не-а:'", "id=418 alt=':Не-а:'", "id=419 alt=':Извини:'", "id=419 alt=':Извини:'", "id=420 alt=':Лопну от смеха:'", "id=420 alt=':Лопну от смеха:'", "id=421 alt=':Мечтаю:'", "id=422 alt=':В печали:'", "id=422 alt=':В печали:'", "id=423 alt=':Надо подумать:'", "id=423 alt=':Надо подумать:'", "id=424 alt=':Ой, ё:'", "id=424 alt=':Ой, ё:'", "id=425 alt=':Кричу:'", "id=425 alt=':Кричу:'", "id=426 alt=':Улыбаюсь:'", "id=426 alt=':Улыбаюсь:'", "id=427 alt=':Не знаю:'", "id=427 alt=':Не знаю:'", "id=428 alt=':В изнеможении:'", "id=428 alt=':В изнеможении:'", "id=429 alt=':Подмигиваю:'", "id=429 alt=':Подмигиваю:'", "id=430 alt=':Уррра!:'", "id=431 alt=':Бойан:'", "id=432 alt=':Ктулху:'", "<###20###img010>", "<###20###img010>", "<###20###img011>", "<###20###img011>", "<###20###img012>", "<###20###img012>", "<###20###img013>", "<###20###img013>", "<###20###img014>", "<###20###img014>", "<###20###img015>", "<###20###img015>", "<###20###img016>", "<###20###img017>", "<###20###img017>", "<###20###img018>", "<###20###img018>", "<###20###img019>", "<###20###img019>", "<###20###img020>", "<###20###img020>", "<###20###img021>", "<###20###img022>", "<###20###img023>", "<###20###img023>", "<###20###img024>", "<###20###img024>", "<###20###img025>", "<###20###img026>", "<###20###img026>", "<###20###img027>", "<###20###img027>", "<###20###img028>", "<###20###img028>","<###20###img029>", "<###20###img029>", "<###20###img030>", "<###20###img030>", "<###20###img031>", "<###20###img031>", "<###20###img032>", "<###20###img033>", "<###20###img033>", "<###20###img034>", "<###20###img034>", "<###20###img035>", "<###20###img035>", "<###20###img036>", "<###20###img036>", "<###20###img037>", "<###20###img038>", "<###20###img039>", "<###20###img039>", "<###20###img040>", "<###20###img040>", "<###20###img041>", "<###20###img041>", "<###20###img000>", "<###20###img001>", "<###20###img002>", "<###20###img003>", "<###20###img004>", "<###20###img005>", "<###20###img006>", "<###20###img006>", "<###20###img007>", "<###20###img008>", "<###20###img009>", "<###20###img009>", "id=200 alt=':Ангелочек:'", "id=201 alt=':Аплодисменты:'", "id=202 alt=':Красотка:'", "id=203 alt=':Пиво:'", "id=204 alt=':Читаю:'", "id=204 alt=':Читаю:'", "id=205 alt=':Мёрзну:'", "id=205 alt=':Мёрзну:'", "id=206 alt=':Рыдаю:'", "id=206 alt=':Рыдаю:'", "id=207 alt=':Танцую:'", "id=207 alt=':Танцую:'", "id=208 alt=':Чертовски злюсь:'", "id=208 alt=':Чертовски злюсь:'", "id=209 alt=':Жую:'", "id=210 alt=':Побью:'", "id=210 alt=':Побью:'", "id=211 alt=':Побили:'", "id=211 alt=':Побили:'", "id=212 alt=':Дарю цветочек:'", "id=212 alt=':Дарю цветочек:'", "id=213 alt=':Смеюсь:'", "id=213 alt=':Смеюсь:'", "id=214 alt=':Смеюсь и плачу:'", "id=214 alt=':Смеюсь и плачу:'", "id=214 alt=':Смеюсь и плачу:'", "id=214 alt=':Смеюсь и плачу:'", "id=215 alt=':Подарок:'", "id=216 alt=':Ворчу:'", "id=216 alt=':Ворчу:'", "id=217 alt=':Целую:'", "id=217 alt=':Целую:'", "id=218 alt=':Люблю:'", "id=218 alt=':Люблю:'", "id=219 alt=':Застрелю:'", "id=220 alt=':Выпей яду:'", "id=220 alt=':Выпей яду:'", "id=221 alt=':Лучезарно:'", "id=222 alt=':Смущаюсь:'", "id=222 alt=':Смущаюсь:'", "id=223 alt=':Расстраиваюсь:'", "id=223 alt=':Расстраиваюсь:'", "id=224 alt=':Пою:'", "id=225 alt=':Скучаю:'", "id=226 alt=':Засыпаю:'", "id=226 alt=':Засыпаю:'", "id=227 alt=':Улыбаюсь:'", "id=227 alt=':Улыбаюсь:'", "id=228 alt=':Показываю язык:'", "id=228 alt=':Показываю язык:'", "id=229 alt=':Peace!:'", "id=230 alt=':Удивляюсь:'", "id=230 alt=':Удивляюсь:'", "id=231 alt=':Тошнит:'", "id=231 alt=':Тошнит:'", "id=300 alt=':Улыбаюсь:'", "id=300 alt=':Улыбаюсь:'", "id=301 alt=':Злорадствую:'", "id=302 alt=':Радуюсь:'", "id=302 alt=':Радуюсь:'", "id=303 alt=':Старичок:'", "id=304 alt=':Свирепствую:'", "id=304 alt=':Свирепствую:'", "id=305 alt=':Пугаюсь:'", "id=305 alt=':Пугаюсь:'", "id=306 alt=':Показываю язык:'", "id=306 alt=':Показываю язык:'", "id=307 alt=':Умник:'", "id=307 alt=':Умник:'", "id=308 alt=':Алкоголик:'", "id=308 alt=':Алкоголик:'", "id=309 alt=':Вояка:'", "id=309 alt=':Вояка:'", "id=310 alt=':Удивляюсь:'", "id=310 alt=':Удивляюсь:'", "id=311 alt=':Чертовски злюсь:'", "id=311 alt=':Чертовски злюсь:'", "id=312 alt=':Расстраиваюсь:'", "id=312 alt=':Расстраиваюсь:'", "id=313 alt=':Панк:'", "id=313 alt=':Панк:'", "id=314 alt=':Лопну от смеха:'", "id=314 alt=':Лопну от смеха:'", "id=315 alt=':Подмигиваю:'", "id=315 alt=':Подмигиваю:'", "id=316 alt=':Думаю:'", "id=316 alt=':Думаю:'", "id=317 alt=':Люблю:'", "id=317 alt=':Люблю:'", "id=318 alt=':Подавлен:'", "id=318 alt=':Подавлен:'", "id=319 alt=':Рыдаю:'", "id=319 alt=':Рыдаю:'", "id=320 alt=':Сейчас расплачусь:'", "id=320 alt=':Сейчас расплачусь:'", "id=321 alt=':Злюсь:'", "id=322 alt=':Тошнит:'", "id=322 alt=':Тошнит:'", "id=323 alt=':Сумасшествие:'", "id=323 alt=':Сумасшествие:'", "id=324 alt=':Целую:'", "id=324 alt=':Целую:'", "id=325 alt=':Поцеловали:'", "id=325 alt=':Поцеловали:'", "id=326 alt=':Красотка:'", "id=327 alt=':Ангелочек:'", "id=328 alt=':Подозрительно:'", "id=328 alt=':Подозрительно:'", "id=329 alt=':Жую:'", "id=330 alt=':Смущаюсь:'", "id=330 alt=':Смущаюсь:'", "id=331 alt=':Стыдно:'", "id=331 alt=':Стыдно:'"] INCHARS = tuple(INSYMS+INTRANSTBL+INSMILES) OUTCHARS = tuple(OUTSYMS+OUTTRANSTBL+OUTSMILES) IN_TRANSLIT_TBL = tuple(["'",chr(0xa8),chr(0xb8)] + [chr(i) for i in range(0xc0,256)]) _lat = [ 'a','b','v','g','d','e','zh','z','i','jj','k','l','m','n','o','p','r', 's','t','u','f','kh','c','ch','sh','shh','"','y',"'",'eh','yu','ya' ] OUT_TRANSLIT_TBL = tuple(['*','Jo','jo'] + [x[0].upper()+x[1:] for x in _lat] + _lat) UPPER_ASCII = tuple([chr(i) for i in range(128,256)]) NULL_ASCII = tuple(['' for i in range(128,256)])