当前位置: 首页>>代码示例>>PHP>>正文


PHP GeSHi::set_encoding方法代码示例

本文整理汇总了PHP中GeSHi::set_encoding方法的典型用法代码示例。如果您正苦于以下问题:PHP GeSHi::set_encoding方法的具体用法?PHP GeSHi::set_encoding怎么用?PHP GeSHi::set_encoding使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在GeSHi的用法示例。


在下文中一共展示了GeSHi::set_encoding方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: load

 function load()
 {
     if ($this->exists() == true) {
         $this->import();
         $this->lng = $this->data['language'];
         $this->source = $this->data['source'];
     } else {
         if (!class_exists('GeSHi')) {
             include_once 'classes/class.geshi.php';
         }
         global $lang;
         $language = $this->hasLanguage() ? $this->lng : 'text';
         $geshi = new GeSHi($this->source, $language, 'classes/geshi');
         $geshi->set_encoding($lang->charset());
         $geshi->enable_classes(false);
         $geshi->set_header_type(GESHI_HEADER_DIV);
         $geshi->enable_keyword_links(true);
         $geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 5);
         if (!$this->hasLanguage()) {
             $geshi->enable_highlighting(false);
             $geshi->set_numbers_highlighting(false);
             $geshi->set_brackets_highlighting(false);
             $language = '';
         } else {
             $language = $geshi->get_language_name();
         }
         $this->data = array('language' => $language, 'parsed' => $geshi->parse_code(), 'source' => $this->source);
         $this->export();
     }
 }
开发者ID:BackupTheBerlios,项目名称:viscacha-svn,代码行数:30,代码来源:UniversalCodeCache.inc.php

示例2: token

 /**
  * 
  * Renders a token into text matching the requested format.
  * 
  * @access public
  * 
  * @param array $options The "options" portion of the token (second
  * element).
  * 
  * @return string The text rendered from the token options.
  * 
  */
 function token($options)
 {
     $text = $options['text'];
     $attr = $options['attr'];
     $type = strtolower($attr['type']);
     $css = $this->formatConf(' class="%s"', 'css');
     $css_code = $this->formatConf(' class="%s"', 'css_code');
     $css_php = $this->formatConf(' class="%s"', 'css_php');
     $css_html = $this->formatConf(' class="%s"', 'css_html');
     $geshi_class = path::file("plugins") . "geshi/geshi.php";
     if ($type != "" && file_exists(path::file("plugins") . "geshi/geshi.php") && is_readable(path::file("plugins") . "geshi/geshi.php")) {
         require_once path::file("plugins") . "geshi/geshi.php";
         $geshi = new GeSHi(trim($text), $type, path::file("plugins") . "geshi/geshi/");
         $geshi->set_encoding("utf-8");
         $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS, 1);
         $geshi->set_header_type(GESHI_HEADER_DIV);
         $geshi->enable_classes();
         $geshi->set_overall_class('geshi_code');
         $text = $geshi->parse_code();
         $style = $geshi->get_stylesheet();
         global $page_handler;
         $style = "<style type='text/css'>\n{$style}\n</style>";
         $page_handler->add_header_data($style);
     } else {
         //generic code example:
         //convert tabs to four spaces,
         //convert entities.
         $text = trim(htmlentities($text));
         $text = str_replace("\t", " &nbsp; &nbsp;", $text);
         $text = str_replace("  ", " &nbsp;", $text);
         $text = "<code{$css_code}>{$text}</code>";
     }
     return "\n{$text}\n\n";
 }
开发者ID:BackupTheBerlios,项目名称:wcms,代码行数:46,代码来源:Code.php

示例3: register

 public function register(Application $app)
 {
     $app['geshi'] = function () use($app) {
         $geshi = new \GeSHi();
         $geshi->enable_classes();
         // this must be the first method (see Geshi doc)
         $geshi->set_encoding($app['app.charset']);
         $geshi->enable_line_numbers(GESHI_NO_LINE_NUMBERS);
         $geshi->enable_keyword_links(false);
         return $geshi;
     };
 }
