Example #1
0
function bb_syntax_highlight($match)
{
    global $bb_syntax_matches;
    $i = intval($match[1]);
    $match = $bb_syntax_matches[$i];
    $language = strtolower(trim($match[1]));
    $line = trim($match[2]);
    $escaped = trim($match[3]);
    $code = bb_syntax_code_trim($match[4]);
    //if ($escaped == "true") $code = htmlspecialchars_decode($code);
    $code = htmlspecialchars_decode($code);
    //$code = str_replace("&lt;", "<", $code);
    //$code = str_replace("&gt;", ">", $code);
    $geshi = new GeSHi($code, $language);
    $geshi->enable_keyword_links(false);
    do_action_ref_array('bb_syntax_init_geshi', array(&$geshi));
    $output = "\n<div class=\"bb_syntax\">";
    if ($line) {
        $output .= "<table><tr><td class=\"line_numbers\">";
        $output .= bb_syntax_line_numbers($code, $line);
        $output .= "</td><td class=\"code\">";
        $output .= $geshi->parse_code();
        $output .= "</td></tr></table>";
    } else {
        $output .= "<div class=\"code\">";
        $output .= $geshi->parse_code();
        $output .= "</div>";
    }
    $output .= "</div>\n";
    return $output;
}
 function _highlight_code($contents, $language, $line_number, $inline_code)
 {
     $contents = htmlspecialchars_decode($contents);
     if (strtolower($language) == 'bbcode') {
         import('content/parser/bbcode_highlighter');
         $bbcode_highlighter = new BBCodeHighlighter();
         $bbcode_highlighter->set_content($contents, PARSER_DO_NOT_STRIP_SLASHES);
         $bbcode_highlighter->parse($inline_code);
         $contents = $bbcode_highlighter->get_content(DO_NOT_ADD_SLASHES);
     } elseif (strtolower($language) == 'tpl' || strtolower($language) == 'template') {
         import('content/parser/template_highlighter');
         require_once PATH_TO_ROOT . '/kernel/framework/content/geshi/geshi.php';
         $template_highlighter = new TemplateHighlighter();
         $template_highlighter->set_content($contents, PARSER_DO_NOT_STRIP_SLASHES);
         $template_highlighter->parse($line_number ? GESHI_NORMAL_LINE_NUMBERS : GESHI_NO_LINE_NUMBERS, $inline_code);
         $contents = $template_highlighter->get_content(DO_NOT_ADD_SLASHES);
     } elseif ($language != '') {
         require_once PATH_TO_ROOT . '/kernel/framework/content/geshi/geshi.php';
         $Geshi = new GeSHi($contents, $language);
         if ($line_number) {
             $Geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
         }
         if ($inline_code) {
             $Geshi->set_header_type(GESHI_HEADER_NONE);
         }
         $contents = '<pre style="display:inline;">' . $Geshi->parse_code() . '</pre>';
     } else {
         $highlight = highlight_string($contents, true);
         $font_replace = str_replace(array('<font ', '</font>'), array('<span ', '</span>'), $highlight);
         $contents = preg_replace('`color="(.*?)"`', 'style="color:$1"', $font_replace);
     }
     return $contents;
 }
Example #3
0
 public function execute()
 {
     if (false === Common::isFile(GWF_GESHI_PATH)) {
         return '';
         // FIXME: {gizmore} log it? GESHI_PATH is may not readable
     }
     require_once GWF_GESHI_PATH;
     $geshi = new GeSHi();
     $langs = $geshi->get_supported_languages(false);
     $key = htmlspecialchars(Common::getGetString('key', ''), ENT_QUOTES);
     sort($langs);
     //		$this->niceArray($langs, false, '-------')
     $this->niceArray($langs, 'python', 'Python');
     $this->niceArray($langs, 'perl', 'Perl');
     $this->niceArray($langs, 'cpp', 'CPP');
     $this->niceArray($langs, 'php', 'PHP');
     $back = $this->module->lang('th_lang') . ':' . PHP_EOL;
     $back .= '<select id="bb_code_lang_sel_' . $key . '">' . PHP_EOL;
     $back .= '<option value="0">' . $this->module->lang('th_lang') . '</option>' . PHP_EOL;
     foreach ($langs as $lang) {
         $back .= sprintf('<option value="%s">%s</option>', $lang, $lang) . PHP_EOL;
     }
     $back .= '</select>' . PHP_EOL;
     $back .= $this->module->lang('th_title') . ': <input type="text" id="bb_code_title_' . $key . '" size="20" value="" />' . PHP_EOL;
     $back .= '<input type="submit" value="' . $this->module->lang('btn_code') . '" onclick="return bbInsertCodeNow(\'' . $key . '\');" />' . PHP_EOL;
     return $back;
 }
