This repository has been archived by the owner on Jan 26, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
/
fr.php
108 lines (85 loc) · 3.46 KB
/
fr.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2010 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
// Correction typographique francaise
require_once _DIR_RESTREINT.'typographie/fr.php';
function typographie_fr($letexte) {
# version core
if (!$GLOBALS['tw']) {
return typographie_fr_dist($letexte);
}
$debug = _request('var_debug_wheel');
static $trans;
if (!isset($trans)) {
$trans = array(
" " => '~',
"»" => '»',
"«" => '«',
"”" => '”',
"“" => '“',
"°" => '°',
"'" => '’'
);
switch ($GLOBALS['meta']['charset']) {
case 'utf-8':
$trans["\xc2\xa0"] = '~';
$trans["\xc2\xbb"] = '»';
$trans["\xc2\xab"] = '«';
$trans["\xe2\x80\x9d"] = '”';
$trans["\xe2\x80\x9c"] = '“';
$trans["\xc2\xb0"] = '°';
break;
default:
$trans["\xa0"] = '~';
$trans["\xab"] = '«';
$trans["\xbb"] = '»';
$trans["\xb0"] = '°';
break;
}
}
# cette chaine ne peut pas exister,
# cf. TYPO_PROTECTEUR dans inc/texte
$pro = "-\x2-";
if($debug) spip_timer('trans');
$letexte = str_replace(array_keys($trans), array_values($trans), $letexte);
if($debug) $GLOBALS['totaux']['expanser_liens:']['corriger_typo:']['trans'] += spip_timer('trans', true);
if($debug) spip_timer('cherche1');
# la typo du ; risque de clasher avec les entites &xxx;
if (strpos($letexte, ';') !== false) {
$letexte = str_replace(';', '~;', $letexte);
$letexte = preg_replace(',(&#?[0-9a-z]+)~;,iS', '$1;', $letexte);
}
/* 2 */
$letexte = preg_replace('/»| --?,|(?::| %)(?:\W|$)/S', '~$0', $letexte);
/* 3 */
$letexte = preg_replace('/[!?][!?\.]*/S', "$pro~$0", $letexte, -1, $c);
if ($c) {
$letexte = preg_replace("/([\[<\(!\?\.])$pro~/S", '$1', $letexte);
$letexte = str_replace("$pro", '', $letexte);
}
/* 4 */
$letexte = preg_replace('/«|M(?:M?\.|mes?|r\.?|°) |[nN]° /S', '$0~', $letexte);
if($debug) $GLOBALS['totaux']['expanser_liens:']['corriger_typo:']['cherche1'] += spip_timer('cherche1', true);
if($debug) spip_timer('chercheespaces');
if (strpos($letexte, '~') !== false)
$letexte = preg_replace("/ *~+ */S", "~", $letexte);
if($debug) $GLOBALS['totaux']['expanser_liens:']['corriger_typo:']['chercheespaces'] += spip_timer('chercheespaces', true);
if($debug) spip_timer('cherche2');
$letexte = preg_replace("/--([^-]|$)/S", "$pro—$1", $letexte, -1, $c);
if ($c) {
$letexte = preg_replace("/([-\n])$pro—/S", "$1--", $letexte);
$letexte = str_replace($pro, '', $letexte);
}
$letexte = preg_replace(',(https?|ftp|mailto)~((://[^"\'\s\[\]\}\)<>]+)~([?]))?,S', '$1$3$4', $letexte);
$letexte = str_replace('~', ' ', $letexte);
if($debug) $GLOBALS['totaux']['expanser_liens:']['corriger_typo:']['cherche2'] += spip_timer('cherche2', true);
return $letexte;
}