开发者ID:oiat,项目名称:e-book-creator,代码行数:12,代码来源:GeshiServiceProvider.php

示例4: toHTML

 /**
  *	Send output to browser. 
  */
 function toHTML($code_text, $parm)
 {
     global $e107cache;
     $class = e107::getBB()->getClass('code');
     $pref = e107::getPref();
     $tp = e107::getParser();
     if ($pref['smiley_activate']) {
         if (!is_object($tp->e_emote)) {
             $tp->e_emote = new e_emoteFilter();
         }
         $code_text = $tp->e_emote->filterEmotesRev($code_text);
     }
     $search = array(E_NL, '&#092;', '&#036;', '&lt;');
     $replace = array("\r\n", "\\", '$', '<');
     $code_text = str_replace($search, $replace, $code_text);
     if (isset($pref['useGeshi']) && $pref['useGeshi'] && file_exists(e_PLUGIN . "geshi/geshi.php")) {
         $code_md5 = md5($code_text);
         if (!($CodeCache = $e107cache->retrieve('GeshiParsed_' . $code_md5))) {
             require_once e_PLUGIN . "geshi/geshi.php";
             if ($parm) {
                 $geshi = new GeSHi($code_text, $parm, e_PLUGIN . "geshi/geshi/");
             } else {
                 $geshi = new GeSHi($code_text, $pref['defaultLanGeshi'] ? $pref['defaultLanGeshi'] : 'php', e_PLUGIN . "geshi/geshi/");
             }
             $geshi->line_style1 = "font-family: 'Courier New', Courier, monospace; font-weight: normal; font-style: normal;";
             $geshi->set_encoding('utf-8');
             $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
             $geshi->set_header_type(GESHI_HEADER_DIV);
             $CodeCache = $geshi->parse_code();
             $e107cache->set('GeshiParsed_' . $code_md5, $CodeCache);
         }
         $ret = "<code class='code_highlight code-box {$class}' style='unicode-bidi: embed; direction: ltr'>" . str_replace("&amp;", "&", $CodeCache) . "</code>";
     } else {
         $code_text = html_entity_decode($code_text, ENT_QUOTES, 'utf-8');
         $code_text = trim($code_text);
         $code_text = htmlspecialchars($code_text, ENT_QUOTES, 'utf-8');
         $srch = array('{', '}');
         $repl = array('&lbrace;', '&rbrace;');
         $code_text = str_replace($srch, $repl, $code_text);
         // avoid code getting parsed as templates or shortcodes.
         if ($parm == 'inline') {
             return "<code style='unicode-bidi: embed; direction: ltr'>" . $code_text . "</code>";
         }
         //	$highlighted_text = highlight_string($code_text, TRUE);
         // highlighted_text = str_replace(array("<code>","</code>"),"",$highlighted_text);
         $divClass = $parm ? $parm : 'code_highlight';
         $ret = "<pre class='prettyprint linenums " . $tp->toAttribute($divClass) . " code-box {$class}' style='unicode-bidi: embed; direction: ltr'>" . $code_text . "</pre>";
     }
     $ret = str_replace("[", "&#091;", $ret);
     return $ret;
 }
开发者ID:armpit,项目名称:e107,代码行数:54,代码来源:bb_code.php

示例5: textsanitizer_geshi_css_highlight

/**
 * Highlights the passed source code as css
 *
 * @param $source
 */
function textsanitizer_geshi_css_highlight($source)
{
    if (!@(include_once ICMS_LIBRARIES_PATH . '/geshi/geshi.php')) {
        return false;
    }
    $source = icms_core_DataFilter::undoHtmlSpecialChars($source);
    // Create the new GeSHi object, passing relevant stuff
    $geshi = new GeSHi($source, 'css');
    // Enclose the code in a <div>
    $geshi->set_header_type(GESHI_HEADER_NONE);
    // Sets the proper encoding charset other than "ISO-8859-1"
    $geshi->set_encoding(_CHARSET);
    $geshi->set_link_target("_blank");
    // Parse the code
    $code = $geshi->parse_code();
    $code = "<div class=\"icmsCodeCss\"><code>" . $code . "</code></div>";
    return $code;
}
开发者ID:LeeGlendenning,项目名称:formulize,代码行数:23,代码来源:syntaxhighlightcss.php

