X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=maintenance%2Fmwdoc-filter.php;h=cabf48937e059dffd051d7d3e35d5ff270a945d5;hb=18b3c566fcdf61dad674c0010ce3beb4309d7a04;hp=1da805e927c977aa165b7e3bc3b70b00b4f71caf;hpb=a6a6c19c794619c24881d2d984dc18ceb3b6419b;p=lhc%2Fweb%2Fwiklou.git diff --git a/maintenance/mwdoc-filter.php b/maintenance/mwdoc-filter.php index 1da805e927..cabf48937e 100644 --- a/maintenance/mwdoc-filter.php +++ b/maintenance/mwdoc-filter.php @@ -1,22 +1,9 @@ - * - * Improved to resolve various bugs and better MediaWiki PHPDoc conventions: - * - * - Insert variable name after typehint instead of at end of line so that - * documentation text may follow after "@var Type". - * - Insert typehint into source code before $variable instead of inside the comment - * so that Doxygen interprets it. - * - Strip the text after @var from the output to avoid Doxygen warnings aboug bogus - * symbols being documented but not declared or defined. - * - * Copyright (C) 2012 Tamas Imrei https://virtualtee.blogspot.com/ + * This CLI script is intended to be configured as the INPUT_FILTER + * script in a Doxyfile, e.g. like "php mwdoc-filter.php". * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the "Software"), @@ -42,59 +29,7 @@ if ( PHP_SAPI != 'cli' && PHP_SAPI != 'phpdbg' ) { die( "This filter can only be run from the command line.\n" ); } -$source = file_get_contents( $argv[1] ); -$tokens = token_get_all( $source ); +require_once __DIR__ . '/includes/MWDoxygenFilter.php'; -$buffer = $bufferType = null; -foreach ( $tokens as $token ) { - if ( is_string( $token ) ) { - if ( $buffer !== null && $token === ';' ) { - // If we still have a buffer and the statement has ended, - // flush it and move on. - echo $buffer; - $buffer = $bufferType = null; - } - echo $token; - continue; - } - list( $id, $content ) = $token; - switch ( $id ) { - case T_DOC_COMMENT: - // Escape slashes so that references to namespaces are not - // wrongly interpreted as a Doxygen "\command". - $content = addcslashes( $content, '\\' ); - // Look for instances of "@var Type" not followed by $name. - if ( preg_match( '#@var\s+([^\s]+)\s+([^\$]+)#s', $content ) ) { - $buffer = preg_replace_callback( - // Strip the "@var Type" part and remember the type - '#(@var\s+)([^\s]+)#s', - function ( $matches ) use ( &$bufferType ) { - $bufferType = $matches[2]; - return ''; - }, - $content - ); - } else { - echo $content; - } - break; - - case T_VARIABLE: - if ( $buffer !== null ) { - echo $buffer; - echo "$bufferType $content"; - $buffer = $bufferType = null; - } else { - echo $content; - } - break; - - default: - if ( $buffer !== null ) { - $buffer .= $content; - } else { - echo $content; - } - break; - } -} +$source = file_get_contents( $argv[1] ); +echo MWDoxygenFilter::filter( $source );