Example #4
0
function code($source, $language)
{
    $code = new GeSHi($source, $language);
    $parse = $code->parse_code();
    $resultat = '<div>' . '<br/>' . $parse . '</div>';
    return $resultat;
}
 function onExtra($name)
 {
     $output = NULL;
     if ($name == "header") {
         if (!$this->yellow->config->get("highlightStylesheetDefault")) {
             $locationStylesheet = $this->yellow->config->get("serverBase") . $this->yellow->config->get("pluginLocation") . "highlight.css";
             $fileNameStylesheet = $this->yellow->config->get("pluginDir") . "highlight.css";
             if (is_file($fileNameStylesheet)) {
                 $output = "<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"{$locationStylesheet}\" />\n";
             }
         } else {
             $geshi = new GeSHi();
             $geshi->set_language_path($this->yellow->config->get("pluginDir") . "/highlight/");
             foreach ($geshi->get_supported_languages() as $language) {
                 if ($language == "geshi") {
                     continue;
                 }
                 $geshi->set_language($language);
                 $output .= $geshi->get_stylesheet(false);
             }
             $output = "<style type=\"text/css\">\n{$output}</style>";
         }
     }
     return $output;
 }
Example #6
0
 /**
  * Highlight a given piece of source code.
  * Works for xhtml only. Falls back to original highlighter for
  * other formats.
  *
  * @param string $text   Text to highlight
  * @param string $role   Source code role to use (php, xml, html, ...)
  * @param string $format Output format (pdf, xhtml, troff, ...)
  *
  * @return string Highlighted code
  */
 public function highlight($text, $role, $format)
 {
     $geshi = new \GeSHi($text, $role);
     $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
     $geshi->set_header_type(GESHI_HEADER_DIV);
     return $geshi->parse_code();
 }
	protected function formatCodeBlocks($source){
		return preg_replace_callback('/<code>([\s\S]*?)<\/code>/', function($matches){
			$geshi = new GeSHi($matches[1], 'javascript');
			$geshi->enable_classes();
			return $geshi->parse_code();
		}, $source);
	}
Example #8
0
 public function getSyntaxHighlightedContent($content, $type)
 {
     //$content = ;
     //return array('<pre>' . $content . '</pre>', 'none');
     //error_log("content len=" . strlen($content));
     // サイズがでかすぎたら syntax highlight ナシ
     if (strlen($content) > 1 << 15) {
         error_log($content);
         return array('<pre>' . htmlspecialchars($content, ENT_QUOTES) . '</pre>', 'none');
     }
     if ($type == '__pastit_type_none__') {
         $type = 'none';
         // auto detect
         $first_line = explode(PHP_EOL, $content);
         $first_line = $first_line[0];
         if (preg_match('@#!.+bin/(\\w+)@', $first_line, $m)) {
             $type = $m[1];
         }
         if (preg_match('@#!.+bin/env\\s+(\\w+)@', $first_line, $m)) {
             $type = $m[1];
         }
         if (preg_match('@\\+\\+\\+@', $content) && preg_match('@\\-\\-\\-@', $content)) {
             $type = 'diff';
         }
     }
     require_once 'geshi/geshi.php';
     $geshi = new GeSHi($content, $type);
     $geshi->set_overall_style('font-family: menlo, monaco, \'courier new\', mono-space;');
     $content = $geshi->parse_code();
     //return '<pre class=" superpre">' . PHP_EOL . $body . '</pre>';
     return array($content, $type);
 }