示例6: GeSHi

 function ch_highlight_code($matches)
 {
     global $ch_options;
     // undo nl and p formatting
     $plancode = $matches[2];
     $plancode = $this->entodec($plancode);
     $geshi = new GeSHi($plancode, strtolower($matches[1]));
     $geshi->set_encoding('utf-8');
     $geshi->set_header_type(GESHI_HEADER_DIV);
     $geshi->enable_classes(true);
     $language = $geshi->get_language_name();
     if ($language == 'PHP') {
         $geshi->add_keyword(2, 'protected');
         $geshi->add_keyword(2, 'private');
         $geshi->add_keyword(2, 'abstract');
         $geshi->add_keyword(2, 'static');
         $geshi->add_keyword(2, 'final');
         $geshi->add_keyword(2, 'implements');
     } elseif ($language == 'Bash') {
         $geshi->add_keyword(2, 'convert');
         $geshi->add_keyword(2, 'git');
     } elseif ($language == 'Vim Script') {
         $geshi->add_keyword(1, 'endfunction');
     }
     if (ch_go('ch_b_linenumber')) {
         $geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS);
     }
     $geshi->enable_strict_mode(ch_go('ch_b_strict_mode'));
     $geshi->set_tab_width(ch_go('ch_in_tab_width'));
     $geshi->set_overall_class('dean_ch');
     $overall_style = '';
     if (!ch_go("ch_b_wrap_text")) {
         $overall_style .= 'white-space: nowrap;';
     } else {
         $overall_style .= 'white-space: wrap;';
     }
     if ($overall_style != '') {
         $geshi->set_overall_style($overall_style, false);
     }
     return $geshi->parse_code();
 }
开发者ID:senseb,项目名称:solr-vs-elasticsearch,代码行数:41,代码来源:deans_code_highlighter.php

示例7: blockHandler

/**
 * User handler for code block
 *
 * @param TexyHandlerInvocation  handler invocation
 * @param string  block type
 * @param string  text to highlight
 * @param string  language
 * @param TexyModifier modifier
 * @return TexyHtml
 */
function blockHandler($invocation, $blocktype, $content, $lang, $modifier)
{
    if ($blocktype !== 'block/code') {
        return $invocation->proceed();
    }
    $texy = $invocation->getTexy();
    global $geshiPath;
    if ($lang == 'html') {
        $lang = 'html4strict';
    }
    $content = Texy::outdent($content);
    $geshi = new GeSHi($content, $lang, $geshiPath . 'geshi/');
    // GeSHi could not find the language
    if ($geshi->error) {
        return $invocation->proceed();
    }
    // do syntax-highlighting
    $geshi->set_encoding('UTF-8');
    $geshi->set_header_type(GESHI_HEADER_PRE);
    $geshi->enable_classes();
    $geshi->set_overall_style('color: #000066; border: 1px solid #d0d0d0; background-color: #f0f0f0;', true);
    $geshi->set_line_style('font: normal normal 95% \'Courier New\', Courier, monospace; color: #003030;', 'font-weight: bold; color: #006060;', true);
    $geshi->set_code_style('color: #000020;', 'color: #000020;');
    $geshi->set_link_styles(GESHI_LINK, 'color: #000060;');
    $geshi->set_link_styles(GESHI_HOVER, 'background-color: #f0f000;');
    // save generated stylesheet
    $texy->styleSheet .= $geshi->get_stylesheet();
    $content = $geshi->parse_code();
    // check buggy GESHI, it sometimes produce not UTF-8 valid code :-((
    $content = iconv('UTF-8', 'UTF-8//IGNORE', $content);
    // protect output is in HTML
    $content = $texy->protect($content, Texy::CONTENT_BLOCK);
    $el = TexyHtml::el();
    $el->setText($content);
    return $el;
}
开发者ID:eduardobenito10,项目名称:jenkins-php-quickstart,代码行数:46,代码来源:demo-geshi.php

