49class MWDoxygenFilter {
54 public static function filter(
$source ) {
55 $tokens = token_get_all(
$source );
58 foreach ( $tokens as $token ) {
59 if ( is_string( $token ) ) {
60 if ( $buffer !==
null && $token ===
';' ) {
63 $output .= $buffer[
'raw'];
69 [ $id, $content ] = $token;
74 $content = addcslashes( $content,
'\\' );
76 if ( preg_match(
'#@var\s+\S+#', $content ) ) {
77 $buffer = [
'raw' => $content,
'desc' =>
null,
'type' =>
null,
'name' => null ];
78 $buffer[
'desc'] = preg_replace_callback(
80 '#@var\s+(\S+)(\s+)?(\S+)?#',
81 static function (
$matches ) use ( &$buffer ) {
83 $buffer[
'name'] =
$matches[3] ??
null;
114 if ( $buffer !==
null ) {
115 if ( $buffer[
'name'] === $content ) {
117 $output .= $buffer[
'raw'];
122 $output .= $buffer[
'desc'];
123 $output .=
"{$buffer['type']} $content";
132 if ( $buffer !==
null ) {
133 $buffer[
'raw'] .= $content;
134 $buffer[
'desc'] .= $content;
146class_alias( MWDoxygenFilter::class,
'MWDoxygenFilter' );