mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/DiscussionTools
synced 2024-11-23 16:06:53 +00:00
build: Add mediawiki/mediawiki-phan-config
Replace phan-taint-check-plugin by phan, it is now included Change-Id: I0e682a83afd30faa8967e3c586431be4ae9a29b3
This commit is contained in:
parent
edba40b1b6
commit
48e860916a
19
.phan/config.php
Normal file
19
.phan/config.php
Normal file
|
@ -0,0 +1,19 @@
|
|||
<?php
|
||||
|
||||
$cfg = require __DIR__ . '/../vendor/mediawiki/mediawiki-phan-config/src/config.php';
|
||||
|
||||
$cfg['directory_list'] = array_merge(
|
||||
$cfg['directory_list'],
|
||||
[
|
||||
'../../extensions/VisualEditor',
|
||||
]
|
||||
);
|
||||
|
||||
$cfg['exclude_analysis_directory_list'] = array_merge(
|
||||
$cfg['exclude_analysis_directory_list'],
|
||||
[
|
||||
'../../extensions/VisualEditor',
|
||||
]
|
||||
);
|
||||
|
||||
return $cfg;
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
"require-dev": {
|
||||
"mediawiki/mediawiki-codesniffer": "31.0.0",
|
||||
"mediawiki/mediawiki-phan-config": "0.10.2",
|
||||
"mediawiki/minus-x": "1.1.0",
|
||||
"php-parallel-lint/php-console-highlighter": "0.5.0",
|
||||
"php-parallel-lint/php-parallel-lint": "1.2.0"
|
||||
|
@ -15,8 +16,5 @@
|
|||
"minus-x fix .",
|
||||
"phpcbf"
|
||||
]
|
||||
},
|
||||
"extra": {
|
||||
"phan-taint-check-plugin": "2.0.1"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,6 +46,7 @@ class CommentModifier {
|
|||
*/
|
||||
private static function isBlockElement( DOMNode $node ) : bool {
|
||||
return $node->nodeType === XML_ELEMENT_NODE &&
|
||||
// @phan-suppress-next-line PhanUndeclaredProperty
|
||||
in_array( strtolower( $node->tagName ), self::$blockElementTypes );
|
||||
}
|
||||
|
||||
|
@ -131,6 +132,7 @@ class CommentModifier {
|
|||
// parent is a list item or paragraph (hopefully)
|
||||
// target is an inline node within it
|
||||
|
||||
$item = null;
|
||||
if ( $curLevel < $desiredLevel ) {
|
||||
// Insert more lists after the target to increase nesting.
|
||||
|
||||
|
@ -206,6 +208,10 @@ class CommentModifier {
|
|||
$parent->insertBefore( $item, $target->nextSibling );
|
||||
}
|
||||
|
||||
if ( $item === null ) {
|
||||
throw new \LogicException( __METHOD__ . ' no item found' );
|
||||
}
|
||||
|
||||
return $item;
|
||||
}
|
||||
|
||||
|
@ -272,7 +278,7 @@ class CommentModifier {
|
|||
* @return DOMElement
|
||||
*/
|
||||
public static function addSiblingListItem( DOMElement $previousItem ) : DOMElement {
|
||||
$listItem = $previousItem->ownerDocument->createElement( $previousItem->tagName->toLowerCase() );
|
||||
$listItem = $previousItem->ownerDocument->createElement( strtolower( $previousItem->tagName ) );
|
||||
self::whitespaceParsoidHack( $listItem );
|
||||
$previousItem->parentNode->insertBefore( $listItem, $previousItem->nextSibling );
|
||||
return $listItem;
|
||||
|
|
|
@ -27,6 +27,19 @@ use Title;
|
|||
class CommentParser {
|
||||
private const SIGNATURE_SCAN_LIMIT = 100;
|
||||
|
||||
/** @var Language */
|
||||
private $language;
|
||||
|
||||
/** @var Config */
|
||||
private $config;
|
||||
|
||||
private $dateFormat;
|
||||
private $digits;
|
||||
/** @var string[] */
|
||||
private $contLangMessages;
|
||||
private $localTimezone;
|
||||
private $timezones;
|
||||
|
||||
/**
|
||||
* @param Language $language Content language
|
||||
* @param Config $config
|
||||
|
@ -292,7 +305,7 @@ class CommentParser {
|
|||
return preg_replace_callback(
|
||||
'/[' . $digits . ']/',
|
||||
function ( array $m ) use ( $digits ) {
|
||||
return strpos( $digits, $m[0] );
|
||||
return (string)strpos( $digits, $m[0] );
|
||||
},
|
||||
$text
|
||||
);
|
||||
|
@ -440,6 +453,7 @@ class CommentParser {
|
|||
$date->setTimezone( new DateTimeZone( 'UTC' ) );
|
||||
$date = DateTimeImmutable::createFromMutable( $date );
|
||||
if ( isset( $discussionToolsWarning ) ) {
|
||||
// @phan-suppress-next-line PhanUndeclaredProperty
|
||||
$date->discussionToolsWarning = $discussionToolsWarning;
|
||||
}
|
||||
|
||||
|
@ -554,6 +568,7 @@ class CommentParser {
|
|||
// text formatting) can just wrap it in a <span> to fix that.
|
||||
// "Ten Pound Hammer • (What did I screw up now?)"
|
||||
// "« Saper // dyskusja »"
|
||||
// @phan-suppress-next-line PhanUndeclaredMethod
|
||||
$links = $node->getElementsByTagName( 'a' );
|
||||
}
|
||||
if ( !count( $links ) ) {
|
||||
|
@ -563,6 +578,7 @@ class CommentParser {
|
|||
// Find the earliest link that links to the user's user page
|
||||
foreach ( $links as $link ) {
|
||||
$username = null;
|
||||
// @phan-suppress-next-line PhanUndeclaredMethod
|
||||
$title = $this->getTitleFromUrl( $link->getAttribute( 'href' ) );
|
||||
if ( !$title ) {
|
||||
continue;
|
||||
|
@ -771,6 +787,7 @@ class CommentParser {
|
|||
CommentUtils::childIndexOf( $lastSigNode ) + 1;
|
||||
$range = new ImmutableRange(
|
||||
$startNode->parentNode,
|
||||
// @phan-suppress-next-line PhanTypeMismatchArgumentNullable
|
||||
CommentUtils::childIndexOf( $startNode ),
|
||||
$lastSigNode === $node ? $node : $lastSigNode->parentNode,
|
||||
$offset
|
||||
|
@ -782,6 +799,7 @@ class CommentParser {
|
|||
$offset
|
||||
);
|
||||
|
||||
// @phan-suppress-next-line PhanTypeMismatchArgumentNullable
|
||||
$startLevel = $this->getIndentLevel( $startNode, $rootNode ) + 1;
|
||||
$endLevel = $this->getIndentLevel( $node, $rootNode ) + 1;
|
||||
if ( $startLevel !== $endLevel ) {
|
||||
|
@ -1008,7 +1026,7 @@ class CommentParser {
|
|||
$dataMw = json_decode( $node->getAttribute( 'data-mw' ), true );
|
||||
|
||||
// Only return a page name if this is a simple single-template transclusion.
|
||||
if (
|
||||
if ( $dataMw &&
|
||||
$dataMw['parts'] &&
|
||||
count( $dataMw['parts'] ) === 1 &&
|
||||
$dataMw['parts'][0]['template'] &&
|
||||
|
|
|
@ -5,6 +5,7 @@ namespace MediaWiki\Extension\DiscussionTools;
|
|||
use DOMElement;
|
||||
use DOMNode;
|
||||
use DOMXPath;
|
||||
use stdClass;
|
||||
|
||||
class CommentUtils {
|
||||
private function __construct() {
|
||||
|
@ -69,6 +70,7 @@ class CommentUtils {
|
|||
*
|
||||
* @param DOMNode $node
|
||||
* @return DOMElement|null Translcusion node, null if not found
|
||||
* @suppress PhanUndeclaredMethod
|
||||
*/
|
||||
public static function getTranscludedFromElement( DOMNode $node ) : ?DOMElement {
|
||||
while ( $node ) {
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
namespace MediaWiki\Extension\DiscussionTools;
|
||||
|
||||
use DOMNode;
|
||||
use Error;
|
||||
use Exception;
|
||||
|
||||
/**
|
||||
* ImmutableRange has a similar API to the DOM Range class.
|
||||
|
@ -39,6 +41,7 @@ class ImmutableRange {
|
|||
} while ( ( $b = $b->parentNode ) );
|
||||
|
||||
$node = null;
|
||||
// @phan-suppress-next-line PhanRedundantConditionInLoop
|
||||
while ( $ancestorsA && $ancestorsB && end( $ancestorsA ) === end( $ancestorsB ) ) {
|
||||
$node = end( $ancestorsA );
|
||||
array_pop( $ancestorsA );
|
||||
|
|
Loading…
Reference in a new issue