1 | <?php |
||
4 | class Nobr extends AbstractTret |
||
5 | { |
||
6 | public $title = "Неразрывные конструкции"; |
||
7 | |||
8 | public $classes = array( |
||
9 | 'nowrap' => 'word-spacing:nowrap;', |
||
10 | ); |
||
11 | |||
12 | public $rules = array( |
||
13 | |||
14 | 'super_nbsp' => array( |
||
15 | 'description' => 'Привязка союзов и предлогов к написанным после словам', |
||
16 | 'pattern' => '/(\s|^|\&(la|bd)quo\;|\>|\(|\&mdash\;\ \;)([a-zа-яё]{1,2}\s+)([a-zа-яё]{1,2}\s+)?([a-zа-яё0-9\-]{2,}|[0-9])/ieu', |
||
17 | 'replacement' => '$m[1] . trim($m[3]) . " " . ($m[4] ? trim($m[4]) . " " : "") . $m[5]' |
||
18 | ), |
||
19 | 'nbsp_in_the_end' => array( |
||
20 | 'description' => 'Привязка союзов и предлогов к предыдущим словам в случае конца предложения', |
||
21 | 'pattern' => '/([a-zа-яё0-9\-]{3,}) ([a-zа-яё]{1,2})\.( [A-ZА-ЯЁ]|$)/u', |
||
22 | 'replacement' => '\1 \2.\3' |
||
23 | ), |
||
24 | 'phone_builder' => array( |
||
25 | 'description' => 'Объединение в неразрывные конструкции номеров телефонов', |
||
26 | 'pattern' => |
||
27 | array( |
||
28 | '/([^\d\+]|^)([\+]?[0-9]{1,3})( |\ \;|\&thinsp\;)([0-9]{3,4}|\([0-9]{3,4}\))( |\ \;|\&thinsp\;)([0-9]{2,3})(-|\&minus\;)([0-9]{2})(-|\&minus\;)([0-9]{2})([^\d]|$)/e', |
||
29 | '/([^\d\+]|^)([\+]?[0-9]{1,3})( |\ \;|\&thinsp\;)([0-9]{3,4}|[0-9]{3,4})( |\ \;|\&thinsp\;)([0-9]{2,3})(-|\&minus\;)([0-9]{2})(-|\&minus\;)([0-9]{2})([^\d]|$)/e', |
||
30 | ), |
||
31 | 'replacement' => |
||
32 | array( |
||
33 | '$m[1] .(($m[1] == ">" || $m[11] == "<") ? $m[2]." ".$m[4]." ".$m[6]."-".$m[8]."-".$m[10] :$this->tag($m[2]." ".$m[4]." ".$m[6]."-".$m[8]."-".$m[10], "span", array("class"=>"nowrap")) ).$m[11]', |
||
34 | '$m[1] .(($m[1] == ">" || $m[11] == "<") ? $m[2]." ".$m[4]." ".$m[6]."-".$m[8]."-".$m[10] :$this->tag($m[2]." ".$m[4]." ".$m[6]."-".$m[8]."-".$m[10], "span", array("class"=>"nowrap")) ).$m[11]', |
||
35 | ), |
||
36 | ), |
||
37 | 'ip_address' => array( |
||
38 | 'description' => 'Объединение IP-адресов', |
||
39 | 'pattern' => '/(\s|\ \;|^)(\d{0,3}\.\d{0,3}\.\d{0,3}\.\d{0,3})/ie', |
||
40 | 'replacement' => '$m[1] . $this->nowrap_ip_address($m[2])' |
||
41 | ), |
||
42 | 'spaces_nobr_in_surname_abbr' => array( |
||
43 | 'description' => 'Привязка инициалов к фамилиям', |
||
44 | 'pattern' => |
||
45 | array( |
||
46 | '/(\s|^|\.|\,|\;|\:|\?|\!|\ \;)([A-ZА-ЯЁ])\.?(\s|\ \;)?([A-ZА-ЯЁ])(\.(\s|\ \;)?|(\s|\ \;))([A-ZА-ЯЁ][a-zа-яё]+)(\s|$|\.|\,|\;|\:|\?|\!|\ \;)/ue', |
||
47 | '/(\s|^|\.|\,|\;|\:|\?|\!|\ \;)([A-ZА-ЯЁ][a-zа-яё]+)(\s|\ \;)([A-ZА-ЯЁ])\.?(\s|\ \;)?([A-ZА-ЯЁ])\.?(\s|$|\.|\,|\;|\:|\?|\!|\ \;)/ue', |
||
48 | ), |
||
49 | 'replacement' => |
||
50 | array( |
||
51 | '$m[1].$this->tag($m[2].". ".$m[4].". ".$m[8], "span", array("class" => "nowrap")).$m[9]', |
||
52 | '$m[1].$this->tag($m[2]." ".$m[4].". ".$m[6].".", "span", array("class" => "nowrap")).$m[7]', |
||
53 | ), |
||
54 | ), |
||
55 | 'nbsp_before_particle' => array( |
||
56 | 'description' => 'Неразрывный пробел перед частицей', |
||
57 | 'pattern' => '/(\040|\t)+(ли|бы|б|же|ж)(\ \;|\.|\,|\:|\;|\&hellip\;|\?|\s)/iue', |
||
58 | 'replacement' => '" ".$m[2] . ($m[3] == " " ? " " : $m[3])' |
||
59 | ), |
||
60 | 'nbsp_v_kak_to' => array( |
||
61 | 'description' => 'Неразрывный пробел в как то', |
||
62 | 'pattern' => '/как то\:/ui', |
||
63 | 'replacement' => 'как то:' |
||
64 | ), |
||
65 | 'nbsp_celcius' => array( |
||
66 | 'description' => 'Привязка градусов к числу', |
||
67 | 'pattern' => '/(\s|^|\>|\ \;)(\d+)( |\ \;)?(°|\°\;)(C|С)(\s|\.|\!|\?|\,|$|\ \;|\;)/iu', |
||
68 | 'replacement' => '\1\2 \4C\6' |
||
69 | ), |
||
70 | 'hyphen_nowrap_in_small_words' => array( |
||
71 | 'description' => 'Обрамление пятисимвольных слов разделенных дефисом в неразрывные блоки', |
||
72 | 'disabled' => true, |
||
73 | 'cycled' => true, |
||
74 | 'pattern' => '/(\ \;|\s|\>|^)([a-zа-яё]{1}\-[a-zа-яё]{4}|[a-zа-яё]{2}\-[a-zа-яё]{3}|[a-zа-яё]{3}\-[a-zа-яё]{2}|[a-zа-яё]{4}\-[a-zа-яё]{1}|когда\-то|кое\-как|кой\-кого|вс[её]\-таки|[а-яё]+\-(кась|ка|де))(\s|\.|\,|\!|\?|\ \;|\&hellip\;|$)/uie', |
||
75 | 'replacement' => '$m[1] . $this->tag($m[2], "span", array("class"=>"nowrap")) . $m[4]', |
||
76 | ), |
||
77 | 'hyphen_nowrap' => array( |
||
78 | 'description' => 'Отмена переноса слова с дефисом', |
||
79 | 'disabled' => true, |
||
80 | 'cycled' => true, |
||
81 | 'pattern' => '/(\ \;|\s|\>|^)([a-zа-яё]+)((\-([a-zа-яё]+)){1,2})(\s|\.|\,|\!|\?|\ \;|\&hellip\;|$)/uie', |
||
82 | 'replacement' => '$m[1] . $this->tag($m[2].$m[3], "span", array("class"=>"nowrap")) . $m[6]' |
||
83 | ), |
||
84 | ); |
||
85 | |||
86 | /** |
||
87 | * Объединение IP-адрессов в неразрывные конструкции (IPv4 only) |
||
88 | * |
||
89 | * @param unknown_type $triads |
||
90 | * @return unknown |
||
91 | */ |
||
92 | protected function nowrap_ip_address($triads) |
||
111 | } |
||
112 |