示例8: prepare

 /**
  * Initialise a GeSHi object to format some code, performing
  * common setup for all our uses of it
  *
  * @param string $text
  * @param string $lang
  * @return GeSHi
  */
 private static function prepare($text, $lang)
 {
     self::initialise();
     $geshi = new GeSHi($text, $lang);
     if ($geshi->error() == GESHI_ERROR_NO_SUCH_LANG) {
         return null;
     }
     $geshi->set_encoding('UTF-8');
     $geshi->enable_classes();
     $geshi->set_overall_class("source-{$lang}");
     $geshi->enable_keyword_links(false);
     return $geshi;
 }
开发者ID:akoehn,项目名称:wikireader,代码行数:21,代码来源:SyntaxHighlight_GeSHi.class.php

示例9: highlight

 private function highlight(&$text, $lang = 'php', $lines = false)
 {
     $geshi = new GeSHi(trim($text, "\r\n"), $lang);
     $geshi->enable_classes();
     $geshi->set_header_type(GESHI_HEADER_PRE);
     $geshi->set_overall_class("code");
     $geshi->set_encoding("utf-8");
     // [[mw:user:Brianegge]] suggestion
     $geshi->set_overall_style('background: #EEEEEE; border: padding: 0.2em');
     if ($lines == true or $lines == 1 or $lines == '1') {
         $geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS);
     } else {
         $geshi->enable_line_numbers(GESHI_NO_LINE_NUMBERS);
     }
     return "<style>" . $geshi->get_stylesheet() . "</style>" . $geshi->parse_code();
 }
开发者ID:clrh,项目名称:mediawiki,代码行数:16,代码来源:geshi.body.php

示例10: dirname


