summaryrefslogtreecommitdiff
path: root/extensions/SyntaxHighlight_GeSHi/maintenance/updateLexerList.php
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/SyntaxHighlight_GeSHi/maintenance/updateLexerList.php')
-rw-r--r--extensions/SyntaxHighlight_GeSHi/maintenance/updateLexerList.php23
1 files changed, 20 insertions, 3 deletions
diff --git a/extensions/SyntaxHighlight_GeSHi/maintenance/updateLexerList.php b/extensions/SyntaxHighlight_GeSHi/maintenance/updateLexerList.php
index 75beb9b5..b5a7fc5a 100644
--- a/extensions/SyntaxHighlight_GeSHi/maintenance/updateLexerList.php
+++ b/extensions/SyntaxHighlight_GeSHi/maintenance/updateLexerList.php
@@ -22,7 +22,7 @@
* @ingroup Maintenance
*/
-use KzykHys\Pygments\Pygments;
+use Symfony\Component\Process\ProcessBuilder;
$IP = getenv( 'MW_INSTALL_PATH' ) ?: __DIR__ . '/../../..';
@@ -43,8 +43,25 @@ class UpdateLanguageList extends Maintenance {
$header = '// Generated by ' . basename( __FILE__ ) . "\n\n";
- $pygments = new Pygments( $wgPygmentizePath );
- $lexers = array_keys( $pygments->getLexers() );
+ $lexers = array();
+
+ $builder = new ProcessBuilder();
+ $builder->setPrefix( $wgPygmentizePath );
+
+ $process = $builder->add( '-L' )->add( 'lexer' )->getProcess();
+ $process->run();
+
+ if ( !$process->isSuccessful() ) {
+ throw new \RuntimeException( $process->getErrorOutput() );
+ }
+
+ $output = $process->getOutput();
+ foreach ( explode( "\n", $output ) as $line ) {
+ if ( substr( $line, 0, 1 ) === '*' ) {
+ $newLexers = explode( ', ', trim( $line, "* :\n" ) );
+ $lexers = array_merge( $lexers, $newLexers );
+ }
+ }
sort( $lexers );
$code = "<?php\n" . $header . 'return ' . var_export( $lexers, true ) . ";\n";