Example #9
0
function JHP_Geshi_replacer(&$matches)
{
    //	print_r($matches);
    //// 	die();
    jimport('geshi.geshi');
    jimport('domit.xml_saxy_shared');
    $args = SAXY_Parser_Base::parseAttributes($matches[1]);
    // 	print_r($args);
    $text = $matches[2];
    $lang = JArrayHelper::getValue($args, 'lang', 'phpz');
    $lines = JArrayHelper::getValue($args, 'lines', 'true');
    $html_entities_match = array("|\\<br \\/\\>|", "#<#", "#>#", "|&#39;|", '#&quot;#', '#&nbsp;#');
    $html_entities_replace = array("\n", '&lt;', '&gt;', "'", '"', ' ');
    $text = preg_replace($html_entities_match, $html_entities_replace, $text);
    $text = str_replace('&lt;', '<', $text);
    $text = str_replace('&gt;', '>', $text);
    $text = str_replace("\t", '  ', $text);
    $geshi = new GeSHi($text, $lang);
    if ($lines == 'true') {
        $geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS);
    }
    $text = $geshi->parse_code();
    $text = '???' . $text . '???';
    return $text;
}
Example #10
0
/**
* Replaces the matched tags an image
* @param array An array of matches (see preg_match_all)
* @return string
*/
function plgContentGeshi_replacer(&$matches)
{
    $params =& $GLOBALS['_MAMBOT_GESHI_PARAMS'];
    jimport('geshi.geshi');
    jimport('domit.xml_saxy_shared');
    $args = SAXY_Parser_Base::parseAttributes($matches[1]);
    $text = $matches[2];
    $lang = JArrayHelper::getValue($args, 'lang', 'php');
    $lines = JArrayHelper::getValue($args, 'lines', 'false');
    $html_entities_match = array("|\\<br \\/\\>|", "#<#", "#>#", "|&#39;|", '#&quot;#', '#&nbsp;#');
    $html_entities_replace = array("\n", '&lt;', '&gt;', "'", '"', ' ');
    $text = preg_replace($html_entities_match, $html_entities_replace, $text);
    $text = str_replace('&lt;', '<', $text);
    $text = str_replace('&gt;', '>', $text);
    /*
    	// Replace 2 spaces with "&nbsp; " so non-tabbed code indents without making huge long lines.
    	$text = str_replace("  ", "&nbsp; ", $text);
    	// now Replace 2 spaces with " &nbsp;" to catch odd #s of spaces.
    	$text = str_replace("  ", " &nbsp;", $text);
    */
    // Replace tabs with "&nbsp; &nbsp;" so tabbed code indents sorta right without making huge long lines.
    //$text = str_replace("\t", "&nbsp; &nbsp;", $text);
    $text = str_replace("\t", '  ', $text);
    $geshi = new GeSHi($text, $lang);
    if ($lines == 'true') {
        $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
    }
    $text = $geshi->parse_code();
    return $text;
}
function wp_syntax_highlight($match)
{
    global $wp_syntax_matches;
    $i = intval($match[1]);
    $match = $wp_syntax_matches[$i];
    $language = strtolower(trim($match[1]));
    $line = trim($match[2]);
    $code = wp_syntax_code_trim($match[3]);
    $geshi = new GeSHi($code, $language);
    $geshi->enable_keyword_links(false);
    do_action_ref_array('wp_syntax_init_geshi', array(&$geshi));
    $output = "\n<div class=\"wp_syntax\">";
    if ($line) {
        $output .= "<table><tr><td class=\"line_numbers\">";
        $output .= wp_syntax_line_numbers($code, $line);
        $output .= "</td><td class=\"code\">";
        $output .= $geshi->parse_code();
        $output .= "</td></tr></table>";
    } else {
        $output .= "<div class=\"code\">";
        $output .= $geshi->parse_code();
        $output .= "</div>";
    }
    return $output .= "</div>\n";
    return $output;
}
Example #12
0
function DoGeshi($code)
{
    $geshi = new GeSHi(trim($code), "html4strict", null);
    $geshi->set_header_type(GESHI_HEADER_NONE);
    $geshi->enable_classes();
    return "<span class=\"geshi\">" . str_replace("\n", "", $geshi->parse_code()) . "</span>";
}
 /**
  * @desc Highlights the code. It uses the geshi HTML syntax highlighter and then it highlights the specific template syntax.
  * @param int $line_number GESHI_NO_LINE_NUMBERS => no line numbers, GESHI_NORMAL_LINE_NUMBERS line numbers.
  * @param bool $inline_code true if it's a sigle line code, otherwise false.
  */
 public function parse($line_number = GESHI_NO_LINE_NUMBERS, $inline_code = false)
 {
     //The template language of PHPBoost contains HTML. We first ask to highlight the html code.
     require_once PATH_TO_ROOT . '/kernel/lib/php/geshi/geshi.php';
     $geshi = new GeSHi($this->content, 'html');
     if ($line_number) {
         $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
     }
     //GeSHi must not put any div or pre tag before and after the content
     if ($inline_code) {
         $geshi->set_header_type(GESHI_HEADER_NONE);
     }
     $this->content = $geshi->parse_code();
     //Now we highlight the specific syntax of PHPBoost templates
     //Conditionnal block
     $this->content = preg_replace('`# IF ( NOT)? ((?:\\w+\\.)*)(\\w+) #`i', '<span style="' . self::TPL_SHARP_STYLE . '">#</span> <span style="' . self::TPL_KEYWORD_STYLE . '">IF$1</span> <span style="' . self::TPL_NESTED_VARIABLE_STYLE . '">$2</span><span style="' . self::TPL_VARIABLE_STYLE . '">$3</span> <span style="' . self::TPL_SHARP_STYLE . '">#</span>', $this->content);
     $this->content = preg_replace('`# ELSEIF ( NOT)? ((?:\\w+\\.)*)(\\w+) #`i', '<span style="' . self::TPL_SHARP_STYLE . '">#</span> <span style="' . self::TPL_KEYWORD_STYLE . '">ELSEIF$1</span> <span style="' . self::TPL_NESTED_VARIABLE_STYLE . '">$2</span><span style="' . self::TPL_VARIABLE_STYLE . '">$3</span> <span style="' . self::TPL_SHARP_STYLE . '">#</span>', $this->content);
     $this->content = str_replace('# ELSE #', '<span style="' . self::TPL_SHARP_STYLE . '">#</span> <span style="' . self::TPL_KEYWORD_STYLE . '">ELSE</span> <span style="' . self::TPL_SHARP_STYLE . '">#</span>', $this->content);
     $this->content = str_replace('# ENDIF #', '<span style="' . self::TPL_SHARP_STYLE . '">#</span> <span style="' . self::TPL_KEYWORD_STYLE . '">ENDIF</span> <span style="' . self::TPL_SHARP_STYLE . '">#</span>', $this->content);
     //Loops
     $this->content = preg_replace('`# START ((?:\\w+\\.)*)(\\w+) #`i', '<span style="' . self::TPL_SHARP_STYLE . '">#</span> <span style="' . self::TPL_KEYWORD_STYLE . '">START</span> <span style="' . self::TPL_NESTED_VARIABLE_STYLE . '">$1</span><span style="' . self::TPL_VARIABLE_STYLE . '">$2</span> <span style="' . self::TPL_SHARP_STYLE . '">#</span>', $this->content);
     $this->content = preg_replace('`# END ((?:\\w+\\.)*)(\\w+) #`i', '<span style="' . self::TPL_SHARP_STYLE . '">#</span> <span style="' . self::TPL_KEYWORD_STYLE . '">END</span> <span style="' . self::TPL_NESTED_VARIABLE_STYLE . '">$1</span><span style="' . self::TPL_VARIABLE_STYLE . '">$2</span> <span style="' . self::TPL_SHARP_STYLE . '">#</span>', $this->content);
     //Inclusions
     $this->content = preg_replace('`# INCLUDE ((?:\\w+\\.)*)([\\w]+) #`', '<span style="' . self::TPL_SHARP_STYLE . '">#</span> <span style="' . self::TPL_KEYWORD_STYLE . '">INCLUDE </span> <span style="' . self::TPL_NESTED_VARIABLE_STYLE . '">$1</span><span style="' . self::TPL_VARIABLE_STYLE . '">$2</span> <span style="' . self::TPL_SHARP_STYLE . '">#</span>', $this->content);
     //Simple variable
     $this->content = preg_replace('`{([\\w]+)}`i', '<span style="' . self::TPL_BRACES_STYLE . '">{</span><span style="' . self::TPL_VARIABLE_STYLE . '">$1</span><span style="' . self::TPL_BRACES_STYLE . '">}</span>', $this->content);
     //Loop variable
     $this->content = preg_replace('`{((?:[\\w]+\\.)+)([\\w]+)}`i', '<span style="' . self::TPL_BRACES_STYLE . '">{</span><span style="' . self::TPL_NESTED_VARIABLE_STYLE . '">$1</span><span style="' . self::TPL_VARIABLE_STYLE . '">$2</span><span style="' . self::TPL_BRACES_STYLE . '">}</span>', $this->content);
     if ($inline_code) {
         $this->content = '<pre style="display:inline; font-color:courier new;">' . $this->content . '</pre>';
     }
 }
 function _doGeshi($shebangMatch)
 {
     $language = $shebangMatch['lang'];
     $line = (int) ($shebangMatch['linenumber'] > 1 ? $shebangMatch['linenumber'] : 0);
     $codeblock = $shebangMatch['code'];
     $highlighter = new GeSHi($this->outdent(trim($codeblock)), $language);
     $highlighted = $highlighter->parse_code();
     if ($line) {
         preg_match('!^(\\s*<pre[^>]+>)(.*)(</pre>)!s', $highlighted, $m);
         $ret = '<ol';
         if ($line) {
             $ret .= ' start="' . $line . '"';
         }
         $ret .= '>';
         $ret .= preg_replace('/.+(\\n|$)/', '<li>$0</li>', $m[2]);
         $ret .= '</ol>';
         $ret = $m[1] . $ret . $m[3];
     } else {
         $ret = $highlighted;
     }
     if ($shebangMatch['params']) {
         $ret = $this->_processGeshiParams($ret, $shebangMatch['params']);
     }
     return "\n\n" . $this->hashBlock($ret) . "\n\n";
 }
