/**
* Created on Dec 01, 2007
*
- * Copyright © 2007 Yuri Astrakhan <Firstname><Lastname>@gmail.com
+ * Copyright © 2007 Yuri Astrakhan "<Firstname><Lastname>@gmail.com"
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
$result->setContent( $result_array['psttext'], $this->pstText );
}
}
+ if ( isset( $prop['properties'] ) ) {
+ $result_array['properties'] = $this->formatProperties( $p_result->getProperties() );
+ }
+
+ if ( $params['generatexml'] ) {
+ $wgParser->startExternalParse( $titleObj, $popts, OT_PREPROCESS );
+ $dom = $wgParser->preprocessToDom( $this->text );
+ if ( is_callable( array( $dom, 'saveXML' ) ) ) {
+ $xml = $dom->saveXML();
+ } else {
+ $xml = $dom->__toString();
+ }
+ $result_array['parsetree'] = array();
+ $result->setContent( $result_array['parsetree'], $xml );
+ }
$result_mapping = array(
'redirects' => 'r',
'iwlinks' => 'iw',
'sections' => 's',
'headitems' => 'hi',
+ 'properties' => 'pp',
);
$this->setIndexedTagNames( $result_array, $result_mapping );
$result->addValue( null, $this->getModuleName(), $result_array );
// Try the parser cache first
// getParserOutput will save to Parser cache if able
$pout = $page->getParserOutput( $popts );
+ if ( !$pout ) {
+ $this->dieUsage( "There is no revision ID {$page->getLatest()}", 'missingrev' );
+ }
if ( $getWikitext ) {
$this->text = $page->getRawText();
}
return '';
}
- $s = htmlspecialchars( wfMsg( 'otherlanguages' ) . wfMsg( 'colon-separator' ) );
+ $s = htmlspecialchars( wfMessage( 'otherlanguages' )->text() . wfMessage( 'colon-separator' )->text() );
$langs = array();
foreach ( $languages as $l ) {
$text == '' ? $l : $text );
}
- $s .= implode( htmlspecialchars( wfMsgExt( 'pipe-separator', 'escapenoentities' ) ), $langs );
+ $s .= implode( wfMessage( 'pipe-separator' )->escaped(), $langs );
if ( $wgContLang->isRTL() ) {
$s = Html::rawElement( 'span', array( 'dir' => "LTR" ), $s );
return $result;
}
+ private function formatProperties( $properties ) {
+ $result = array();
+ foreach ( $properties as $name => $value ) {
+ $entry = array();
+ $entry['name'] = $name;
+ $this->getResult()->setContent( $entry, $value );
+ $result[] = $entry;
+ }
+ return $result;
+ }
+
private function formatCss( $css ) {
$result = array();
foreach ( $css as $file => $link ) {
ApiBase::PARAM_TYPE => 'integer',
),
'prop' => array(
- ApiBase::PARAM_DFLT => 'text|langlinks|categories|links|templates|images|externallinks|sections|revid|displaytitle',
+ ApiBase::PARAM_DFLT => 'text|langlinks|categories|links|templates|images|externallinks|sections|revid|displaytitle|iwlinks|properties',
ApiBase::PARAM_ISMULTI => true,
ApiBase::PARAM_TYPE => array(
'text',
'headhtml',
'iwlinks',
'wikitext',
+ 'properties',
)
),
'pst' => false,
'uselang' => null,
'section' => null,
'disablepp' => false,
+ 'generatexml' => false,
);
}
' headhtml - Gives parsed <head> of the page',
' iwlinks - Gives interwiki links in the parsed wikitext',
' wikitext - Gives the original wikitext that was parsed',
+ ' properties - Gives various properties defined in the parsed wikitext',
),
'pst' => array(
'Do a pre-save transform on the input before parsing it',
'uselang' => 'Which language to parse the request in',
'section' => 'Only retrieve the content of this section number',
'disablepp' => 'Disable the PP Report from the parser output',
+ 'generatexml' => 'Generate XML parse tree',
);
}
public function getDescription() {
- return 'Parses wikitext and returns parser output';
+ return array(
+ 'Parses wikitext and returns parser output',
+ 'See the various prop-Modules of action=query to get information from the current version of a page',
+ );
}
public function getPossibleErrors() {