|| $wgDisableTitleConversion
|| isset( $this->mDoubleUnderscores['nocontentconvert'] )
|| isset( $this->mDoubleUnderscores['notitleconvert'] )
- || $this->mOutput->getDisplayTitle() !== false ) )
+ || $this->mOutput->getDisplayTitle() !== false ) )
{
$convruletitle = $wgContLang->getConvRuleTitle();
if ( $convruletitle ) {
* Set the context title
*/
function setTitle( $t ) {
- if ( !$t || $t instanceof FakeTitle ) {
- $t = Title::newFromText( 'NO TITLE' );
- }
+ if ( !$t || $t instanceof FakeTitle ) {
+ $t = Title::newFromText( 'NO TITLE' );
+ }
if ( strval( $t->getFragment() ) !== '' ) {
# Strip the fragment to avoid various odd effects
*/
function doTableStuff( $text ) {
wfProfileIn( __METHOD__ );
-
+
$lines = StringUtils::explode( "\n", $text );
$out = '';
$td_history = array(); # Is currently a td tag open?
foreach ( $lines as $outLine ) {
$line = trim( $outLine );
- if ( $line === '' ) { # empty line, go to next line
+ if ( $line === '' ) { # empty line, go to next line
$out .= $outLine."\n";
continue;
}
(\\b(?:$prots)$urlChar+) | # m[3]: Free external links" . '
(?:RFC|PMID)\s+([0-9]+) | # m[4]: RFC or PMID, capture number
ISBN\s+(\b # m[5]: ISBN, capture number
- (?: 97[89] [\ \-]? )? # optional 13-digit ISBN prefix
- (?: [0-9] [\ \-]? ){9} # 9 digits with opt. delimiters
- [0-9Xx] # check digit
- \b)
+ (?: 97[89] [\ \-]? )? # optional 13-digit ISBN prefix
+ (?: [0-9] [\ \-]? ){9} # 9 digits with opt. delimiters
+ [0-9Xx] # check digit
+ \b)
)!x', array( &$this, 'magicLinkCallback' ), $text );
wfProfileOut( __METHOD__ );
return $text;
/**
* Replace external links (REL)
*
- * Note: this is all very hackish and the order of execution matters a lot.
+ * Note: this is all very hackish and the order of execution matters a lot.
* Make sure to run maintenance/parserTests.php if you change this code.
*
* @private
$imagematch = false;
}
if ( $this->mOptions->getAllowExternalImages()
- || ( $imagesexception && $imagematch ) ) {
+ || ( $imagesexception && $imagematch ) ) {
if ( preg_match( self::EXT_IMAGE_REGEX, $url ) ) {
# Image found
$text = $sk->makeExternalImage( $url );
$sk = $this->mOptions->getSkin( $this->mTitle );
$holders = new LinkHolderArray( $this );
- # split the entire text string on occurences of [[
+ # split the entire text string on occurences of [[
$a = StringUtils::explode( '[[', ' ' . $s );
# get the first element (all text up to first [[), and remove the space we added
$s = $a->current();
$text = $frame->getArgument( $argName );
if ( $text === false && $parts->getLength() > 0
&& (
- $this->ot['html']
- || $this->ot['pre']
- || ( $this->ot['wiki'] && $frame->isTemplate() )
+ $this->ot['html']
+ || $this->ot['pre']
+ || ( $this->ot['wiki'] && $frame->isTemplate() )
)
) {
# No match in frame, use the supplied default
$this->mOutput->setIndexPolicy( 'index' );
$this->addTrackingCategory( 'index-category' );
}
-
+
# Cache all double underscores in the database
foreach ( $this->mDoubleUnderscores as $key => $val ) {
$this->mOutput->setProperty( $key, '' );
global $wgMaxTocLevel, $wgContLang, $wgHtml5, $wgExperimentalHtmlIds;
$doNumberHeadings = $this->mOptions->getNumberHeadings();
-
+
# Inhibit editsection links if requested in the page
if ( isset( $this->mDoubleUnderscores['noeditsection'] ) ) {
$showEditLink = 0;
'noninitial' );
}
- # HTML names must be case-insensitively unique (bug 10721).
- # This does not apply to Unicode characters per
+ # HTML names must be case-insensitively unique (bug 10721).
+ # This does not apply to Unicode characters per
# http://dev.w3.org/html5/spec/infrastructure.html#case-sensitivity-and-string-comparison
# FIXME: We may be changing them depending on the current locale.
$arrayKey = strtolower( $safeHeadline );
# Will the image be presented in a frame, with the caption below?
$imageIsFramed = isset( $params['frame']['frame'] ) ||
- isset( $params['frame']['framed'] ) ||
- isset( $params['frame']['thumbnail'] ) ||
- isset( $params['frame']['manualthumb'] );
+ isset( $params['frame']['framed'] ) ||
+ isset( $params['frame']['thumbnail'] ) ||
+ isset( $params['frame']['manualthumb'] );
# In the old days, [[Image:Foo|text...]] would set alt text. Later it
# came to also set the caption, ordinary text after the image -- which
* @file
* @ingroup Parser
*/
-
+
/**
* Set options of the Parser
* @todo document
var $mIsPreview; # Parsing the page for a "preview" operation
var $mIsSectionPreview; # Parsing the page for a "preview" operation on a single section
var $mIsPrintable; # Parsing the printable version of the page
-
+
var $mExtraKey = ''; # Extra key that should be present in the caching key.
-
+
protected $accessedOptions;
-
+
function getUseDynamicDates() { return $this->mUseDynamicDates; }
function getInterwikiMagic() { return $this->mInterwikiMagic; }
function getAllowExternalImages() { return $this->mAllowExternalImages; }
function getAllowExternalImagesFrom() { return $this->mAllowExternalImagesFrom; }
function getEnableImageWhitelist() { return $this->mEnableImageWhitelist; }
function getEditSection() { $this->accessedOptions['editsection'] = true;
- return $this->mEditSection; }
+ return $this->mEditSection; }
function getNumberHeadings() { $this->accessedOptions['numberheadings'] = true;
- return $this->mNumberHeadings; }
+ return $this->mNumberHeadings; }
function getAllowSpecialInclusion() { return $this->mAllowSpecialInclusion; }
function getTidy() { return $this->mTidy; }
function getInterfaceMessage() { return $this->mInterfaceMessage; }
function getCleanSignatures() { return $this->mCleanSignatures; }
function getExternalLinkTarget() { return $this->mExternalLinkTarget; }
function getMath() { $this->accessedOptions['math'] = true;
- return $this->mMath; }
+ return $this->mMath; }
function getThumbSize() { $this->accessedOptions['thumbsize'] = true;
- return $this->mThumbSize; }
-
+ return $this->mThumbSize; }
+
function getIsPreview() { return $this->mIsPreview; }
function getIsSectionPreview() { return $this->mIsSectionPreview; }
function getIsPrintable() { $this->accessedOptions['printable'] = true;
- return $this->mIsPrintable; }
+ return $this->mIsPrintable; }
function getUser() { return $this->mUser; }
function getSkin( $title = null ) {
function setMath( $x ) { return wfSetVar( $this->mMath, $x ); }
function setUserLang( $x ) { return wfSetVar( $this->mUserLang, $x ); }
function setThumbSize( $x ) { return wfSetVar( $this->mThumbSize, $x ); }
-
+
function setIsPreview( $x ) { return wfSetVar( $this->mIsPreview, $x ); }
function setIsSectionPreview( $x ) { return wfSetVar( $this->mIsSectionPreview, $x ); }
function setIsPrintable( $x ) { return wfSetVar( $this->mIsPrintable, $x ); }
$this->mMath = $user->getOption( 'math' );
$this->mUserLang = $wgLang->getCode();
$this->mThumbSize = $user->getOption( 'thumbsize' );
-
+
$this->mIsPreview = false;
$this->mIsSectionPreview = false;
$this->mIsPrintable = false;
public function usedOptions() {
return array_keys( $this->accessedOptions );
}
-
+
/**
* Resets the memory of options usage.
*/
public function resetUsage() {
$this->accessedOptions = array();
}
-
+
/**
- * Returns the full array of options that would have been used by
+ * Returns the full array of options that would have been used by
* in 1.16.
* Used to get the old parser cache entries when available.
*/
}
return $legacyOpts;
}
-
+
/**
* Generate a hash string with the values set on these ParserOptions
* for the keys given in the array.
* This will be used as part of the hash key for the parser cache,
- * so users sharign the options with vary for the same page share
+ * so users sharign the options with vary for the same page share
* the same cached data safely.
- *
+ *
* Replaces User::getPageRenderingHash()
*
* Extensions which require it should install 'PageRenderingHash' hook,
global $wgContLang, $wgRenderHashAppend;
$confstr = '';
-
+
if ( in_array( 'math', $forOptions ) )
$confstr .= $this->mMath;
else
$confstr .= '*';
-
+
// Space assigned for the stubthreshold but unused
- // since it disables the parser cache, its value will always
+ // since it disables the parser cache, its value will always
// be 0 when this function is called by parsercache.
// The conditional is here to avoid a confusing 0
if ( in_array( 'stubthreshold', $forOptions ) )
if ( in_array( 'dateformat', $forOptions ) )
$confstr .= '!' . $this->getDateFormat();
-
+
if ( in_array( 'numberheadings', $forOptions ) )
$confstr .= '!' . ( $this->mNumberHeadings ? '1' : '' );
else
$confstr .= '!*';
-
+
if ( in_array( 'userlang', $forOptions ) )
$confstr .= '!' . $this->mUserLang;
else
// Since the skin could be overloading link(), it should be
// included here but in practice, none of our skins do that.
// $confstr .= "!" . $this->mSkin->getSkinName();
-
+
$confstr .= $wgRenderHashAppend;
if ( !$this->mEditSection && in_array( 'editsection', $forOptions ) )
$confstr .= '!edit=0';
if ( $this->mIsPrintable && in_array( 'printable', $forOptions ) )
$confstr .= '!printable=1';
-
+
if ( $this->mExtraKey != '' )
$confstr .= $this->mExtraKey;
-
+
// Give a chance for extensions to modify the hash, if they have
// extra options or other effects on the parser cache.
wfRunHooks( 'PageRenderingHash', array( &$confstr ) );
// Make it a valid memcached key fragment
$confstr = str_replace( ' ', '_', $confstr );
-
+
return $confstr;
}
}
* @file
* @ingroup Parser
*/
-
+
/**
* Differences from DOM schema:
* * attribute nodes are children
*/
class Preprocessor_Hash implements Preprocessor {
var $parser;
-
+
const CACHE_VERSION = 1;
function __construct( $parser ) {
*/
function preprocessToObj( $text, $flags = 0 ) {
wfProfileIn( __METHOD__ );
-
-
+
+
// Check cache.
global $wgMemc, $wgPreprocessorCacheThreshold;
-
+
$cacheable = strlen( $text ) > $wgPreprocessorCacheThreshold;
if ( $cacheable ) {
wfProfileIn( __METHOD__.'-cacheable' );
} else {
$attrEnd = $tagEndPos;
// Find closing tag
- if ( preg_match( "/<\/" . preg_quote( $name, '/' ) . "\s*>/i",
- $text, $matches, PREG_OFFSET_CAPTURE, $tagEndPos + 1 ) )
+ if ( preg_match( "/<\/" . preg_quote( $name, '/' ) . "\s*>/i",
+ $text, $matches, PREG_OFFSET_CAPTURE, $tagEndPos + 1 ) )
{
$inner = substr( $text, $tagEndPos + 1, $matches[0][1] - $tagEndPos - 1 );
$i = $matches[0][1] + strlen( $matches[0][0] );
$rootNode = new PPNode_Hash_Tree( 'root' );
$rootNode->firstChild = $stack->rootAccum->firstNode;
$rootNode->lastChild = $stack->rootAccum->lastNode;
-
+
// Cache
if ($cacheable) {
$cacheValue = sprintf( "%08d", self::CACHE_VERSION ) . serialize( $rootNode );
wfProfileOut( __METHOD__.'-cacheable' );
wfDebugLog( "Preprocessor", "Saved preprocessor Hash to memcached (key $cacheKey)" );
}
-
+
wfProfileOut( __METHOD__ );
return $rootNode;
}
}
return $arguments;
}
-
+
function getNumberedArguments() {
$arguments = array();
foreach ( array_keys($this->numberedArgs) as $key ) {
}
return $arguments;
}
-
+
function getNamedArguments() {
$arguments = array();
foreach ( array_keys($this->namedArgs) as $key ) {