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