From: Antoine Musso Date: Wed, 26 Oct 2011 13:39:43 +0000 (+0000) Subject: script to parse wikitext from CLI X-Git-Tag: 1.31.0-rc.0~26903 X-Git-Url: http://git.cyclocoop.org/%7B%7B%20url_for%28%27admin_vote_add%27%29%20%7D%7D?a=commitdiff_plain;h=fb4aac95dd778db75a1ef8e73dc560cfc9025904;p=lhc%2Fweb%2Fwiklou.git 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

$ --- 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 );