//.........这里部分代码省略.........
                     } else {
                         $error = TRUE;
                     }
                 } else {
                     // use GeSHi 1.0
                     include_once dirname(__FILE__) . '/geshi-1.0/geshi.php';
                     // highlight code according to type setting, default to php
                     $geshi = new GeSHi($not_geshified, $match['type'] !== NULL ? $match['type'] : $this->settings['default_type']);
                     $str_error = $geshi->error();
                     if (empty($str_error)) {
                         // enable line numbers
                         $number_style = !empty($match['line']) ? $match['line'] : $this->settings['default_line'];
                         switch (strtolower(preg_replace('/\\d+/', '', $number_style))) {
                             case 'normal':
                                 $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
                                 break;
                             case 'fancy':
                                 $geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, (int) preg_replace('/[^\\d]*/', '', $number_style));
                                 break;
                             case 'none':
                                 $geshi->enable_line_numbers(GESHI_NO_LINE_NUMBERS);
                                 break;
                         }
                         // set first line number
                         if ($match['start']) {
                             $geshi->start_line_numbers_at($match['start']);
                         }
                         // set strict mode
                         if ($match['strict']) {
                             $geshi->enable_strict_mode(TRUE);
                         }
                         // enable or disable keyword links
                         $geshi->enable_keyword_links((bool) ($match['keyword_links'] !== NULL) ? $match['keyword_links'] : $this->settings['keyword_links']);
                         // set overall class name
                         if ($match['overall_class'] != NULL) {
                             $geshi->set_overall_class($match['overall_class']);
                         }
                         // set overall id
                         if ($match['overall_id'] != NULL) {
                             $geshi->set_overall_id($match['overall_id']);
                         }
                         // set header type
                         switch ($this->settings['geshi_header_type']) {
                             case 'div':
                                 $geshi->set_header_type(GESHI_HEADER_DIV);
                                 break;
                             case 'pre':
                                 $geshi->set_header_type(GESHI_HEADER_PRE);
                                 break;
                             case 'pre-valid':
                                 $geshi->set_header_type(GESHI_HEADER_PRE_VALID);
                                 break;
                             case 'pre-table':
                                 $geshi->set_header_type(GESHI_HEADER_PRE_TABLE);
                                 break;
                             case 'none':
                                 $geshi->set_header_type(GESHI_HEADER_NONE);
                                 break;
                         }
                         // set encoding (for legacy reasons afaik)
                         $geshi->set_encoding($this->settings['geshi_encoding']);
                         // parse the source code
                         $geshified = $geshi->parse_code();
                     } else {
                         $error = TRUE;
                     }
                 }
                 if (!file_exists($cache_dir . $md5) && is_writable($cache_dir) || file_exists($cache_dir . $md5) && is_writable($cache_dir . $md5)) {
                     if (!$error) {
                         // we can write to the cache file
                         if (is_callable('file_put_contents')) {
                             file_put_contents($cache_dir . $md5, $geshified);
                             @chmod($cache_dir . $md5, 0777);
                         } else {
                             // when will you guys finally drop PHP4 support?
                             $f = fopen($cache_dir . $md5, 'w');
                             fwrite($f, $geshified);
                             fclose($f);
                             @chmod($cache_dir . $md5, 0777);
                         }
                     }
                 } else {
                     // We could ignore that, but for performance reasons better warn the user.
                     print '<b>Warning</b>: Your <i>' . $this->name . '</i> cache directory <b>' . $cache_dir . '</b> is not writable! This will cause severe performance problems, so I suggest you chmod that dir.';
                 }
             }
             // save replacement to cache and mark location with an identifier for later replacement
             if (!isset($_SESSION['cache']['ext.geshify'])) {
                 $_SESSION['cache']['ext.geshify'] = array();
             }
             if (!$error) {
                 $_SESSION['cache']['ext.geshify'][$md5] = $geshified;
                 $str = substr($str, 0, $code_pos) . $md5 . substr($str, $code_end_pos + $rllen);
             }
         }
         // unset used variables, so we don't get messed up
         unset($code_pos, $code_end_pos, $md5, $geshified, $not_geshified, $geshi, $match, $ident, $error);
     }
     return $str;
 }
开发者ID:neverpanic,项目名称:GeSHify,代码行数:101,代码来源:ext.geshify.php

示例11: eval

 }
 $sourcecode = $codeObj->get();
 $sourcecode['source'] = html_entity_decode($sourcecode['source'], ENT_QUOTES);
 ($code = $plugins->load('popup_hlcode_start')) ? eval($code) : null;
 if ($_GET['temp'] == 1) {
     viscacha_header('Content-Type: text/plain');
     viscacha_header('Content-Length: ' . strlen($sourcecode['source']));
     viscacha_header('Content-Disposition: attachment; filename="' . date('d-m-Y_H-i') . '.txt"');
     echo $sourcecode['source'];
     $slog->updatelogged();
     $db->close();
     exit;
 } else {
     require_once 'classes/class.geshi.php';
     $geshi = new GeSHi($sourcecode['source'], strtolower($sourcecode['language']), 'classes/geshi');
     $geshi->set_encoding($lang->phrase('charset'));
     // Use classes for colouring
     $geshi->enable_classes();
     // Output in a div instead in a pre-element
     $geshi->set_header_type(GESHI_HEADER_DIV);
     // Linenumbers on  - each 5th element is bold
     $geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 5);
     $lang_name = $geshi->get_language_name();
     // Print Stylesheet
     $htmlhead .= '<style type="text/css"><!-- ' . $geshi->get_stylesheet() . ' --></style>';
     echo $tpl->parse("popup/header");
     ($code = $plugins->load('popup_hlcode_initialized')) ? eval($code) : null;
     $sourcecode['hl'] = $geshi->parse_code();
     echo $tpl->parse("popup/hlcode");
     ($code = $plugins->load('popup_hlcode_end')) ? eval($code) : null;
 }
