47class MWDoxygenFilter {
52 public static function filter(
$source ) {
53 $tokens = token_get_all(
$source );
56 foreach ( $tokens as $token ) {
57 if ( is_string( $token ) ) {
58 if ( $buffer !==
null && $token ===
';' ) {
61 $output .= $buffer[
'raw'];
67 [ $id, $content ] = $token;
72 $content = addcslashes( $content,
'\\' );
74 if ( preg_match(
'#@var\s+\S+#', $content ) ) {
75 $buffer = [
'raw' => $content,
'desc' =>
null,
'type' =>
null,
'name' => null ];
76 $buffer[
'desc'] = preg_replace_callback(
78 '#@var\s+(\S+)(\s+)?(\S+)?#',
79 static function (
$matches ) use ( &$buffer ) {
81 $buffer[
'name'] =
$matches[3] ??
null;
112 if ( $buffer !==
null ) {
113 if ( $buffer[
'name'] === $content ) {
115 $output .= $buffer[
'raw'];
120 $output .= $buffer[
'desc'];
121 $output .=
"{$buffer['type']} $content";
130 if ( $buffer !==
null ) {
131 $buffer[
'raw'] .= $content;
132 $buffer[
'desc'] .= $content;