Example #15
0
function smarty_block_code($params, $content, Smarty_Internal_Template $template, $open)
{
    if ($open) {
        return '';
    } else {
        $language = isset($params['language']) ? (string) $params['language'] : null;
        $classes = array();
        if ($language) {
            $classes[] = $language;
        }
        if (!empty($params['class'])) {
            $classes[] = $params['class'];
        }
        $content = trim($content, "\n\r");
        $content = rtrim($content);
        $rows = preg_split("#[\n\r]#", $content);
        preg_match('#^\\s+#', reset($rows), $matches);
        if ($matches) {
            $whitespace = $matches[0];
            foreach ($rows as &$row) {
                $row = preg_replace('#^' . $whitespace . '#', '', $row);
            }
        }
        $content = implode(PHP_EOL, $rows);
        $content = trim($content, "\n\r");
        $geshi = new GeSHi($content, $language);
        $geshi->keyword_links = false;
        $geshi->set_tab_width(4);
        $geshi->set_header_type(GESHI_HEADER_NONE);
        return '<code class="' . implode(' ', $classes) . '">' . $geshi->parse_code() . '</code>';
    }
}
Example #16
0
 function _codeBlockHighlighter($codeblock, &$clear)
 {
     $split = preg_split('/[\\r\\n]/', $codeblock, 2, PREG_SPLIT_NO_EMPTY);
     if (count($split) == 2 && preg_match('/^\\s*((\\\\){0,2}\\[([a-zA-Z0-9\\-_]+)\\]\\s*)/', $split[0], $matches)) {
         if ($matches[2] == '\\') {
             $codeblock = substr($codeblock, 1);
             return $codeblock;
         }
         $strlen = strlen($matches[0]);
         $parser = strtolower($matches[3]);
         $codeblock = $split[1];
         if ($strlen > 0) {
             if ($parser == 'console') {
                 $codeblock = htmlspecialchars($codeblock, ENT_NOQUOTES);
                 $codeblock = preg_replace_callback('/^\\n+/', array($this, '_doFencedCodeBlocks_newlines'), $codeblock);
                 $codeblock = "<pre class=\"console\"><code>{$codeblock}</code></pre>";
             } else {
                 $codeblock = preg_replace('/\\n+$/', '', $codeblock);
                 $geshi = new GeSHi($codeblock, $parser);
                 $geshi->set_overall_style('');
                 $codeblock = $geshi->parse_code();
             }
             $clear = false;
         }
     }
     return $codeblock;
 }
 /**
  * Highlight code with style
  *
  * @param string $value Full source text
  *
  * @return string
  */
 public function highlightCode($value)
 {
     $text = preg_replace_callback(self::$pattern, function ($data) {
         $geshi = new \GeSHi($data[2], $data[1]);
         return $geshi->parse_code();
     }, $value);
     return $text;
 }