开发者ID:BackupTheBerlios,项目名称:viscacha-svn,代码行数:31,代码来源:popup.php

示例12: prepare

	/**
	 * Initialise a GeSHi object to format some code, performing
	 * common setup for all our uses of it
	 *
	 * @note Used only until MW 1.20
	 *
	 * @param string $text
	 * @param string $lang
	 * @return GeSHi
	 */
	public static function prepare( $text, $lang ) {

		global $wgSyntaxHighlightKeywordLinks;

		self::initialise();
		$geshi = new GeSHi( $text, $lang );
		if( $geshi->error() == GESHI_ERROR_NO_SUCH_LANG ) {
			return null;
		}
		$geshi->set_encoding( 'UTF-8' );
		$geshi->enable_classes();
		$geshi->set_overall_class( "source-$lang" );
		$geshi->enable_keyword_links( $wgSyntaxHighlightKeywordLinks );

		// If the source code is over 100 kB, disable higlighting of symbols.
		// If over 200 kB, disable highlighting of strings too.
		$bytes = strlen( $text );
		if ( $bytes > 102400 ) {
			$geshi->set_symbols_highlighting( false );
			if ( $bytes > 204800 ) {
				$geshi->set_strings_highlighting( false );
			}
		}

		return $geshi;
	}
开发者ID:nahoj,项目名称:mediawiki_ynh,代码行数:36,代码来源:SyntaxHighlight_GeSHi.class.php

示例13: execAction

    function execAction($dir, $item)
    {
        // show file contents
        global $action;
        if (@eregi($GLOBALS["images_ext"], $item)) {
            $html = '<img src="' . make_link('get_image', $dir, rawurlencode($item)) . '" alt="' . $GLOBALS["messages"]["actview"] . ": " . $item . '" /><br /><br />';
        } elseif (@eregi($GLOBALS["editable_ext"], $item)) {
            $geshiFile = _EXT_PATH . '/libraries/geshi/geshi.php';
            ext_RaiseMemoryLimit('32M');
            // GeSHi 1.0.7 is very memory-intensive
            include_once $geshiFile;
            // Create the GeSHi object that renders our source beautiful
            $geshi = new GeSHi('', '', dirname($geshiFile) . '/geshi');
            $file = get_abs_item($dir, $item);
            $pathinfo = pathinfo($file);
            if (ext_isFTPMode()) {
                $file = ext_ftp_make_local_copy($file);
            }
            if (is_callable(array($geshi, 'load_from_file'))) {
                $geshi->load_from_file($file);
            } else {
                $geshi->set_source(file_get_contents($file));
            }
            if (is_callable(array($geshi, 'get_language_name_from_extension'))) {
                $lang = $geshi->get_language_name_from_extension($pathinfo['extension']);
            } else {
                $pathinfo = pathinfo($item);
                $lang = $pathinfo['extension'];
            }
            $geshi->set_language($lang);
            $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
            $langs = $GLOBALS["language"];
            if ($langs == "japanese") {
                $enc_list = array("ASCII", "ISO-2022-JP", "UTF-8", "EUCJP-WIN", "SJIS-WIN");
                $_e0 = strtoupper(mb_detect_encoding($geshi->source, $enc_list, true));
                if ($_e0 == "SJIS-WIN") {
                    $_encoding = "Shift_JIS";
                } elseif ($_e0 == "EUCJP-WIN") {
                    $_e0 = "EUC-JP";
                } elseif ($_e0 == "ASCII") {
                    $_e0 = "UTF-8";
                } else {
                    $_encoding = $_e0;
                }
                $geshi->set_encoding($_encoding);
            }
            $html = $geshi->parse_code();
            if ($langs == "japanese") {
                if (empty($lang) || strtoupper(mb_detect_encoding($html, $enc_list)) != "UTF-8") {
                    $html = mb_convert_encoding($html, "UTF-8", $_e0);
                }
            }
            if (ext_isFTPMode()) {
                unlink($file);
            }
            $html .= '<hr /><div style="line-height:25px;vertical-align:middle;text-align:center;" class="small">Rendering Time: <strong>' . $geshi->get_time() . ' Sec.</strong></div>';
        } else {
            $html = '
			<iframe src="' . make_link('download', $dir, $item, null, null, null, '&action2=view') . '" id="iframe1" width="100%" height="100%" frameborder="0"></iframe>';
        }
        $html = str_replace(array("\r", "\n"), array('\\r', '\\n'), addslashes($html));
        ?>
		{

	"dialogtitle": "<?php 
        echo $GLOBALS['messages']['actview'] . ": " . $item;
        ?>
",
	"height": 500,
	"autoScroll": true,
	"html": "<?php 
        echo $html;
        ?>
"

}
		<?php 
    }
