Require indentation of CASE statements in PHP code

Bug: T182546
Change-Id: I91a9555893a08e4ec58da97c6cc4d1e70000ff6b
This commit is contained in:
Huji Lee 2017-12-10 22:07:50 -05:00
parent a1ac6795ff
commit e74bfe13f6
24 changed files with 1783 additions and 1785 deletions

View file

@ -560,26 +560,26 @@ class DiffHistoryBlob implements HistoryBlob {
$op = $x['op'];
++$p;
switch ( $op ) {
case self::XDL_BDOP_INS:
$x = unpack( 'Csize', substr( $diff, $p, 1 ) );
$p++;
$out .= substr( $diff, $p, $x['size'] );
$p += $x['size'];
break;
case self::XDL_BDOP_INSB:
$x = unpack( 'Vcsize', substr( $diff, $p, 4 ) );
$p += 4;
$out .= substr( $diff, $p, $x['csize'] );
$p += $x['csize'];
break;
case self::XDL_BDOP_CPY:
$x = unpack( 'Voff/Vcsize', substr( $diff, $p, 8 ) );
$p += 8;
$out .= substr( $base, $x['off'], $x['csize'] );
break;
default:
wfDebug( __METHOD__ . ": invalid op\n" );
return false;
case self::XDL_BDOP_INS:
$x = unpack( 'Csize', substr( $diff, $p, 1 ) );
$p++;
$out .= substr( $diff, $p, $x['size'] );
$p += $x['size'];
break;
case self::XDL_BDOP_INSB:
$x = unpack( 'Vcsize', substr( $diff, $p, 4 ) );
$p += 4;
$out .= substr( $diff, $p, $x['csize'] );
$p += $x['csize'];
break;
case self::XDL_BDOP_CPY:
$x = unpack( 'Voff/Vcsize', substr( $diff, $p, 8 ) );
$p += 8;
$out .= substr( $base, $x['off'], $x['csize'] );
break;
default:
wfDebug( __METHOD__ . ": invalid op\n" );
return false;
}
}
return $out;

View file

