From fb4aac95dd778db75a1ef8e73dc560cfc9025904 Mon Sep 17 00:00:00 2001 From: Antoine Musso Date: Wed, 26 Oct 2011 13:39:43 +0000 Subject: [PATCH] script to parse wikitext from CLI Wikitext can be given by stdin or using a file. The wikitext will be parsed using 'CLIParser' as a title. This can be overriden with --title option. Example1: $ php parse.php --title foo ''[[foo]]''^D

foo

Example2: $ echo "'''bold'''" > /tmp/foo $ php parse.php --file /tmp/foo

bold

$ Example3: $ cat /tmp/foo | php parse.php

bold

$ --- maintenance/parse.php | 104 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 maintenance/parse.php diff --git a/maintenance/parse.php b/maintenance/parse.php new file mode 100644 index 0000000000..82e6510b26 --- /dev/null +++ b/maintenance/parse.php @@ -0,0 +1,104 @@ +foo + *

+ * @endcode + * + * Example2: + * @code + * $ echo "'''bold'''" > /tmp/foo + * $ php parse.php --file /tmp/foo + *

bold + *

$ + * @endcode + * + * Example3: + * @code + * $ cat /tmp/foo | php parse.php + *

bold + *

$ + * @endcode + * + * @inGroup Maintenance + * @author Antoine Musso + * @license GNU General Public License 2.0 or later + */ +require_once( dirname(__FILE__) . '/Maintenance.php' ); + +class CLIParser extends Maintenance { + protected $parser; + + public function __construct() { + $this->mDescription = "Parse a given wikitext"; + $this->addOption( 'title', 'Title name for the given wikitext (Default: \'CLIParser\')', false, true ); + $this->addOption( 'file', 'File containing wikitext (Default: stdin)', false, true ); + parent::__construct(); + } + + public function execute() { + $this->initParser(); + print $this->render( $this->WikiText() ); + } + + /** + * @param string $wikitext Wikitext to get rendered + * @return string HTML Rendering + */ + public function render( $wikitext ) { + return $this->parse( $wikitext )->getText(); + } + + /** + * Get wikitext from --file or from STDIN + * @return string Wikitext + */ + protected function Wikitext() { + return file_get_contents( + $this->getOption( 'file', 'php://stdin' ) + ); + } + + protected function initParser() { + global $wgParserConf; + $parserClass = $wgParserConf['class']; + $this->parser = new $parserClass(); + } + + /** + * Title object to use for CLI parsing. + * Default title is 'CLIParser', it can be overriden with the option + * --title + * + * @return Title object + */ + protected function getTitle( ) { + $title = + $this->getOption( 'title' ) + ? $this->getOption( 'title' ) + : 'CLIParser' ; + return Title::newFromText( $title ); + } + + /** + * @param string $text Wikitext to parse + * @return ParserOutput + */ + protected function parse( $wikitext ) { + return $this->parser->parse( + $wikitext + , $this->getTitle() + , new ParserOptions() + ); + } +} + +$maintClass = "CLIParser"; +require_once( RUN_MAINTENANCE_IF_MAIN ); -- 2.20.1