开发者ID:elevenfox,项目名称:VTree,代码行数:78,代码来源:view.php

示例14: __construct


//.........这里部分代码省略.........
     // twig path for default content templates
     // (easybook built-in templates for contents; e.g. `license.md.twig`)
     $this['twig.path.contents'] = $this->share(function ($app) {
         $paths = array();
         $theme = ucfirst($app->edition('theme'));
         $format = Toolkit::camelize($app->edition('format'), true);
         // TODO: fix the following hack
         if ('Epub' == $format) {
             $format = 'Epub2';
         }
         // default content templates for the edition/book theme
         // <easybook>/app/Resources/Themes/<theme>/<edition-type>/Contents/<template-name>.twig
         $dir = sprintf('%s/%s/%s/Contents', $app['app.dir.themes'], $theme, $format);
         if (file_exists($dir)) {
             $paths[] = $dir;
         }
         // default content templates for every edition and every book
         // <easybook>/app/Resources/Themes/Base/<edition-type>/Contents/<template-name>.twig
         $dir = sprintf('%s/Base/%s/Contents', $app['app.dir.themes'], $format);
         if (file_exists($dir)) {
             $paths[] = $dir;
         }
         return $paths;
     });
     $this['twig.loader'] = function () use($app) {
         return new \Twig_Loader_Filesystem($app['twig.path']);
     };
     $this['twig'] = function () use($app) {
         $twig = new \Twig_Environment($app['twig.loader'], $app['twig.options']);
         $twig->addExtension(new TwigCssExtension());
         $twig->addGlobal('app', $app);
         if (null != $app->get('book')) {
             $twig->addGlobal('book', $app->get('book'));
             $publishingEdition = $app->get('publishing.edition');
             $editions = $app->book('editions');
             $twig->addGlobal('edition', $editions[$publishingEdition]);
         }
         return $twig;
     };
     // -- princeXML -------------------------------------------------------
     $this['prince.default_paths'] = array('/usr/local/bin/prince', '/usr/bin/prince', 'C:\\Program Files\\Prince\\engine\\bin\\prince.exe');
     $this['prince'] = $app->share(function () use($app) {
         // look for the executable file of PrinceXML
         $princePath = null;
         foreach ($app['prince.default_paths'] as $path) {
             if (file_exists($path)) {
                 $princePath = $path;
                 break;
             }
         }
         if (null == $princePath) {
             echo sprintf(" In order to generate PDF files, PrinceXML library must be installed. \n\n" . " We couldn't find PrinceXML executable in any of the following directories: \n" . "   -> %s \n\n" . " If you haven't installed it yet, you can download a fully-functional demo at: \n" . " %s \n\n" . " If you have installed in a custom directory, please type its full absolute path:\n > ", implode($app['prince.default_paths'], "\n   -> "), 'http://www.princexml.com/download');
             $input = trim(fgets(STDIN));
             if (file_exists($input)) {
                 $princePath = $input;
                 echo "\n";
             } else {
                 throw new \Exception(sprintf("We couldn't find the PrinceXML executable in the given directory (%s)", $input));
             }
         }
         $prince = new Prince($princePath);
         $prince->setHtml(true);
         return $prince;
     });
     // -- slugger ---------------------------------------------------------
     $this['slugger'] = $app->share(function () use($app) {
         return new Slugger($app);
     });
     // -- code syntax highlighter -----------------------------------------
     $this['geshi'] = function () use($app) {
         require_once __DIR__ . '/../../../vendor/geshi/geshi/geshi.php';
         $geshi = new \GeSHi();
         $geshi->enable_classes();
         // this must be the first method (see Geshi doc)
         $geshi->set_encoding($app['app.charset']);
         $geshi->enable_line_numbers(GESHI_NO_LINE_NUMBERS);
         $geshi->enable_keyword_links(false);
         return $geshi;
     };
     // -- labels ---------------------------------------------------------
     $this['labels'] = $app->share(function () use($app) {
         $labels = Yaml::parse($app['app.dir.translations'] . '/labels.' . $app->book('language') . '.yml');
         // books can define their own labels files
         if (null != ($customLabelsFile = $app->getCustomLabelsFile())) {
             $customLabels = Yaml::parse($customLabelsFile);
             return Toolkit::array_deep_merge($labels, $customLabels);
         }
         return $labels;
     });
     // -- titles ----------------------------------------------------------
     $this['titles'] = $app->share(function () use($app) {
         $titles = Yaml::parse($app['app.dir.translations'] . '/titles.' . $app->book('language') . '.yml');
         // books can define their own titles files
         if (null != ($customTitlesFile = $app->getCustomTitlesFile())) {
             $customTitles = Yaml::parse($customTitlesFile);
             return Toolkit::array_deep_merge($titles, $customTitles);
         }
         return $titles;
     });
 }