@ -1308,16 +1308,15 @@ class Message implements MessageSpecifier, Serializable {
*/
protected function formatPlaintext( $plaintext, $format ) {
switch ( $format ) {
case self::FORMAT_TEXT:
case self::FORMAT_PLAIN:
return $plaintext;
case self::FORMAT_PARSE:
case self::FORMAT_BLOCK_PARSE:
case self::FORMAT_ESCAPED:
default:
return htmlspecialchars( $plaintext, ENT_QUOTES );
case self::FORMAT_TEXT:
case self::FORMAT_PLAIN:
return $plaintext;
case self::FORMAT_PARSE:
case self::FORMAT_BLOCK_PARSE:
case self::FORMAT_ESCAPED:
default:
return htmlspecialchars( $plaintext, ENT_QUOTES );
}
}

View file

@ -97,17 +97,17 @@ class LCStoreStaticArray implements LCStore {
$data = $encoded[1];
switch ( $type ) {
case 'v':
return $data;
case 's':
return unserialize( $data );
case 'a':
return array_map( function ( $v ) {
return LCStoreStaticArray::decode( $v );
}, $data );
default:
throw new RuntimeException(
'Unable to decode ' . var_export( $encoded, true ) );
case 'v':
return $data;
case 's':
return unserialize( $data );
case 'a':
return array_map( function ( $v ) {
return LCStoreStaticArray::decode( $v );
}, $data );
default:
throw new RuntimeException(
'Unable to decode ' . var_export( $encoded, true ) );
}
}

View file

@ -304,40 +304,40 @@ class SquidPurgeClient {
*/
protected function processReadBuffer() {
switch ( $this->readState ) {
case 'idle':
return 'done';
case 'status':
case 'header':
$lines = explode( "\r\n", $this->readBuffer, 2 );
if ( count( $lines ) < 2 ) {
case 'idle':
return 'done';
}
if ( $this->readState == 'status' ) {
$this->processStatusLine( $lines[0] );
} else { // header
$this->processHeaderLine( $lines[0] );
}
$this->readBuffer = $lines[1];
return 'continue';
case 'body':
if ( $this->bodyRemaining !== null ) {
if ( $this->bodyRemaining > strlen( $this->readBuffer ) ) {
$this->bodyRemaining -= strlen( $this->readBuffer );
case 'status':
case 'header':
$lines = explode( "\r\n", $this->readBuffer, 2 );
if ( count( $lines ) < 2 ) {
return 'done';
}
if ( $this->readState == 'status' ) {
$this->processStatusLine( $lines[0] );
} else { // header
$this->processHeaderLine( $lines[0] );
}
$this->readBuffer = $lines[1];
return 'continue';
case 'body':
if ( $this->bodyRemaining !== null ) {
if ( $this->bodyRemaining > strlen( $this->readBuffer ) ) {
$this->bodyRemaining -= strlen( $this->readBuffer );
$this->readBuffer = '';
return 'done';
} else {
$this->readBuffer = substr( $this->readBuffer, $this->bodyRemaining );
$this->bodyRemaining = 0;
$this->nextRequest();
return 'continue';
}
} else {
// No content length, read all data to EOF
$this->readBuffer = '';
return 'done';
} else {
$this->readBuffer = substr( $this->readBuffer, $this->bodyRemaining );
$this->bodyRemaining = 0;
$this->nextRequest();
return 'continue';
}
} else {
// No content length, read all data to EOF
$this->readBuffer = '';
return 'done';
}
default:
throw new MWException( __METHOD__ . ': unexpected state' );
default:
throw new MWException( __METHOD__ . ': unexpected state' );
}
}

View file

@ -543,13 +543,13 @@ class WikiImporter {
$buffer = "";
while ( $this->reader->read() ) {
switch ( $this->reader->nodeType ) {
case XMLReader::TEXT:
case XMLReader::CDATA:
case XMLReader::SIGNIFICANT_WHITESPACE:
$buffer .= $this->reader->value;
break;
case XMLReader::END_ELEMENT:
return $buffer;
case XMLReader::TEXT:
case XMLReader::CDATA:
case XMLReader::SIGNIFICANT_WHITESPACE:
$buffer .= $this->reader->value;
break;
case XMLReader::END_ELEMENT:
return $buffer;
}
}

View file

@ -53,137 +53,137 @@ class MWMessagePack {
}
switch ( gettype( $value ) ) {
case 'NULL':
return "\xC0";
case 'NULL':
return "\xC0";
case 'boolean':
return $value ? "\xC3" : "\xC2";
case 'boolean':
return $value ? "\xC3" : "\xC2";
case 'double':
case 'float':
return self::$bigendian
? "\xCB" . pack( 'd', $value )
: "\xCB" . strrev( pack( 'd', $value ) );
case 'double':
case 'float':
return self::$bigendian
? "\xCB" . pack( 'd', $value )
: "\xCB" . strrev( pack( 'd', $value ) );
case 'string':
$length = strlen( $value );
if ( $length < 32 ) {
return pack( 'Ca*', 0xA0 | $length, $value );
} elseif ( $length <= 0xFFFF ) {
return pack( 'Cna*', 0xDA, $length, $value );
} elseif ( $length <= 0xFFFFFFFF ) {
return pack( 'CNa*', 0xDB, $length, $value );
}
throw new InvalidArgumentException( __METHOD__
. ": string too long (length: $length; max: 4294967295)" );
case 'integer':
if ( $value >= 0 ) {
if ( $value <= 0x7F ) {
// positive fixnum
return chr( $value );
case 'string':
$length = strlen( $value );
if ( $length < 32 ) {
return pack( 'Ca*', 0xA0 | $length, $value );
} elseif ( $length <= 0xFFFF ) {
return pack( 'Cna*', 0xDA, $length, $value );
} elseif ( $length <= 0xFFFFFFFF ) {
return pack( 'CNa*', 0xDB, $length, $value );
}
if ( $value <= 0xFF ) {
// uint8
return pack( 'CC', 0xCC, $value );
}
if ( $value <= 0xFFFF ) {
// uint16
return pack( 'Cn', 0xCD, $value );
}
if ( $value <= 0xFFFFFFFF ) {
// uint32
return pack( 'CN', 0xCE, $value );
}
if ( $value <= 0xFFFFFFFFFFFFFFFF ) {
// uint64
$hi = ( $value & 0xFFFFFFFF00000000 ) >> 32;
$lo = $value & 0xFFFFFFFF;
return self::$bigendian
? pack( 'CNN', 0xCF, $lo, $hi )
: pack( 'CNN', 0xCF, $hi, $lo );
}
} else {
if ( $value >= -32 ) {
// negative fixnum
return pack( 'c', $value );
}
if ( $value >= -0x80 ) {
// int8
return pack( 'Cc', 0xD0, $value );
}
if ( $value >= -0x8000 ) {
// int16
$p = pack( 's', $value );
return self::$bigendian
? pack( 'Ca2', 0xD1, $p )
: pack( 'Ca2', 0xD1, strrev( $p ) );
}
if ( $value >= -0x80000000 ) {
// int32
$p = pack( 'l', $value );
return self::$bigendian
? pack( 'Ca4', 0xD2, $p )
: pack( 'Ca4', 0xD2, strrev( $p ) );
}
if ( $value >= -0x8000000000000000 ) {
// int64
// pack() does not support 64-bit ints either so pack into two 32-bits
$p1 = pack( 'l', $value & 0xFFFFFFFF );
$p2 = pack( 'l', ( $value >> 32 ) & 0xFFFFFFFF );
return self::$bigendian
? pack( 'Ca4a4', 0xD3, $p1, $p2 )
: pack( 'Ca4a4', 0xD3, strrev( $p2 ), strrev( $p1 ) );
}
}
throw new InvalidArgumentException( __METHOD__ . ": invalid integer '$value'" );
case 'array':
$buffer = '';
$length = count( $value );
if ( $length > 0xFFFFFFFF ) {
throw new InvalidArgumentException( __METHOD__
. ": array too long (length: $length, max: 4294967295)" );
}
. ": string too long (length: $length; max: 4294967295)" );
$index = 0;
foreach ( $value as $k => $v ) {
if ( $index !== $k || $index === $length ) {
break;
case 'integer':
if ( $value >= 0 ) {
if ( $value <= 0x7F ) {
// positive fixnum
return chr( $value );
}
if ( $value <= 0xFF ) {
// uint8
return pack( 'CC', 0xCC, $value );
}
if ( $value <= 0xFFFF ) {
// uint16
return pack( 'Cn', 0xCD, $value );
}
if ( $value <= 0xFFFFFFFF ) {
// uint32
return pack( 'CN', 0xCE, $value );
}
if ( $value <= 0xFFFFFFFFFFFFFFFF ) {
// uint64
$hi = ( $value & 0xFFFFFFFF00000000 ) >> 32;
$lo = $value & 0xFFFFFFFF;
return self::$bigendian
? pack( 'CNN', 0xCF, $lo, $hi )
: pack( 'CNN', 0xCF, $hi, $lo );
}
} else {
$index++;
if ( $value >= -32 ) {
// negative fixnum
return pack( 'c', $value );
}
if ( $value >= -0x80 ) {
// int8
return pack( 'Cc', 0xD0, $value );
}
if ( $value >= -0x8000 ) {
// int16
$p = pack( 's', $value );
return self::$bigendian
? pack( 'Ca2', 0xD1, $p )
: pack( 'Ca2', 0xD1, strrev( $p ) );
}
if ( $value >= -0x80000000 ) {
// int32
$p = pack( 'l', $value );
return self::$bigendian
? pack( 'Ca4', 0xD2, $p )
: pack( 'Ca4', 0xD2, strrev( $p ) );
}
if ( $value >= -0x8000000000000000 ) {
// int64
// pack() does not support 64-bit ints either so pack into two 32-bits
$p1 = pack( 'l', $value & 0xFFFFFFFF );
$p2 = pack( 'l', ( $value >> 32 ) & 0xFFFFFFFF );
return self::$bigendian
? pack( 'Ca4a4', 0xD3, $p1, $p2 )
: pack( 'Ca4a4', 0xD3, strrev( $p2 ), strrev( $p1 ) );
}
}
}
$associative = $index !== $length;
throw new InvalidArgumentException( __METHOD__ . ": invalid integer '$value'" );
if ( $associative ) {
if ( $length < 16 ) {
$buffer .= pack( 'C', 0x80 | $length );
} elseif ( $length <= 0xFFFF ) {
$buffer .= pack( 'Cn', 0xDE, $length );
} else {
$buffer .= pack( 'CN', 0xDF, $length );
case 'array':
$buffer = '';
$length = count( $value );
if ( $length > 0xFFFFFFFF ) {
throw new InvalidArgumentException( __METHOD__
. ": array too long (length: $length, max: 4294967295)" );
}
$index = 0;
foreach ( $value as $k => $v ) {
$buffer .= self::pack( $k );
$buffer .= self::pack( $v );
if ( $index !== $k || $index === $length ) {
break;
} else {
$index++;
}
}
} else {
if ( $length < 16 ) {
$buffer .= pack( 'C', 0x90 | $length );
} elseif ( $length <= 0xFFFF ) {
$buffer .= pack( 'Cn', 0xDC, $length );
} else {
$buffer .= pack( 'CN', 0xDD, $length );
}
foreach ( $value as $v ) {
$buffer .= self::pack( $v );
}
}
return $buffer;
$associative = $index !== $length;
default:
throw new InvalidArgumentException( __METHOD__ . ': unsupported type ' . gettype( $value ) );
if ( $associative ) {
if ( $length < 16 ) {
$buffer .= pack( 'C', 0x80 | $length );
} elseif ( $length <= 0xFFFF ) {
$buffer .= pack( 'Cn', 0xDE, $length );
} else {
$buffer .= pack( 'CN', 0xDF, $length );
}
foreach ( $value as $k => $v ) {
$buffer .= self::pack( $k );
$buffer .= self::pack( $v );
}
} else {
if ( $length < 16 ) {
$buffer .= pack( 'C', 0x90 | $length );
} elseif ( $length <= 0xFFFF ) {
$buffer .= pack( 'Cn', 0xDC, $length );
} else {
$buffer .= pack( 'CN', 0xDD, $length );
}
foreach ( $value as $v ) {
$buffer .= self::pack( $v );
}
}
return $buffer;
default:
throw new InvalidArgumentException( __METHOD__ . ': unsupported type ' . gettype( $value ) );
}
}
}

View file

@ -479,23 +479,23 @@ class XmlTypeCheck {
continue;
}
switch ( $field ) {
case 'typepublic':
case 'typesystem':
$parsed['type'] = $value;
break;
case 'pubquote':
case 'pubapos':
$parsed['publicid'] = $value;
break;
case 'pubsysquote':
case 'pubsysapos':
case 'sysquote':
case 'sysapos':
$parsed['systemid'] = $value;
break;
case 'internal':
$parsed['internal'] = $value;
break;
case 'typepublic':
case 'typesystem':
$parsed['type'] = $value;
break;
case 'pubquote':
case 'pubapos':
$parsed['publicid'] = $value;
break;
case 'pubsysquote':
case 'pubsysapos':
case 'sysquote':
case 'sysapos':
$parsed['systemid'] = $value;
break;
case 'internal':
$parsed['internal'] = $value;
break;
}
}
return $parsed;

View file

@ -112,14 +112,14 @@ class BitmapHandler extends TransformationalImageHandler {
*/
protected function imageMagickSubsampling( $pixelFormat ) {
switch ( $pixelFormat ) {
case 'yuv444':
return [ '1x1', '1x1', '1x1' ];
case 'yuv422':
return [ '2x1', '1x1', '1x1' ];
case 'yuv420':
return [ '2x2', '1x1', '1x1' ];
default:
throw new MWException( 'Invalid pixel format for JPEG output' );
case 'yuv444':
return [ '1x1', '1x1', '1x1' ];
case 'yuv422':
return [ '2x1', '1x1', '1x1' ];
case 'yuv420':
return [ '2x2', '1x1', '1x1' ];
default:
throw new MWException( 'Invalid pixel format for JPEG output' );
}
}

View file

@ -162,18 +162,17 @@ class XCFHandler extends BitmapHandler {
// Unclear from base media type if it has an alpha layer,
// so just assume that it does since it "potentially" could.
switch ( $header['base_type'] ) {
case 0:
$metadata['colorType'] = 'truecolour-alpha';
break;
case 1:
$metadata['colorType'] = 'greyscale-alpha';
break;
case 2:
$metadata['colorType'] = 'index-coloured';
break;
default:
$metadata['colorType'] = 'unknown';
case 0:
$metadata['colorType'] = 'truecolour-alpha';
break;
case 1:
$metadata['colorType'] = 'greyscale-alpha';
break;
case 2:
$metadata['colorType'] = 'index-coloured';
break;
default:
$metadata['colorType'] = 'unknown';
}
} else {
// Marker to prevent repeated attempted extraction

View file

@ -194,15 +194,15 @@ class WikiPage implements Page, IDBAccessObject {
*/
private static function convertSelectType( $type ) {
switch ( $type ) {
case 'fromdb':
return self::READ_NORMAL;
case 'fromdbmaster':
return self::READ_LATEST;
case 'forupdate':
return self::READ_LOCKING;
default:
// It may already be an integer or whatever else
return $type;
case 'fromdb':
return self::READ_NORMAL;
case 'fromdbmaster':
return self::READ_LATEST;
case 'forupdate':
return self::READ_LOCKING;
default:
// It may already be an integer or whatever else
return $type;
}
}

View file

@ -417,130 +417,130 @@ class BlockLevelPass {
$c = $str[$i];
switch ( $state ) {
case self::COLON_STATE_TEXT:
switch ( $c ) {
case "<":
# Could be either a <start> tag or an </end> tag
$state = self::COLON_STATE_TAGSTART;
break;
case ":":
if ( $ltLevel === 0 ) {
# We found it!
$before = substr( $str, 0, $i );
$after = substr( $str, $i + 1 );
return $i;
case self::COLON_STATE_TEXT:
switch ( $c ) {
case "<":
# Could be either a <start> tag or an </end> tag
$state = self::COLON_STATE_TAGSTART;
break;
case ":":
if ( $ltLevel === 0 ) {
# We found it!
$before = substr( $str, 0, $i );
$after = substr( $str, $i + 1 );
return $i;
}
# Embedded in a tag; don't break it.
break;
default:
# Skip ahead looking for something interesting
if ( !preg_match( '/:|<|-\{/', $str, $m, PREG_OFFSET_CAPTURE, $i ) ) {
# Nothing else interesting
return false;
}
if ( $m[0][0] === '-{' ) {
$state = self::COLON_STATE_LC;
$lcLevel++;
$i = $m[0][1] + 1;
} else {
# Skip ahead to next interesting character.
$i = $m[0][1] - 1;
}
break;
}
# Embedded in a tag; don't break it.
break;
default:
# Skip ahead looking for something interesting
if ( !preg_match( '/:|<|-\{/', $str, $m, PREG_OFFSET_CAPTURE, $i ) ) {
# Nothing else interesting
return false;
}
if ( $m[0][0] === '-{' ) {
$state = self::COLON_STATE_LC;
$lcLevel++;
case self::COLON_STATE_LC:
# In language converter markup -{ ... }-
if ( !preg_match( '/-\{|\}-/', $str, $m, PREG_OFFSET_CAPTURE, $i ) ) {
# Nothing else interesting to find; abort!
# We're nested in language converter markup, but there
# are no close tags left. Abort!
break 2;
} elseif ( $m[0][0] === '-{' ) {
$i = $m[0][1] + 1;
} else {
# Skip ahead to next interesting character.
$i = $m[0][1] - 1;
$lcLevel++;
} elseif ( $m[0][0] === '}-' ) {
$i = $m[0][1] + 1;
$lcLevel--;
if ( $lcLevel === 0 ) {
$state = self::COLON_STATE_TEXT;
}
}
break;
}
break;
case self::COLON_STATE_LC:
# In language converter markup -{ ... }-
if ( !preg_match( '/-\{|\}-/', $str, $m, PREG_OFFSET_CAPTURE, $i ) ) {
# Nothing else interesting to find; abort!
# We're nested in language converter markup, but there
# are no close tags left. Abort!
break 2;
} elseif ( $m[0][0] === '-{' ) {
$i = $m[0][1] + 1;
$lcLevel++;
} elseif ( $m[0][0] === '}-' ) {
$i = $m[0][1] + 1;
$lcLevel--;
if ( $lcLevel === 0 ) {
case self::COLON_STATE_TAG:
# In a <tag>
switch ( $c ) {
case ">":
$ltLevel++;
$state = self::COLON_STATE_TEXT;
break;
case "/":
# Slash may be followed by >?
$state = self::COLON_STATE_TAGSLASH;
break;
default:
# ignore
}
break;
case self::COLON_STATE_TAGSTART:
switch ( $c ) {
case "/":
$state = self::COLON_STATE_CLOSETAG;
break;
case "!":
$state = self::COLON_STATE_COMMENT;
break;
case ">":
# Illegal early close? This shouldn't happen D:
$state = self::COLON_STATE_TEXT;
break;
default:
$state = self::COLON_STATE_TAG;
}
break;
case self::COLON_STATE_CLOSETAG:
# In a </tag>
if ( $c === ">" ) {
if ( $ltLevel > 0 ) {
$ltLevel--;
} else {
# ignore the excess close tag, but keep looking for
# colons. (This matches Parsoid behavior.)
wfDebug( __METHOD__ . ": Invalid input; too many close tags\n" );
}
$state = self::COLON_STATE_TEXT;
}
}
break;
case self::COLON_STATE_TAG:
# In a <tag>
switch ( $c ) {
case ">":
$ltLevel++;
$state = self::COLON_STATE_TEXT;
break;
case "/":
# Slash may be followed by >?
$state = self::COLON_STATE_TAGSLASH;
break;
default:
# ignore
}
break;
case self::COLON_STATE_TAGSTART:
switch ( $c ) {
case "/":
$state = self::COLON_STATE_CLOSETAG;
break;
case "!":
$state = self::COLON_STATE_COMMENT;
break;
case ">":
# Illegal early close? This shouldn't happen D:
$state = self::COLON_STATE_TEXT;
break;
default:
$state = self::COLON_STATE_TAG;
}
break;
case self::COLON_STATE_CLOSETAG:
# In a </tag>
if ( $c === ">" ) {
if ( $ltLevel > 0 ) {
$ltLevel--;
case self::COLON_STATE_TAGSLASH:
if ( $c === ">" ) {
# Yes, a self-closed tag <blah/>
$state = self::COLON_STATE_TEXT;
} else {
# ignore the excess close tag, but keep looking for
# colons. (This matches Parsoid behavior.)
wfDebug( __METHOD__ . ": Invalid input; too many close tags\n" );
# Probably we're jumping the gun, and this is an attribute
$state = self::COLON_STATE_TAG;
}
$state = self::COLON_STATE_TEXT;
}
break;
case self::COLON_STATE_TAGSLASH:
if ( $c === ">" ) {
# Yes, a self-closed tag <blah/>
$state = self::COLON_STATE_TEXT;
} else {
# Probably we're jumping the gun, and this is an attribute
$state = self::COLON_STATE_TAG;
}
break;
case self::COLON_STATE_COMMENT:
if ( $c === "-" ) {
$state = self::COLON_STATE_COMMENTDASH;
}
break;
case self::COLON_STATE_COMMENTDASH:
if ( $c === "-" ) {
$state = self::COLON_STATE_COMMENTDASHDASH;
} else {
$state = self::COLON_STATE_COMMENT;
}
break;
case self::COLON_STATE_COMMENTDASHDASH:
if ( $c === ">" ) {
$state = self::COLON_STATE_TEXT;
} else {
$state = self::COLON_STATE_COMMENT;
}
break;
default:
throw new MWException( "State machine error in " . __METHOD__ );
break;
case self::COLON_STATE_COMMENT:
if ( $c === "-" ) {
$state = self::COLON_STATE_COMMENTDASH;
}
break;
case self::COLON_STATE_COMMENTDASH:
if ( $c === "-" ) {
$state = self::COLON_STATE_COMMENTDASHDASH;
} else {
$state = self::COLON_STATE_COMMENT;
}
break;
case self::COLON_STATE_COMMENTDASHDASH:
if ( $c === ">" ) {
$state = self::COLON_STATE_TEXT;
} else {
$state = self::COLON_STATE_COMMENT;
}
break;
default:
throw new MWException( "State machine error in " . __METHOD__ );
}
}
if ( $ltLevel > 0 || $lcLevel > 0 ) {

View file

@ -5022,40 +5022,40 @@ class Parser {
$paramName = $paramMap[$magicName];
switch ( $paramName ) {
case 'gallery-internal-alt':
$alt = $this->stripAltText( $match, false );
break;
case 'gallery-internal-link':
$linkValue = strip_tags( $this->replaceLinkHoldersText( $match ) );
$chars = self::EXT_LINK_URL_CLASS;
$addr = self::EXT_LINK_ADDR;
$prots = $this->mUrlProtocols;
// check to see if link matches an absolute url, if not then it must be a wiki link.
if ( preg_match( '/^-{R|(.*)}-$/', $linkValue ) ) {
// Result of LanguageConverter::markNoConversion
// invoked on an external link.
$linkValue = substr( $linkValue, 4, -2 );
}
if ( preg_match( "/^($prots)$addr$chars*$/u", $linkValue ) ) {
$link = $linkValue;
$this->mOutput->addExternalLink( $link );
} else {
$localLinkTitle = Title::newFromText( $linkValue );
if ( $localLinkTitle !== null ) {
$this->mOutput->addLink( $localLinkTitle );
$link = $localLinkTitle->getLinkURL();
case 'gallery-internal-alt':
$alt = $this->stripAltText( $match, false );
break;
case 'gallery-internal-link':
$linkValue = strip_tags( $this->replaceLinkHoldersText( $match ) );
$chars = self::EXT_LINK_URL_CLASS;
$addr = self::EXT_LINK_ADDR;
$prots = $this->mUrlProtocols;
// check to see if link matches an absolute url, if not then it must be a wiki link.
if ( preg_match( '/^-{R|(.*)}-$/', $linkValue ) ) {
// Result of LanguageConverter::markNoConversion
// invoked on an external link.
$linkValue = substr( $linkValue, 4, -2 );
}
if ( preg_match( "/^($prots)$addr$chars*$/u", $linkValue ) ) {
$link = $linkValue;
$this->mOutput->addExternalLink( $link );
} else {
$localLinkTitle = Title::newFromText( $linkValue );
if ( $localLinkTitle !== null ) {
$this->mOutput->addLink( $localLinkTitle );
$link = $localLinkTitle->getLinkURL();
}
}
break;
default:
// Must be a handler specific parameter.
if ( $handler->validateParam( $paramName, $match ) ) {
$handlerOptions[$paramName] = $match;
} else {
// Guess not, consider it as caption.
wfDebug( "$parameterMatch failed parameter validation\n" );
$label = '|' . $parameterMatch;
}
}
break;
default:
// Must be a handler specific parameter.
if ( $handler->validateParam( $paramName, $match ) ) {
$handlerOptions[$paramName] = $match;
} else {
// Guess not, consider it as caption.
wfDebug( "$parameterMatch failed parameter validation\n" );
$label = '|' . $parameterMatch;
}
}
} else {
@ -5217,52 +5217,52 @@ class Parser {
} else {
# Validate internal parameters
switch ( $paramName ) {
case 'manualthumb':
case 'alt':
case 'class':
# @todo FIXME: Possibly check validity here for
# manualthumb? downstream behavior seems odd with
# missing manual thumbs.
$validated = true;
$value = $this->stripAltText( $value, $holders );
break;
case 'link':
$chars = self::EXT_LINK_URL_CLASS;
$addr = self::EXT_LINK_ADDR;
$prots = $this->mUrlProtocols;
if ( $value === '' ) {
$paramName = 'no-link';
$value = true;
case 'manualthumb':
case 'alt':
case 'class':
# @todo FIXME: Possibly check validity here for
# manualthumb? downstream behavior seems odd with
# missing manual thumbs.
$validated = true;
} elseif ( preg_match( "/^((?i)$prots)/", $value ) ) {
if ( preg_match( "/^((?i)$prots)$addr$chars*$/u", $value, $m ) ) {
$paramName = 'link-url';
$this->mOutput->addExternalLink( $value );
if ( $this->mOptions->getExternalLinkTarget() ) {
$params[$type]['link-target'] = $this->mOptions->getExternalLinkTarget();
$value = $this->stripAltText( $value, $holders );
break;
case 'link':
$chars = self::EXT_LINK_URL_CLASS;
$addr = self::EXT_LINK_ADDR;
$prots = $this->mUrlProtocols;
if ( $value === '' ) {
$paramName = 'no-link';
$value = true;
$validated = true;
} elseif ( preg_match( "/^((?i)$prots)/", $value ) ) {
if ( preg_match( "/^((?i)$prots)$addr$chars*$/u", $value, $m ) ) {
$paramName = 'link-url';
$this->mOutput->addExternalLink( $value );
if ( $this->mOptions->getExternalLinkTarget() ) {
$params[$type]['link-target'] = $this->mOptions->getExternalLinkTarget();
}
$validated = true;
}
} else {
$linkTitle = Title::newFromText( $value );
if ( $linkTitle ) {
$paramName = 'link-title';
$value = $linkTitle;
$this->mOutput->addLink( $linkTitle );
$validated = true;
}
$validated = true;
}
} else {
$linkTitle = Title::newFromText( $value );
if ( $linkTitle ) {
$paramName = 'link-title';
$value = $linkTitle;
$this->mOutput->addLink( $linkTitle );
$validated = true;
}
}
break;
case 'frameless':
case 'framed':
case 'thumbnail':
// use first appearing option, discard others.
$validated = !$seenformat;
$seenformat = true;
break;
default:
# Most other things appear to be empty or numeric...
$validated = ( $value === false || is_numeric( trim( $value ) ) );
break;
case 'frameless':
case 'framed':
case 'thumbnail':
// use first appearing option, discard others.
$validated = !$seenformat;
$seenformat = true;
break;
default:
# Most other things appear to be empty or numeric...
$validated = ( $value === false || is_numeric( trim( $value ) ) );
}
}

View file

@ -1922,18 +1922,18 @@ class PPNode_Hash_Tree implements PPNode {
continue;
}
switch ( $child[self::NAME] ) {
case 'name':
$bits['name'] = new self( $children, $i );
break;
case 'attr':
$bits['attr'] = new self( $children, $i );
break;
case 'inner':
$bits['inner'] = new self( $children, $i );
break;
case 'close':
$bits['close'] = new self( $children, $i );
break;
case 'name':
$bits['name'] = new self( $children, $i );
break;
case 'attr':
$bits['attr'] = new self( $children, $i );
break;
case 'inner':
$bits['inner'] = new self( $children, $i );
break;
case 'close':
$bits['close'] = new self( $children, $i );
break;
}
}
if ( !isset( $bits['name'] ) ) {
@ -2001,15 +2001,15 @@ class PPNode_Hash_Tree implements PPNode {
continue;
}
switch ( $child[self::NAME] ) {
case 'title':
$bits['title'] = new self( $children, $i );
break;
case 'part':
$parts[] = new self( $children, $i );
break;
case '@lineStart':
$bits['lineStart'] = '1';
break;
case 'title':
$bits['title'] = new self( $children, $i );
break;
case 'part':
$parts[] = new self( $children, $i );
break;
case '@lineStart':
$bits['lineStart'] = '1';
break;
}
}
if ( !isset( $bits['title'] ) ) {

View file

@ -112,11 +112,11 @@ abstract class SearchEngine {
*/
public function supports( $feature ) {
switch ( $feature ) {
case 'search-update':
return true;
case 'title-suffix-filter':
default:
return false;
case 'search-update':
return true;
case 'title-suffix-filter':
default:
return false;
}
}

View file

@ -209,10 +209,10 @@ class SearchMySQL extends SearchDatabase {
public function supports( $feature ) {
switch ( $feature ) {
case 'title-suffix-filter':
return true;
default:
return parent::supports( $feature );
case 'title-suffix-filter':
return true;
default:
return parent::supports( $feature );
}
}

View file

@ -182,44 +182,44 @@ abstract class BaseTemplate extends QuickTemplate {
continue;
}
switch ( $boxName ) {
case 'SEARCH':
// Search is a special case, skins should custom implement this
$boxes[$boxName] = [
'id' => 'p-search',
'header' => $this->getMsg( 'search' )->text(),
'generated' => false,
'content' => true,
];
break;
case 'TOOLBOX':
$msgObj = $this->getMsg( 'toolbox' );
$boxes[$boxName] = [
'id' => 'p-tb',
'header' => $msgObj->exists() ? $msgObj->text() : 'toolbox',
'generated' => false,
'content' => $this->getToolbox(),
];
break;
case 'LANGUAGES':
if ( $this->data['language_urls'] !== false ) {
$msgObj = $this->getMsg( 'otherlanguages' );
case 'SEARCH':
// Search is a special case, skins should custom implement this
$boxes[$boxName] = [
'id' => 'p-lang',
'header' => $msgObj->exists() ? $msgObj->text() : 'otherlanguages',
'id' => 'p-search',
'header' => $this->getMsg( 'search' )->text(),
'generated' => false,
'content' => $this->data['language_urls'] ?: [],
'content' => true,
];
}
break;
default:
$msgObj = $this->getMsg( $boxName );
$boxes[$boxName] = [
'id' => "p-$boxName",
'header' => $msgObj->exists() ? $msgObj->text() : $boxName,
'generated' => true,
'content' => $content,
];
break;
break;
case 'TOOLBOX':
$msgObj = $this->getMsg( 'toolbox' );
$boxes[$boxName] = [
'id' => 'p-tb',
'header' => $msgObj->exists() ? $msgObj->text() : 'toolbox',
'generated' => false,
'content' => $this->getToolbox(),
];
break;
case 'LANGUAGES':
if ( $this->data['language_urls'] !== false ) {
$msgObj = $this->getMsg( 'otherlanguages' );
$boxes[$boxName] = [
'id' => 'p-lang',
'header' => $msgObj->exists() ? $msgObj->text() : 'otherlanguages',
'generated' => false,
'content' => $this->data['language_urls'] ?: [],
];
}
break;
default:
$msgObj = $this->getMsg( $boxName );
$boxes[$boxName] = [
'id' => "p-$boxName",
'header' => $msgObj->exists() ? $msgObj->text() : $boxName,
'generated' => true,
'content' => $content,
];
break;
}
}

File diff suppressed because it is too large Load diff

View file

@ -354,18 +354,18 @@ class ClassCollector {
// Note: When changing class name discovery logic,
// AutoLoaderTest.php may also need to be updated.
switch ( $token[0] ) {
case T_NAMESPACE:
case T_CLASS:
case T_INTERFACE:
case T_TRAIT:
case T_DOUBLE_COLON:
$this->startToken = $token;
break;
case T_STRING:
if ( $token[1] === 'class_alias' ) {
case T_NAMESPACE:
case T_CLASS:
case T_INTERFACE:
case T_TRAIT:
case T_DOUBLE_COLON:
$this->startToken = $token;
$this->alias = [];
}
break;
case T_STRING:
if ( $token[1] === 'class_alias' ) {
$this->startToken = $token;
$this->alias = [];
}
}
}
@ -376,78 +376,78 @@ class ClassCollector {
*/
protected function tryEndExpect( $token ) {
switch ( $this->startToken[0] ) {
case T_DOUBLE_COLON:
// Skip over T_CLASS after T_DOUBLE_COLON because this is something like
// "self::static" which accesses the class name. It doens't define a new class.
$this->startToken = null;
break;
case T_NAMESPACE:
if ( $token === ';' || $token === '{' ) {
$this->namespace = $this->implodeTokens() . '\\';
} else {
$this->tokens[] = $token;
}
break;
case T_STRING:
if ( $this->alias !== null ) {
// Flow 1 - Two string literals:
// - T_STRING class_alias
// - '('
// - T_CONSTANT_ENCAPSED_STRING 'TargetClass'
// - ','
// - T_WHITESPACE
// - T_CONSTANT_ENCAPSED_STRING 'AliasName'
// - ')'
// Flow 2 - Use of ::class syntax for first parameter
// - T_STRING class_alias
// - '('
// - T_STRING TargetClass
// - T_DOUBLE_COLON ::
// - T_CLASS class
// - ','
// - T_WHITESPACE
// - T_CONSTANT_ENCAPSED_STRING 'AliasName'
// - ')'
if ( $token === '(' ) {
// Start of a function call to class_alias()
$this->alias = [ 'target' => false, 'name' => false ];
} elseif ( $token === ',' ) {
// Record that we're past the first parameter
if ( $this->alias['target'] === false ) {
$this->alias['target'] = true;
}
} elseif ( is_array( $token ) && $token[0] === T_CONSTANT_ENCAPSED_STRING ) {
if ( $this->alias['target'] === true ) {
// We already saw a first argument, this must be the second.
// Strip quotes from the string literal.
$this->alias['name'] = substr( $token[1], 1, -1 );
}
} elseif ( $token === ')' ) {
// End of function call
$this->classes[] = $this->alias['name'];
$this->alias = null;
$this->startToken = null;
} elseif ( !is_array( $token ) || (
$token[0] !== T_STRING &&
$token[0] !== T_DOUBLE_COLON &&
$token[0] !== T_CLASS &&
$token[0] !== T_WHITESPACE
) ) {
// Ignore this call to class_alias() - compat/Timestamp.php
$this->alias = null;
$this->startToken = null;
case T_DOUBLE_COLON:
// Skip over T_CLASS after T_DOUBLE_COLON because this is something like
// "self::static" which accesses the class name. It doens't define a new class.
$this->startToken = null;
break;
case T_NAMESPACE:
if ( $token === ';' || $token === '{' ) {
$this->namespace = $this->implodeTokens() . '\\';
} else {
$this->tokens[] = $token;
}
}
break;
break;
case T_CLASS:
case T_INTERFACE:
case T_TRAIT:
$this->tokens[] = $token;
if ( is_array( $token ) && $token[0] === T_STRING ) {
$this->classes[] = $this->namespace . $this->implodeTokens();
}
case T_STRING:
if ( $this->alias !== null ) {
// Flow 1 - Two string literals:
// - T_STRING class_alias
// - '('
// - T_CONSTANT_ENCAPSED_STRING 'TargetClass'
// - ','
// - T_WHITESPACE
// - T_CONSTANT_ENCAPSED_STRING 'AliasName'
// - ')'
// Flow 2 - Use of ::class syntax for first parameter
// - T_STRING class_alias
// - '('
// - T_STRING TargetClass
// - T_DOUBLE_COLON ::
// - T_CLASS class
// - ','
// - T_WHITESPACE
// - T_CONSTANT_ENCAPSED_STRING 'AliasName'
// - ')'
if ( $token === '(' ) {
// Start of a function call to class_alias()
$this->alias = [ 'target' => false, 'name' => false ];
} elseif ( $token === ',' ) {
// Record that we're past the first parameter
if ( $this->alias['target'] === false ) {
$this->alias['target'] = true;
}
} elseif ( is_array( $token ) && $token[0] === T_CONSTANT_ENCAPSED_STRING ) {
if ( $this->alias['target'] === true ) {
// We already saw a first argument, this must be the second.
// Strip quotes from the string literal.
$this->alias['name'] = substr( $token[1], 1, -1 );
}
} elseif ( $token === ')' ) {
// End of function call
$this->classes[] = $this->alias['name'];
$this->alias = null;
$this->startToken = null;
} elseif ( !is_array( $token ) || (
$token[0] !== T_STRING &&
$token[0] !== T_DOUBLE_COLON &&
$token[0] !== T_CLASS &&
$token[0] !== T_WHITESPACE
) ) {
// Ignore this call to class_alias() - compat/Timestamp.php
$this->alias = null;
$this->startToken = null;
}
}
break;
case T_CLASS:
case T_INTERFACE:
case T_TRAIT:
$this->tokens[] = $token;
if ( is_array( $token ) && $token[0] === T_STRING ) {
$this->classes[] = $this->namespace . $this->implodeTokens();
}
}
}

View file

@ -37,133 +37,133 @@ class AvroValidator {
*/
public static function getErrors( AvroSchema $schema, $datum ) {
switch ( $schema->type ) {
case AvroSchema::NULL_TYPE:
if ( !is_null( $datum ) ) {
return self::wrongType( 'null', $datum );
}
return [];
case AvroSchema::BOOLEAN_TYPE:
if ( !is_bool( $datum ) ) {
return self::wrongType( 'boolean', $datum );
}
return [];
case AvroSchema::STRING_TYPE:
case AvroSchema::BYTES_TYPE:
if ( !is_string( $datum ) ) {
return self::wrongType( 'string', $datum );
}
return [];
case AvroSchema::INT_TYPE:
if ( !is_int( $datum ) ) {
return self::wrongType( 'integer', $datum );
}
if ( AvroSchema::INT_MIN_VALUE > $datum
|| $datum > AvroSchema::INT_MAX_VALUE
) {
return self::outOfRange(
AvroSchema::INT_MIN_VALUE,
AvroSchema::INT_MAX_VALUE,
$datum
);
}
return [];
case AvroSchema::LONG_TYPE:
if ( !is_int( $datum ) ) {
return self::wrongType( 'integer', $datum );
}
if ( AvroSchema::LONG_MIN_VALUE > $datum
|| $datum > AvroSchema::LONG_MAX_VALUE
) {
return self::outOfRange(
AvroSchema::LONG_MIN_VALUE,
AvroSchema::LONG_MAX_VALUE,
$datum
);
}
return [];
case AvroSchema::FLOAT_TYPE:
case AvroSchema::DOUBLE_TYPE:
if ( !is_float( $datum ) && !is_int( $datum ) ) {
return self::wrongType( 'float or integer', $datum );
}
return [];
case AvroSchema::ARRAY_SCHEMA:
if ( !is_array( $datum ) ) {
return self::wrongType( 'array', $datum );
}
$errors = [];
foreach ( $datum as $d ) {
$result = self::getErrors( $schema->items(), $d );
if ( $result ) {
case AvroSchema::NULL_TYPE:
if ( !is_null( $datum ) ) {
return self::wrongType( 'null', $datum );
}
return [];
case AvroSchema::BOOLEAN_TYPE:
if ( !is_bool( $datum ) ) {
return self::wrongType( 'boolean', $datum );
}
return [];
case AvroSchema::STRING_TYPE:
case AvroSchema::BYTES_TYPE:
if ( !is_string( $datum ) ) {
return self::wrongType( 'string', $datum );
}
return [];
case AvroSchema::INT_TYPE:
if ( !is_int( $datum ) ) {
return self::wrongType( 'integer', $datum );
}
if ( AvroSchema::INT_MIN_VALUE > $datum
|| $datum > AvroSchema::INT_MAX_VALUE
) {
return self::outOfRange(
AvroSchema::INT_MIN_VALUE,
AvroSchema::INT_MAX_VALUE,
$datum
);
}
return [];
case AvroSchema::LONG_TYPE:
if ( !is_int( $datum ) ) {
return self::wrongType( 'integer', $datum );
}
if ( AvroSchema::LONG_MIN_VALUE > $datum
|| $datum > AvroSchema::LONG_MAX_VALUE
) {
return self::outOfRange(
AvroSchema::LONG_MIN_VALUE,
AvroSchema::LONG_MAX_VALUE,
$datum
);
}
return [];
case AvroSchema::FLOAT_TYPE:
case AvroSchema::DOUBLE_TYPE:
if ( !is_float( $datum ) && !is_int( $datum ) ) {
return self::wrongType( 'float or integer', $datum );
}
return [];
case AvroSchema::ARRAY_SCHEMA:
if ( !is_array( $datum ) ) {
return self::wrongType( 'array', $datum );
}
$errors = [];
foreach ( $datum as $d ) {
$result = self::getErrors( $schema->items(), $d );
if ( $result ) {
$errors[] = $result;
}
}
return $errors;
case AvroSchema::MAP_SCHEMA:
if ( !is_array( $datum ) ) {
return self::wrongType( 'array', $datum );
}
$errors = [];
foreach ( $datum as $k => $v ) {
if ( !is_string( $k ) ) {
$errors[] = self::wrongType( 'string key', $k );
}
$result = self::getErrors( $schema->values(), $v );
if ( $result ) {
$errors[$k] = $result;
}
}
return $errors;
case AvroSchema::UNION_SCHEMA:
$errors = [];
foreach ( $schema->schemas() as $schema ) {
$result = self::getErrors( $schema, $datum );
if ( !$result ) {
return [];
}
$errors[] = $result;
}
}
return $errors;
case AvroSchema::MAP_SCHEMA:
if ( !is_array( $datum ) ) {
return self::wrongType( 'array', $datum );
}
$errors = [];
foreach ( $datum as $k => $v ) {
if ( !is_string( $k ) ) {
$errors[] = self::wrongType( 'string key', $k );
if ( $errors ) {
return [ "Expected any one of these to be true", $errors ];
}
$result = self::getErrors( $schema->values(), $v );
if ( $result ) {
$errors[$k] = $result;
return "No schemas provided to union";
case AvroSchema::ENUM_SCHEMA:
if ( !in_array( $datum, $schema->symbols() ) ) {
$symbols = implode( ', ', $schema->symbols );
return "Expected one of $symbols but recieved $datum";
}
}
return $errors;
case AvroSchema::UNION_SCHEMA:
$errors = [];
foreach ( $schema->schemas() as $schema ) {
$result = self::getErrors( $schema, $datum );
if ( !$result ) {
return [];
return [];
case AvroSchema::FIXED_SCHEMA:
if ( !is_string( $datum ) ) {
return self::wrongType( 'string', $datum );
}
$errors[] = $result;
}
if ( $errors ) {
return [ "Expected any one of these to be true", $errors ];
}
return "No schemas provided to union";
case AvroSchema::ENUM_SCHEMA:
if ( !in_array( $datum, $schema->symbols() ) ) {
$symbols = implode( ', ', $schema->symbols );
return "Expected one of $symbols but recieved $datum";
}
return [];
case AvroSchema::FIXED_SCHEMA:
if ( !is_string( $datum ) ) {
return self::wrongType( 'string', $datum );
}
$len = strlen( $datum );
if ( $len !== $schema->size() ) {
return "Expected string of length {$schema->size()}, "
. "but recieved one of length $len";
}
return [];
case AvroSchema::RECORD_SCHEMA:
case AvroSchema::ERROR_SCHEMA:
case AvroSchema::REQUEST_SCHEMA:
if ( !is_array( $datum ) ) {
return self::wrongType( 'array', $datum );
}
$errors = [];
foreach ( $schema->fields() as $field ) {
$name = $field->name();
if ( !array_key_exists( $name, $datum ) ) {
$errors[$name] = 'Missing expected field';
continue;
$len = strlen( $datum );
if ( $len !== $schema->size() ) {
return "Expected string of length {$schema->size()}, "
. "but recieved one of length $len";
}
$result = self::getErrors( $field->type(), $datum[$name] );
if ( $result ) {
$errors[$name] = $result;
return [];
case AvroSchema::RECORD_SCHEMA:
case AvroSchema::ERROR_SCHEMA:
case AvroSchema::REQUEST_SCHEMA:
if ( !is_array( $datum ) ) {
return self::wrongType( 'array', $datum );
}
}
return $errors;
default:
return "Unknown avro schema type: {$schema->type}";
$errors = [];
foreach ( $schema->fields() as $field ) {
$name = $field->name();
if ( !array_key_exists( $name, $datum ) ) {
$errors[$name] = 'Missing expected field';
continue;
}
$result = self::getErrors( $field->type(), $datum[$name] );
if ( $result ) {
$errors[$name] = $result;
}
}
return $errors;
default:
return "Unknown avro schema type: {$schema->type}";
}
}

View file

@ -3117,18 +3117,18 @@ class Language {
*/
function getArrow( $direction = 'forwards' ) {
switch ( $direction ) {
case 'forwards':
return $this->isRTL() ? '←' : '→';
case 'backwards':
return $this->isRTL() ? '→' : '←';
case 'left':
return '←';
case 'right':
return '→';
case 'up':
return '↑';
case 'down':
return '↓';
case 'forwards':
return $this->isRTL() ? '←' : '→';
case 'backwards':
return $this->isRTL() ? '→' : '←';
case 'left':
return '←';
case 'right':
return '→';
case 'up':
return '↑';
case 'down':
return '↓';
}
}

View file

@ -43,30 +43,30 @@ class LanguageGa extends Language {
}
switch ( $case ) {
case 'ainmlae':
switch ( $word ) {
case 'an Domhnach':
$word = 'Dé Domhnaigh';
break;
case 'an Luan':
$word = 'Dé Luain';
break;
case 'an Mháirt':
$word = 'Dé Mháirt';
break;
case 'an Chéadaoin':
$word = 'Dé Chéadaoin';
break;
case 'an Déardaoin':
$word = 'Déardaoin';
break;
case 'an Aoine':
$word = 'Dé hAoine';
break;
case 'an Satharn':
$word = 'Dé Sathairn';
break;
}
case 'ainmlae':
switch ( $word ) {
case 'an Domhnach':
$word = 'Dé Domhnaigh';
break;
case 'an Luan':
$word = 'Dé Luain';
break;
case 'an Mháirt':
$word = 'Dé Mháirt';
break;
case 'an Chéadaoin':
$word = 'Dé Chéadaoin';
break;
case 'an Déardaoin':
$word = 'Déardaoin';
break;
case 'an Aoine':
$word = 'Dé hAoine';
break;
case 'an Satharn':
$word = 'Dé Sathairn';
break;
}
}
return $word;
}

View file

@ -47,65 +47,65 @@ class LanguageLa extends Language {
}
switch ( $case ) {
case 'genitive':
// only a few declensions, and even for those mostly the singular only
$in = [
'/u[ms]$/', # 2nd declension singular
'/ommunia$/', # 3rd declension neuter plural (partly)
'/a$/', # 1st declension singular
'/libri$/', '/nuntii$/', '/datae$/', # 2nd declension plural (partly)
'/tio$/', '/ns$/', '/as$/', # 3rd declension singular (partly)
'/es$/' # 5th declension singular
];
$out = [
'i',
'ommunium',
'ae',
'librorum', 'nuntiorum', 'datorum',
'tionis', 'ntis', 'atis',
'ei'
];
return preg_replace( $in, $out, $word );
case 'accusative':
// only a few declensions, and even for those mostly the singular only
$in = [
'/u[ms]$/', # 2nd declension singular
'/a$/', # 1st declension singular
'/ommuniam$/', # 3rd declension neuter plural (partly)
'/libri$/', '/nuntii$/', '/datam$/', # 2nd declension plural (partly)
'/tio$/', '/ns$/', '/as$/', # 3rd declension singular (partly)
'/es$/' # 5th declension singular
];
$out = [
'um',
'am',
'ommunia',
'libros', 'nuntios', 'data',
'tionem', 'ntem', 'atem',
'em'
];
return preg_replace( $in, $out, $word );
case 'ablative':
// only a few declensions, and even for those mostly the singular only
$in = [
'/u[ms]$/', # 2nd declension singular
'/ommunia$/', # 3rd declension neuter plural (partly)
'/a$/', # 1st declension singular
'/libri$/', '/nuntii$/', '/data$/', # 2nd declension plural (partly)
'/tio$/', '/ns$/', '/as$/', # 3rd declension singular (partly)
'/es$/' # 5th declension singular
];
$out = [
'o',
'ommunibus',
'a',
'libris', 'nuntiis', 'datis',
'tione', 'nte', 'ate',
'e'
];
return preg_replace( $in, $out, $word );
default:
return $word;
case 'genitive':
// only a few declensions, and even for those mostly the singular only
$in = [
'/u[ms]$/', # 2nd declension singular
'/ommunia$/', # 3rd declension neuter plural (partly)
'/a$/', # 1st declension singular
'/libri$/', '/nuntii$/', '/datae$/', # 2nd declension plural (partly)
'/tio$/', '/ns$/', '/as$/', # 3rd declension singular (partly)
'/es$/' # 5th declension singular
];
$out = [
'i',
'ommunium',
'ae',
'librorum', 'nuntiorum', 'datorum',
'tionis', 'ntis', 'atis',
'ei'
];
return preg_replace( $in, $out, $word );
case 'accusative':
// only a few declensions, and even for those mostly the singular only
$in = [
'/u[ms]$/', # 2nd declension singular
'/a$/', # 1st declension singular
'/ommuniam$/', # 3rd declension neuter plural (partly)
'/libri$/', '/nuntii$/', '/datam$/', # 2nd declension plural (partly)
'/tio$/', '/ns$/', '/as$/', # 3rd declension singular (partly)
'/es$/' # 5th declension singular
];
$out = [
'um',
'am',
'ommunia',
'libros', 'nuntios', 'data',
'tionem', 'ntem', 'atem',
'em'
];
return preg_replace( $in, $out, $word );
case 'ablative':
// only a few declensions, and even for those mostly the singular only
$in = [
'/u[ms]$/', # 2nd declension singular
'/ommunia$/', # 3rd declension neuter plural (partly)
'/a$/', # 1st declension singular
'/libri$/', '/nuntii$/', '/data$/', # 2nd declension plural (partly)
'/tio$/', '/ns$/', '/as$/', # 3rd declension singular (partly)
'/es$/' # 5th declension singular
];
$out = [
'o',
'ommunibus',
'a',
'libris', 'nuntiis', 'datis',
'tione', 'nte', 'ate',
'e'
];
return preg_replace( $in, $out, $word );
default:
return $word;
}
}
}

View file

@ -708,15 +708,15 @@ class ParserTestRunner {
public function meetsRequirements( $requirements ) {
foreach ( $requirements as $requirement ) {
switch ( $requirement['type'] ) {
case 'hook':
$ok = $this->requireHook( $requirement['name'] );
break;
case 'functionHook':
$ok = $this->requireFunctionHook( $requirement['name'] );
break;
case 'transparentHook':
$ok = $this->requireTransparentHook( $requirement['name'] );
break;
case 'hook':
$ok = $this->requireHook( $requirement['name'] );
break;
case 'functionHook':
$ok = $this->requireFunctionHook( $requirement['name'] );
break;
case 'transparentHook':
$ok = $this->requireTransparentHook( $requirement['name'] );
break;
}
if ( !$ok ) {
return false;

View file

@ -162,18 +162,18 @@ class TestFileEditor {
if ( isset( $changes[$sectionName] ) ) {
$change = $changes[$sectionName];
switch ( $change['op'] ) {
case 'rename':
$test[$i]['name'] = $change['value'];
$test[$i]['headingLine'] = "!! {$change['value']}";
break;
case 'update':
$test[$i]['contents'] = $change['value'];
break;
case 'delete':
$test[$i]['deleted'] = true;
break;
default:
throw new Exception( "Unknown op: ${change['op']}" );
case 'rename':
$test[$i]['name'] = $change['value'];
$test[$i]['headingLine'] = "!! {$change['value']}";
break;
case 'update':
$test[$i]['contents'] = $change['value'];
break;
case 'delete':
$test[$i]['deleted'] = true;
break;
default:
throw new Exception( "Unknown op: ${change['op']}" );
}
// Acknowledge
// Note that we use the old section name for the rename op