/** * Show interpetation script source with line numbering (for debugging convenience) * * @param $input Text between <qpinterpret> and </qpinterper> tags, subset of PHP syntax. * @param $argv An array containing any arguments passed to the extension * @param &$parser The wikitext parser. * @param &$frame PPFrame object passed in MW 1.16+ * @return script source with line numbering */ static function showScript($input, $argv, $parser, $frame = false) { $lines_count = count(preg_split('`(\\r\\n|\\n|\\r)`', $input, -1)); $line_numbers = ''; if (!isset($argv['lang'])) { return '<strong class="error">' . wfMsg('qp_error_eval_missed_lang_attr') . '</strong>'; } $lang = $argv['lang']; if (!array_key_exists($lang, self::$scriptLinesCount)) { self::$scriptLinesCount[$lang] = 1; } $slc =& self::$scriptLinesCount[$lang]; for ($i = $slc; $i < $slc + $lines_count; $i++) { $line_numbers .= "{$i}\n"; } $slc = $i; $out = array('__tag' => 'div', 'class' => 'qpoll', 0 => array()); if (is_string($lintResult = qp_Interpret::lint($lang, $input))) { $out[0][] = array('__tag' => 'div', 'class' => 'interp_error', qp_Setup::specialchars($lintResult)); } $out[0][] = array('__tag' => 'div', 'class' => 'line_numbers', $line_numbers); $out[0][] = array('__tag' => 'div', 'class' => 'script_view', qp_Setup::specialchars($input) . "\n"); $markercount = count(self::$markerList); $marker = "!qpoll-script-view{$markercount}-qpoll!"; self::$markerList[$markercount] = qp_Renderer::renderTagArray($out); return $marker; }