开发者ID:raulfraile,项目名称:easybook,代码行数:101,代码来源:Application.php

示例15: prepare

 /**
  * Initialise a GeSHi object to format some code, performing
  * common setup for all our uses of it
  *
  * @param string $text
  * @param string $lang
  * @return GeSHi
  */
 public static function prepare($text, $lang)
 {
     global $wgSyntaxHighlightKeywordLinks;
     self::initialise();
     $geshi = new GeSHi($text, $lang);
     if ($geshi->error() == GESHI_ERROR_NO_SUCH_LANG) {
         return null;
     }
     $geshi->set_encoding('UTF-8');
     $geshi->enable_classes();
     $geshi->set_overall_class("source-{$lang}");
     $geshi->enable_keyword_links($wgSyntaxHighlightKeywordLinks);
     // If the source code is over 100 kB, disable higlighting of symbols.
     // If over 200 kB, disable highlighting of strings too.
     $bytes = strlen($text);
     if ($bytes > 102400) {
         $geshi->set_symbols_highlighting(false);
         if ($bytes > 204800) {
             $geshi->set_strings_highlighting(false);
         }
     }
     /**
      * GeSHi comes by default with a font-family set to monospace, which
      * causes the font-size to be smaller than one would expect.
      * We append a CSS hack to the default GeSHi styles: specifying 'monospace'
      * twice "resets" the browser font-size specified for monospace.
      *
      * The hack is documented in MediaWiki core under
      * docs/uidesign/monospace.html and in bug 33496.
      */
     // Preserve default since we don't want to override the other style
     // properties set by geshi (padding, font-size, vertical-align etc.)
     $geshi->set_code_style('font-family: monospace, monospace;', true);
     // No need to preserve default (which is just "font-family: monospace;")
     // outputting both is unnecessary
     $geshi->set_overall_style('font-family: monospace, monospace;', false);
     return $geshi;
 }
开发者ID:rploaiza,项目名称:dbpedia-latinoamerica,代码行数:46,代码来源:SyntaxHighlight_GeSHi.class.php


注:本文中的GeSHi::set_encoding方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。