@@ -197,28 +197,32 @@ protected function className(string $class, string $type): string
197197 }
198198
199199 /**
200- * Возвращает форматированнцй PHPDoc метода или класса в HTML
200+ * Возвращает форматированнцй в HTML PHPDoc метода или класса
201201 *
202202 * @param string $doc PHPDoc
203203 * @return string
204204 */
205205 protected function formatDocToHtml (string $ doc ): string
206206 {
207+ $ doc = preg_replace ('/\t/ ' , ' ' , $ doc );
208+
207209 /* удаляем спецсимволы комментария (/** * /) и нормализуем окончание строк */
208- $ doc = preg_replace ('/(\r\n\s *\*)|(\n\s *\*)|(\r\s *\*)/ ' , "\n" , $ doc );
209- $ doc = preg_replace ('/(^.*?\/\*\*)|(\/$)/ ' , '' , $ doc );
210+ $ doc = preg_replace ('/(\r\n *\*)|(\n *\*)|(\r *\*)/ ' , "\n" , $ doc );
211+ $ doc = preg_replace ('/(^.*?\/\*\*(?:\n) )|(\/$)/ ' , '' , $ doc );
210212
211213 $ doc = htmlentities ($ doc , ENT_SUBSTITUTE | ENT_COMPAT );
212214
213215 /* выделяем названия типов */
214- $ doc = preg_replace ('/(@param\s+)(.*?)(\s+\$)/ ' , '$1 ' .sprintf (static ::DOC_TYPE , '$2 ' ).'$3 ' , $ doc );
215- $ doc = preg_replace ('/(@return\s+)(.*? )/ ' , '$1 ' .sprintf (static ::DOC_TYPE , '$2 ' ), $ doc );
216+ $ doc = preg_replace (
217+ '/^ *((?:@return|@throws|@param) +)([^ \n]+)( +)?(.*)$/m ' ,
218+ '$1 ' .sprintf (static ::DOC_TYPE , '$2 ' ).'$3$4 ' , $ doc
219+ );
216220
217221 /* выделяем теги PHPDoc */
218- $ doc = preg_replace ('/(@.*?) / ' , sprintf (static ::DOC_TAG , '$1 ' ) , $ doc );
222+ $ doc = preg_replace ('/^ *(@[^ ]+)( +)?(.+)?$/m ' , sprintf (static ::DOC_TAG , '$1 ' ). ' $2$3 ' , $ doc );
219223
220224 /* выделяем имена переменных */
221- $ doc = preg_replace ('/(@.*?)(\$.*?)( |\n )/ ' , '$1 ' .sprintf (static ::DOC_VAR , '$2 ' ).'$3 ' , $ doc );
225+ $ doc = preg_replace ('/(@.*?)(\$.*?)(\s )/ ' , '$1 ' .sprintf (static ::DOC_VAR , '$2 ' ).'$3 ' , $ doc );
222226
223227 /* выделяем ссылки */
224228 $ doc = preg_replace ('#(http(?:s)?://.*?)( |<|\n)# ' , sprintf (static ::DOC_HREF , '$1 ' , '$1 ' ).'$2 ' , $ doc );
0 commit comments