diff --git a/etpgrf/config.py b/etpgrf/config.py index b39f008..5fd50f2 100644 --- a/etpgrf/config.py +++ b/etpgrf/config.py @@ -79,7 +79,7 @@ CURRENCY_ENTITIES = { 'pound': ('\u00A3', '£'), # Фунт стерлингов 'curren': ('\u00A4', '¤'), # Знак валюты (обычно используется для обозначения "без конкретной валюты") 'yen': ('\u00A5', '¥'), # Йена - 'euro': ('\u20AC', '€'), # Евро + 'euro': ('\u20AC', '€'), # Евро -- кажется нет в RFC 'ruble': ('\u20BD', '₽'), # Российский рубль (₽) } @@ -524,7 +524,7 @@ GREEK_ENTITIES = { 'Nu': ('\u039D', 'Ν'), # Греческая заглавная буква Ню (Ν) 'Xi': ('\u039E', 'Ξ'), # Греческая з��главная буква Кси (Ξ) 'Omicron': ('\u039F', 'Ο'), # Греческая заглавная буква Омикрон (Ο) - 'Pi': ('\u03A0', '&Pi';), # Греческая заглавная буква Пи (Π) + 'Pi': ('\u03A0', 'Π'), # Греческая заглавная буква Пи (Π) 'Rho': ('\u03A1', 'Ρ'), # Греческая заглавная буква Ро (Ρ) 'Sigma': ('\u03A3', 'Σ'), # Греческая заглавная буква Сигма (Σ) 'Tau': ('\u03A4', 'Τ'), # Греческая заглавная буква Тау (Τ) @@ -562,13 +562,203 @@ GREEK_ENTITIES = { 'piv': ('\u03D6', 'ϖ'), # Греческая строчная буква пи (ϖ) } - +# Лаинские буквы и символы (умляуты, акценты и т.д.) +LATIN_SPECIAL_ENTITIES = { + 'Agrave': ('\u00C0', 'À'), # Латинская заглавная буква A с грависом (À) + 'Aacute': ('\u00C1', 'Á'), # Латинская заглавная буква A с акутом (Á) + 'Acirc': ('\u00C2', 'Â'), # Латинская заглавная буква A с циркумфлексом (Â) + 'Atilde': ('\u00C3', 'Ã'), # Латинская заглавная буква A с тильдой (Ã) + 'Auml': ('\u00C4', 'Ä'), # Латинская заглавная буква A с диэризисом/умляутом (Ä) + 'Aring': ('\u00C5', 'Å'), # Латинская заглавная буква A с кружочком сверху (Å) + 'AElig': ('\u00C6', 'Æ'), # Лигатура, латинская заглавная буква AE (Æ) + 'Ccedil': ('\u00C7', 'Ç'), # Латинская заглавная буква C с седилью (Ç) + 'Egrave': ('\u00C8', 'È'), # Латинская заглавная буква E с грависом (È) + 'Eacute': ('\u00C9', 'É'), # Латинская заглавная буква E с акутом (É) + 'Ecirc': ('\u00CA', 'Ê'), # Латинская заглавная буква E с циркумфлексом (Ê) + 'Euml': ('\u00CB', 'Ë'), # Латинская заглавная буква E с диэризисом/умляутом (Ë) + 'Igrave': ('\u00CC', 'Ì'), # Латинская заглавная буква I с грависом (Ì) + 'Iacute': ('\u00CD', 'Í'), # Латинская заглавная буква I с акутом (Í) + 'Icirc': ('\u00CE', 'Î'), # Латинская заглавная буква I с циркумфлексом (Î) + 'Iuml': ('\u00CF', 'Ï'), # Латинская заглавная буква I с диэризисом/умляутом (Ï) + 'ETH': ('\u00D0', 'Ð'), # Латинская заглавная буква Eth (Ð) + 'Ntilde': ('\u00D1', 'Ñ'), # Латинская заглавная буква N с тильдой (Ñ) + 'Ograve': ('\u00D2', 'Ò'), # Латинская заглавная буква O с грависом (Ò) + 'Oacute': ('\u00D3', 'Ó'), # Латинская заглавная буква O с акутом (Ó) + 'Ocirc': ('\u00D4', 'Ô'), # Латинская заглавная буква O с циркумфлексом (Ô) + 'Otilde': ('\u00D5', 'Õ'), # Латинская заглавная буква O с тильдой (Õ) + 'Ouml': ('\u00D6', 'Ö'), # Латинская заглавная буква O с диэризисом/умляутом (Ö) + 'Oslash': ('\u00D8', 'Ø'), # Латинская заглавная буква O с чертой (Ø) + 'Ugrave': ('\u00DD', 'Ù'), # Латинская заглавная буква U с грависом (Ù) + 'Uacute': ('\u00DA', 'Ú'), # Латинская заглавная буква U с акутом (Ú) + 'Ucirc': ('\u00DB', 'Û'), # Латинская заглавная буква U с циркумфлексом (Û) + 'Uuml': ('\u00DC', 'Ü'), # Латинская заглавная буква U с диэризисом/умляутом (Ü) + 'Yacute': ('\u00DD', 'Ý'), # Латинская заглавная буква Y с акутом (Ý) + 'THORN': ('\u00DE', 'Þ'), # Латинская заглавная буква Thorn (Þ) + 'szlig': ('\u00DF', 'ß'), # Латинская строчная буква Eszett (ß) + 'agrave': ('\u00E0', 'à'), # Латинская строчная буква a с грависом (à) + 'aacute': ('\u00E1', 'á'), # Латинская строчная буква a с акутом (á) + 'acirc': ('\u00E2', 'â'), # Латинская строчная буква a с циркумфлексом (â) + 'atilde': ('\u00E3', 'ã'), # Латинская строчная буква a с тильдой (ã) + 'auml': ('\u00E4', 'ä'), # Латинская строчная буква a с диэризисом/умляутом (ä) + 'aring': ('\u00E5', 'å'), # Латинская строчная буква a с кружочком сверху (å) + 'aelig': ('\u00E6', 'æ'), # Лигатура, латинская строчная буква ae (æ) + 'ccedil': ('\u00E7', 'ç'), # Латинская строчная буква c с седилью (ç) + 'egrave': ('\u00E8', 'è'), # Латинская строчная буква e с грависом (è) + 'eacute': ('\u00E9', 'é'), # Латинская строчная буква e с акутом (é) + 'ecirc': ('\u00EA', 'ê'), # Латинская строчная буква e с циркумфлексом (ê) + 'euml': ('\u00EB', 'ë'), # Латинская строчная буква e с диэризисом/умляутом (ë) + 'igrave': ('\u00EC', 'ì'), # Латинская строчная буква i с грависом (ì) + 'iacute': ('\u00ED', 'í'), # Латинская строчная буква i с акутом (í) + 'icirc': ('\u00EE', 'î'), # Латинская строчная буква i с циркумфлексом (î) + 'iuml': ('\u00EF', 'ï'), # Латинская строчная буква i с диэризисом/умляутом (ï) + 'eth': ('\u00F0', 'ð'), # Латинская строчная буква eth (ð) + 'ntilde': ('\u00F1', 'ñ'), # Латинская строчная буква n с тильдой (ñ) + 'ograve': ('\u00F2', 'ò'), # Латинская строчная буква o с грависом (ò) + 'oacute': ('\u00F3', 'ó'), # Латинская строчная буква o с акутом (ó) + 'ocirc': ('\u00F4', 'ô'), # Латинская строчная буква o с циркумфлексом (ô) + 'otilde': ('\u00F5', 'õ'), # Латинская строчная буква o с тильдой (õ) + 'ouml': ('\u00F6', 'ö'), # Латинская строчная буква o с диэризисом/умляутом (ö) + 'oslash': ('\u00F8', 'ø'), # Латинская строчная буква o с чертой (ø) + 'ugrave': ('\u00F9', 'ù'), # Латинская строчная буква u с грависом (ù) + 'uacute': ('\u00FA', 'ú'), # Латинская строчная буква u с акутом (ú) + 'ucirc': ('\u00FB', 'û'), # Латинская строчная буква u с циркумфлексом (û) + 'uuml': ('\u00FC', 'ü'), # Латинская строчная буква u с диэризисом/умляутом (ü) + 'yacute': ('\u00FD', 'ý'), # Латинская строчная буква y с акутом (ý) + 'thorn': ('\u00FE', 'þ'), # Латинская строчная буква thorn (þ) + 'yuml': ('\u00FF', 'ÿ'), # Латинская строчная буква y с диэризисом/умляутом (ÿ) + 'Amacr': ('\u0100', 'Ā'), # Латинская строчная буква a с макроном (Ā) + 'amacr': ('\u0101', 'ā'), # Латинская строчная буква a с макроном (ā) + 'Abreve': ('\u0102', 'Ă'), # Латинская заглавная буква A с бревисом (Ă) + 'abreve': ('\u0103', 'ă'), # Латинская строчная буква a с бревисом (ă) + 'Aogon': ('\u0104', 'Ą'), # Латинская заглавная буква A с огонеком (Ą) + 'aogon': ('\u0105', 'ą'), # Латинская строчная буква a с огонеком (ą) + 'Cacute': ('\u0106', 'Ć'), # Латинская заглавная буква C с акутом (Ć) + 'cacute': ('\u0107', 'ć'), # Латинская строчная буква c с акутом (ć) + 'Ccirc': ('\u0108', 'Ĉ'), # Латинская заглавная буква C с циркумфлексом (Ĉ) + 'ccirc': ('\u0109', 'ĉ'), # Латинская строчная буква c с циркумфлексом (ĉ) + 'Cdot': ('\u010A', 'Ċ'), # Латинская заглавная буква C с точкой сверху (Ċ) + 'cdot': ('\u010B', 'ċ'), # Латинская строчная буква c с точкой сверху (ċ) + 'Ccaron': ('\u010C', 'Č'), # Латинская заглавная буква C с гачеком/карон (Č) + 'ccaron': ('\u010D', 'č'), # Латинская строчная буква c с гачеком/карон (č) + 'Dcaron': ('\u010E', 'Ď'), # Латинская заглавная буква D с гачеком/карон (Ď) + 'dcaron': ('\u010F', 'ď'), # Латинская строчная буква d с гачеком/карон (ď) + 'Dstrok': ('\u0110', 'Đ'), # Латинская заглавная буква D с чертой (Đ) + 'dstrok': ('\u0111', 'đ'), # Латинская строчная буква d с чертой (đ) + 'Emacr': ('\u0112', 'Ē'), # Латинская заглавная буква E с макроном (Ē) + 'emacr': ('\u0113', 'ē'), # Латинская строчная буква e с макроном (ē) + 'Ebreve': ('\u0114', '&Ebreve;'), # Латинская заглавная буква E с бревисом (Ĕ) + 'ebreve': ('\u0115', '&ebreve;'), # Латинская строчная буква e с бревисом (ĕ) + 'Edot': ('\u0116', 'Ė'), # Латинская заглавная буква E с точкой сверху (Ė) + 'edot': ('\u0117', 'ė'), # Латинская строчная буква e с точкой сверху (ė) + 'Eogon': ('\u0118', 'Ę'), # Латинская заглавная буква E с огонеком (Ę) + 'eogon': ('\u0119', 'ę'), # Латинская строчная буква e с огонеком (ę) + 'Ecaron': ('\u011A', 'Ě'), # Латинская заглавная буква E с гачеком/карон (Ě) + 'ecaron': ('\u011B', 'ě'), # Латинская строчная буква e с гачеком/карон (ě) + 'Gcirc': ('\u011C', 'Ĝ'), # Латинская заглавная буква G с циркумфлексом (Ĝ) + 'gcirc': ('\u011D', 'ĝ'), # Латинская строчная буква g с циркумфлексом (ĝ) + 'Gbreve': ('\u011E', 'Ğ'), # Латинская заглавная буква G с бревисом (Ğ) + 'gbreve': ('\u011F', 'ğ'), # Латинская строчная буква g с бревисом (ğ) + 'Gdot': ('\u0120', 'Ġ'), # Латинская заглавная буква G с точкой сверху (Ġ) + 'gdot': ('\u0121', 'ġ'), # Латинская строчная буква g с точкой сверху (ġ) + 'Hcirc': ('\u0124', 'Ĥ'), # Латинская заглавная буква H с циркумфлексом (Ĥ) + 'hcirc': ('\u0125', 'ĥ'), # Латинская строчная буква h с циркумфлексом (ĥ) + 'Hstrok': ('\u0126', 'Ħ'), # Латинская заглавная буква H с чертой (Ħ) + 'hstrok': ('\u0127', 'ħ'), # Латинская строчная буква h с чертой (ħ) + 'Itilde': ('\u0128', 'Ĩ'), # Латинская заглавная буква I с тильдой (Ĩ) + 'itilde': ('\u0129', 'ĩ'), # Латинская строчная буква i с тильдой (ĩ) + 'Imacr': ('\u012A', 'Ī'), # Латинская заглавная буква I с макроном (Ī) + 'imacr': ('\u012B', 'ī'), # Латинская строчная буква i с макроном (ī) + 'Ibreve': ('\u012C', '&Ibreve;'), # Латинская заглавная буква I с бревисом (Ĭ) -- кажется нет в RFC + 'ibreve': ('\u012D', '&ibreve;'), # Латинская строчная буква i с бревисом (ĭ) -- кажется нет в RFC + 'Iogon': ('\u012E', 'Į'), # Латинская заглавная буква I с огонеком (Į) + 'iogon': ('\u012F', 'į'), # Латинская строчная буква i с огонеком (į) + 'Idot': ('\u0130', 'İ'), # Латинская заглавная буква I с точкой сверху (İ) + 'dotlessi': ('\u0131', '&dotlessi;'), # Латинская строчная буква i без точки (ı) + 'IJlig': ('\u0132', 'IJ'), # Лигатура, латинская заглавная буква IJ (IJ) + 'ijlig': ('\u0133', 'ij'), # Лигатура, латинская строчная буква ij (ij) + 'Jcirc': ('\u0134', 'Ĵ'), # Латинская заглавная буква J с циркумфлексом (Ĵ) + 'jcirc': ('\u0135', 'ĵ'), # Латинская строчная буква j с циркумфлексом (ĵ) + 'Kcedil': ('\u0136', 'Ķ'), # Латинская заглавная буква K с седилью (Ķ) + 'kcedil': ('\u0137', 'ķ'), # Латинская строчная буква k с седилью (ķ) + 'kgreen': ('\u0138', 'ĸ'), # Латинская строчная буква кра / k с гачеком/карон (ĸ) + 'Lacute': ('\u0139', 'Ĺ'), # Латинская заглавная буква L с акутом (Ĺ) -- кажется нет в RFC + 'lacute': ('\u013A', 'ĺ'), # Латинская строчная буква l с акутом (ĺ) + 'Lcedil': ('\u013B', 'Ļ'), # Латинская заглавная буква L с седилью (Ļ) + 'lcedil': ('\u013C', 'ļ'), # Латинская строчная буква l с седилью (ļ) + 'Lcaron': ('\u013D', 'Ľ'), # Латинская заглавная буква L с гачеком/карон (Ľ) + 'lcaron': ('\u013E', 'ľ'), # Латинская строчная буква l с гачеком/карон (ľ) + 'Lmidot': ('\u013F', 'Ŀ'), # Латинская заглавная буква L с внутристрочной точкой (Ŀ) + 'lmidot': ('\u0140', 'ŀ'), # Латинская строчная буква l с внутристрочной точкой (ŀ) + 'Lstrok': ('\u0141', 'Ł'), # Латинская заглавная буква L с чертой, символ Лайткоина (Ł) + 'lstrok': ('\u0142', 'ł'), # Латинская строчная буква l с чертой (ł) + 'Nacute': ('\u0143', 'Ń'), # Латинская заглавная буква N с акутом (Ń) + 'nacute': ('\u0144', 'ń'), # Латинская строчная буква n с акутом (ń) + 'Ncedil': ('\u0145', 'Ņ'), # Латинская заглавная буква N с седилью (Ņ) + 'ncedil': ('\u0146', 'ņ'), # Латинская строчная буква n с седилью (ņ) + 'Ncaron': ('\u0147', 'Ň'), # Латинская заглавная буква N с гачеком/карон (Ň) + 'ncaron': ('\u0148', 'ň'), # Латинская строчная буква n с гачеком/карон (ň) + 'napos': ('\u0149', 'ʼn'), # Латинская строчная буква n предшествующим апострофом (ʼn) + 'ENG': ('\u014A', 'Ŋ'), # Латинская заглавная буква Eng (Ŋ) + 'eng': ('\u014B', 'ŋ'), # Латинская строчная буква eng (ŋ) + 'Omacr': ('\u014C', 'Ō'), # Латинская заглавная буква O с макроном (Ō) + 'omacr': ('\u014D', 'ō'), # Латинская строчная буква o с макроном (ō) + 'Obreve': ('\u014E', '&Obreve;'), # Латинская заглавная буква O с бревисом (Ŏ) -- кажется нет в RFC + 'obreve': ('\u014F', '&obreve;'), # Латинская строчная буква o с бревисом (ŏ) -- кажется нет в RFC + 'Odblac': ('\u0150', 'Ő'), # Латинская заглавная буква O с двойным акутом (Ő) + 'odblac': ('\u0151', 'ő'), # Латинская строчная буква o с двойным акутом (ő) + 'OElig': ('\u0152', 'Œ'), # Лигатура, латинская заглавная буква OE (Œ) + 'oelig': ('\u0153', 'œ'), # Лигатура, латинская строчная буква oe (œ) + 'Racute': ('\u0154', 'Ŕ'), # Латинская заглавная буква R с акутом (Ŕ) + 'racute': ('\u0155', 'ŕ'), # Латинская строчная буква r с акутом (ŕ) + 'Rcedil': ('\u0156', 'Ŗ'), # Латинская заглавная буква R с седилью (Ŗ) + 'rcedil': ('\u0157', 'ŗ'), # Латинская строчная буква r с седилью (ŗ) + 'Rcaron': ('\u0158', 'Ř'), # Латинская заглавная буква R с гачеком/карон (Ř) + 'rcaron': ('\u0159', 'ř'), # Латинская строчная буква r с гачеком/карон (ř) + 'Sacute': ('\u015A', 'Ś'), # Латинская заглавная буква S с акутом (Ś) + 'sacute': ('\u015B', 'ś'), # Латинская строчная буква s с акутом (ś) + 'Scirc': ('\u015C', 'Ŝ'), # Латинская заглавная буква S с циркумфлексом (Ŝ) + 'scirc': ('\u015D', 'ŝ'), # Латинская строчная буква s с циркумфлексом (ŝ) + 'Scedil': ('\u015E', 'Ş'), # Латинская заглавная буква S с седилью (Ş) + 'scedil': ('\u015F', 'ş'), # Латинская строчная буква s с седилью (ş) + 'Scaron': ('\u0160', 'Š'), # Латинская заглавная буква S с гачеком/карон (Š) + 'scaron': ('\u0161', 'š'), # Латинская строчная буква s с гачеком/карон (š) + 'Tcedil': ('\u0162', 'Ţ'), # Латинская заглавная буква T с седилью (Ţ) + 'tcedil': ('\u0163', 'ţ'), # Латинская строчная буква t с седилью (ţ) + 'Tcaron': ('\u0164', 'Ť'), # Латинская заглавная буква T с гачеком/карон (Ť) + 'tcaron': ('\u0165', 'ť'), # Латинская строчная буква t с гачеком/карон (ť) + 'Tstrok': ('\u0166', 'Ŧ'), # Латинская заглавная буква T с чертой (Ŧ) + 'tstrok': ('\u0167', 'ŧ'), # Латинская строчная буква t с чертой (ŧ) + 'Utilde': ('\u0168', 'Ũ'), # Латинская заглавная буква U с тильдой (Ũ) + 'utilde': ('\u0169', 'ũ'), # Латинская строчная буква u с тильдой (ũ) + 'Umacr': ('\u016A', 'Ū'), # Латинская заглавная буква U с макроном (Ū) + 'umacr': ('\u016B', 'ū'), # Латинская строчная буква u с макроном (ū) + 'Ubreve': ('\u016C', 'Ŭ'), # Латинская заглавная буква U с бревисом (Ŭ) + 'ubreve': ('\u016D', 'ŭ'), # Латинская строчная буква u с бревисом (ŭ) + 'Uring': ('\u016E', 'Ů'), # Латинская заглавная буква U с кружочком сверху (Ů) + 'uring': ('\u016F', 'ů'), # Латинская строчная буква u с кружочком сверху (ů) + 'Udblac': ('\u0170', 'Ű'), # Латинская заглавная буква U с двойным акутом (Ű) + 'udblac': ('\u0171', 'ű'), # Латинская строчная буква u с двойным акутом (ű) + 'Uogon': ('\u0172', 'Ų'), # Латинская заглавная буква U с огонеком (Ų) + 'uogon': ('\u0173', 'ų'), # Латинская строчная буква u с огонеком (ų) + 'Wcirc': ('\u0174', 'Ŵ'), # Латинская заглавная буква W с циркумфлексом (Ŵ) + 'wcirc': ('\u0175', 'ŵ'), # Латинская строчная буква w с циркумфлексом (ŵ) + 'Ycirc': ('\u0176', 'Ŷ'), # Латинская заглавная буква Y с циркумфлексом (Ŷ) + 'ycirc': ('\u0177', 'ŷ'), # Латинская строчная буква y с циркумфлексом (ŷ) + 'Yuml': ('\u0178', 'Ÿ'), # Латинская заглавная буква Y с диэризисом/умляутом (Ÿ) + 'Zacute': ('\u0179', 'Ź'), # Латинская заглавная буква Z с акутом (Ź) + 'zacute': ('\u017A', 'ź'), # Латинская строчная буква z с акутом (ź) + 'Zdot': ('\u017B', 'Ż'), # Латинская заглавная буква Z с точкой сверху (Ż) + 'zdot': ('\u017C', 'ż'), # Латинская строчная буква z с точкой сверху (ż) + 'Zcaron': ('\u017D', 'Ž'), # Латинская заглавная буква Z с гачеком/карон (Ž) + 'zcaron': ('\u017E', 'ž'), # Латинская строчная буква z с гачеком/карон (ž) + 'DownBreve': ('\u0311', '̑'), # Комбинируемая перевернутая бреве (круглая шапочка) + } # --- Сборка и валидация --- # 1. Создаем единый словарь всех сущностей для удобного доступа ALL_ENTITIES = { - **SHY_ENTITIES, **SPACE_ENTITIES, **DASH_ENTITIES, **MATH_ENTITIES, **GREEK_ENTITIES, + **SHY_ENTITIES, **SPACE_ENTITIES, **DASH_ENTITIES, **MATH_ENTITIES, **GREEK_ENTITIES, **LATIN_SPECIAL_ENTITIES, **QUOTE_ENTITIES, **CURRENCY_ENTITIES, **SYMBOL_ENTITIES, **SYMBOL_PUNCTUATION, **SYMBOL_FRACTIONS }