Example #18
0
 public static function codeShortcode($options, $content)
 {
     include_once __DIR__ . '/vendor/geshi-1.0.8.15/geshi.php';
     $name = empty($options[0]) ? 'text' : $options[0];
     $geshi = new GeSHi(trim($content), $name);
     #$geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS);
     return sprintf('<div class="highlight highlight-%s">%s</div>', $name, $geshi->parse_code());
 }
 /**
  * @param string $sContent
  * @param string $sLanguage
  * @return string
  */
 public function parseGeshi($sContent, $sLanguage, $bUseClasses = false)
 {
     $oGeshi = new \GeSHi($sContent, $sLanguage);
     if ($bUseClasses) {
         $oGeshi->enable_classes();
     }
     return $oGeshi->parse_code();
 }
Example #20
0
	public function getFormatedCode(){
		$content=$this->content();
	
		$content=str_replace(array("&lt;", "&gt;", '&amp;', '&#039;', '&quot;','&lt;', '&gt;'), array("<", ">",'&','\'','"','<','>'), htmlspecialchars_decode($content, ENT_NOQUOTES)); 		
		$geshi = new GeSHi($content, $this->codeLanguage);
		$value=  $geshi->parse_code();
		return ($value);
	}
Example #21
0
 function syntaxHighlight($matches)
 {
     $geshi = new GeSHi($matches[3], empty($matches[2]) ? "txt" : $matches[2]);
     $geshi->enable_classes();
     $geshi->set_overall_style("");
     // empty style
     return $geshi->parse_code();
 }
 /**
  * Compiles the node to PHP.
  *
  * @param \Twig_Compiler A Twig_Compiler instance
  */
 public function compile(\Twig_Compiler $compiler)
 {
     $source = trim($this->getNode('body')->getAttribute('data'));
     $name = $this->getAttribute('name');
     $geshi = new \GeSHi($source, $name);
     #$geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS);
     $parsedCode = sprintf('<div class="highlight highlight-%s">%s</div>', $name, $geshi->parse_code());
     $compiler->addDebugInfo($this)->write('echo ')->string($parsedCode)->raw(";\n");
 }
