X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fplugins%2Fauto%2Fcouteau_suisse%2Fcouteau_suisse%2Foutils%2Ftypo_exposants.php;fp=www%2Fplugins%2Fauto%2Fcouteau_suisse%2Fcouteau_suisse%2Foutils%2Ftypo_exposants.php;h=16d7e689f386caf1abfe6420296af9177428f029;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hp=0000000000000000000000000000000000000000;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c;p=velocampus%2Fweb%2Fwww.git diff --git a/www/plugins/auto/couteau_suisse/couteau_suisse/outils/typo_exposants.php b/www/plugins/auto/couteau_suisse/couteau_suisse/outils/typo_exposants.php new file mode 100644 index 0000000..16d7e68 --- /dev/null +++ b/www/plugins/auto/couteau_suisse/couteau_suisse/outils/typo_exposants.php @@ -0,0 +1,129 @@ +'); +define('_TYPO_sup', _TYPO_class.'\\1'); +define('_TYPO_sup2', '\\1'._TYPO_class.'\\2'); + +// fonction simplifiee, equivalent numerique de unicode2charset($texte) +function caractere_charset($num) { + if($GLOBALS['meta']['charset']=='utf-8') + return caractere_utf_8($num); + $charset = load_charset($GLOBALS['meta']['charset']); + static $CHARSET_REVERSE; + if(!is_array($CHARSET_REVERSE)) + $CHARSET_REVERSE = array_flip($GLOBALS['CHARSET'][$charset]); + return isset($CHARSET_REVERSE[$num])?chr($CHARSET_REVERSE[$num]):chr($num); +} + +// cette fonction appelee automatiquement a chaque affichage de la page privee du Couteau Suisse renvoie un tableau +function typo_exposants_installe_dist() { + // en principe, pas besoin de : caractere_utf_8(232) + $carre = caractere_charset(178).'|&(?:#178|sup2);'; + $egrave = caractere_charset(232).'|&(?:#232|egrave);'; + $eaigu1 = caractere_charset(233).'|&(?:#233|eacute);'; + $eaigu2 = caractere_charset(201).'|&(?:#201|Eacute);'; + // $accents = unicode2charset('àáâäåæèéêëìíîïòóôöùúûü'); + $accents = join('', array_map('caractere_charset', array(224,225,226,228,229,230,232,233,234,235,236,237,238,239,242,243,244,246,249,250,251,252))); + $typo = array( array( + '/(?<=\bM)e?(lles?)\b/', // Mlle(s), Mme(s) et erreurs Melle(s) + '/(?<=\bM)(gr|mes?)\b/', // Mme(s) et Mgr + '/(?<=\b[DP])(r)(?=[\s\.-])/', // Dr, Pr suivis d'un espace d'un point ou d'un tiret + + "/m(?:$carre)/", '/(?<=\bm)([23])\b/', // m2, m3, m² + '/(?<=\b[Mm])([nd]s?)\b/', // millions, milliards + '/(?<=\bV)(ve)\b/', '/(?<=\bC)(ies?)\b/', // Vve et Cie(s) + "/(?<=\bS)(t(?:$eaigu1)s?)(?=\W)/", "/(?<=\W)(?:E|$eaigu2)ts\b/", // Societes(s), Etablissements + + '/(?<=\b[1I])i?(ers?)\b/', // 1er(s), Erreurs 1(i)er(s), I(i)er(s) + "/(?<=\b[1I])i?(?:e|$egrave)(res?)\b/", // Erreurs 1(i)ere(s) + accents + '/(?<=\b1)(r?es?)\b/', // 1e(s), 1re(s) + '/(?<=\b2)(nde?s?)\b/', // 2nd(e)(s) + + "/(\b[0-9IVX]+)i?(?:e|$egrave)?me(s?)\b/", // Erreurs (i)(e)me(s) + accents + '/\b([0-9IVX]+)(es?)\b/', // 2e(s), IIIe(s)... (les 1(e?r?s?) ont deja ete remplaces) + "/(?', _TYPO_sup, // m2, m3, m² + _TYPO_sup, _TYPO_sup, _TYPO_sup, // Vve, Mn(s), Md(s), Bd(s), Cie(s) + _TYPO_sup, 'É'._TYPO_class.'ts', // Sté(s), Ets + + _TYPO_sup, _TYPO_sup, _TYPO_sup, // 1er et Cie + _TYPO_sup, // 2nd(e)(s) + + '$1'._TYPO_class.'e$2', // Erreurs me, eme, ème, ième + pluriels + _TYPO_sup2, // 2e(s), IIIe(s)... + '$1'._TYPO_class.'o', // ro, vo, 1o, 2o, etc. + _TYPO_sup, // Me + // remplacements en str_replace() + ), array(''), array(_TYPO_class)); + + if(defined('_CS_EXPO_BOFBOF')) { + $typo[0] = array_merge($typo[0], array( + '/(?<=\bS)(te?s?)(?=[\s\.-])/', // St(e)(s) suivis d'un espace d'un point ou d'un tiret + '/(?<=\bB)(x|se|ses)(?=[\s\.-])/', // Bx, Bse(s) suivis d'un espace d'un point ou d'un tiret + '/(?<=\b[Bb])(ds?)\b/', '/(?<=\b[Ff])(gs?)\b/', // boulevard(s) et faubourgs(s) + )); + $typo[1] = array_merge($typo[1], array( + _TYPO_sup, _TYPO_sup, // St(e)(s), Bx, Bse(s) + _TYPO_sup, _TYPO_sup, // Bd(s) et Fg(s) + )); + } + // renvoie les tableaux de remplacement + return array( + // anglais + 'en'=> array( array( + ',(?<=1)(st)\b,', + ',(?<=2)(nd)\b,', + ',(?<=3)(rd)\b,', + ',(?<=\d)(th)\b,', + ), array( + _TYPO_sup, _TYPO_sup, _TYPO_sup, _TYPO_sup, + ), array(''), array(_TYPO_class)), + // francais + 'fr' => $typo, + ); +} + + +// cette fonction n'est pas appelee dans les balises html : html|code|cadre|frame|script|acronym|cite +function typo_exposants_rempl($texte){ + if(defined('_SPIP19300')) $lang = lang_typo(); + else { + // compat avec SPIP 1.92 + if (!$lang = $GLOBALS['lang_objet']) $lang = $GLOBALS['spip_lang']; + $lang = lang_typo($lang); + } + // TODO : des blocs multi ? + // if (strpos($texte, ' et + if (strpos($texte, '<')!==false) + $texte = preg_replace_callback('/(<(a|img) [^>]+>)/Ums', 'typo_exposants_echappe_balises_callback', $texte); + $texte = cs_echappe_balises('html|code|cadre|frame|script|acronym|cite', 'typo_exposants_rempl', $texte); + return echappe_retour($texte, 'EXPO'); +} +?> \ No newline at end of file