Example #23
0
 /**
  * Method highlights single code block. If the language file is overriden
  * in sfGeshiPlugin/lib/custom directory, it uses it. Otherwise, it uses
  * default GeSHi language file from its lib.
  *
  * @param String $code - code block.
  * @param String $language - language name of the code block.
  */
 public static function parse_single($code, $language)
 {
     $geshi_object = new GeSHi($code, $language);
     $alternative_directory = GESHI_LANG_ROOT . '../../custom/';
     $alternative_file = $alternative_directory . strtolower($language) . '.php';
     if (file_exists($alternative_file)) {
         $geshi_object->set_language_path($alternative_directory);
     }
     return $geshi_object->parse_code();
 }
Example #24
0
 static function generic_render_code($source, $lang, $line_numbers = false)
 {
     require_once self::$geshi_file;
     $geshi = new GeSHi($source, $lang);
     if ($line_numbers) {
         $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
     }
     $geshi->enable_keyword_links(false);
     return $geshi->parse_code();
 }
 /**
  * @param string $arguments array with the type
  * @param array $code string of the code to parse
  * @param \ShortcodeParser $parser Parser root user.
  * @param string $shortcode
  * @param array $extra
  *
  * @return String of parsed code.
  */
 public static function handle_shortcode($arguments, $code, $parser, $shortcode, $extra = array())
 {
     if (!isset($arguments['type'])) {
         /** Assuming most code is PHP. Feel free to update. Should this be a configurable? */
         $arguments['type'] = 'php';
     }
     $geshi = new \GeSHi(html_entity_decode(str_replace('<br>', "\n", $code)), $arguments['type']);
     $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
     return $geshi->parse_code();
 }
Example #26
0
function render_code(&$renderer, $code, $lang)
{
    // code
    $renderer->doc .= "<div class=\"code_block_code\">";
    $geshi = new GeSHi($code, $lang);
    $geshi->set_header_type(GESHI_HEADER_DIV);
    $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
    $renderer->doc .= $geshi->parse_code();
    $renderer->doc .= "</div>";
}
function markdown_code_highlighter($code, $language, $rss = false)
{
    $code = stripslashes(trim(htmlspecialchars_decode($code, ENT_NOQUOTES)));
    $geshi = new GeSHi($code, $language);
    if ($rss == false) {
        $geshi->set_header_type(GESHI_HEADER_NONE);
        $geshi->enable_classes();
    }
    return '<pre class="lang-' . $language . '"><code>' . $geshi->parse_code() . '</code></pre>';
}
function source_highlighter($code)
{
    $source = str_replace(array("&gt;", "&lt;", "&quot;", "&amp;"), array(">", "<", "\"", "&"), $code[1]);
    if (false !== stristr($code[0], "[php]")) {
        $lang2geshi = "php";
    } elseif (false !== stristr($code[0], "[sql]")) {
        $lang2geshi = "sql";
    } elseif (false !== stristr($code[0], "[html]")) {
        $lang2geshi = "html4strict";
    } else {
        $lang2geshi = "txt";
    }
    $geshi = new GeSHi($source, $lang2geshi);
    $geshi->set_header_type(GESHI_HEADER_PRE_VALID);
    $geshi->set_overall_style('font: normal normal 100% monospace; color: #000066;', false);
    $geshi->set_line_style('color: #003030;', 'font-weight: bold; color: #006060;', true);
    $geshi->set_code_style('color: #000020;font-family:monospace; font-size:12px;line-height:6px;', true);
    //$geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
    $geshi->enable_classes(false);
    $geshi->set_link_styles(GESHI_LINK, 'color: #000060;');
    $geshi->set_link_styles(GESHI_HOVER, 'background-color: #f0f000;');
    $return = "<div class=\"codetop\">CODE</div><div class=\"codemain\">\n";
    $return .= $geshi->parse_code();
    $return .= "\n</div>\n";
    return $return;
}
Example #29
0
 function geshi_syntax($pockets)
 {
     $source = $pockets[2];
     //второй карман - то что внутри <pre lang="***"> - </pre>
     $language = $pockets[1];
     //первый карман - язык подсветки lang="язык"
     $geshi = new GeSHi($source, $language);
     //используем библиотеку подсветки
     //и возвращаем подсвеченный участок кода
     return '<br/><div class="wp_syntax"><div class="code">' . $geshi->parse_code() . '</div></div>';
 }
Example #30
-1
function task_modifier_scan_text($string)
{
    $CI =& get_instance();
    $CI->config->load('geshi');
    $highlight_map = $CI->config->item('geshi_highlighting_map');
    $html = str_get_html($string, true, true, DEFAULT_TARGET_CHARSET, false);
    foreach ($html->find('pre br') as $br) {
        $br->outertext = "\n";
    }
    foreach ($html->find('pre.highlight') as $highlighted_code) {
        $lang = $highlighted_code->lang;
        if (isset($highlight_map[$lang])) {
            $content = str_replace('&nbsp;', ' ', htmlspecialchars_decode(strip_tags($highlighted_code->innertext), ENT_HTML5 | ENT_QUOTES));
            $geshi = new GeSHi($content, $highlight_map[$lang]);
            $geshi->set_header_type(GESHI_HEADER_PRE_VALID);
            $geshi->enable_line_numbers(GESHI_NO_LINE_NUMBERS);
            $highlighted_code->innertext = $geshi->parse_code();
            $highlighted_code->lang = null;
        } else {
            $highlighted_code->lang = null;
            $highlighted_code->class = null;
        }
    }
    ob_start();
    echo $html;
    return ob_get_clean();
}