⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 geshi.php

📁 Joomla!是一套获得过多个奖项的内容管理系统(Content Management System, CMS)。Joomla!采用PHP+MySQL数据库开发
💻 PHP
📖 第 1 页 / 共 5 页
字号:
    /**     * Line number styles for fancy lines     * @var string     */    var $line_style2 = 'font-weight: bold;';    /**     * Flag for how line nubmers are displayed     * @var boolean     */    var $line_numbers = GESHI_NO_LINE_NUMBERS;    /**     * The "nth" value for fancy line highlighting     * @var int     */    var $line_nth_row = 0;    /**     * The size of tab stops     * @var int     */    var $tab_width = 8;    /**     * Default target for keyword links     * @var string     */    var $link_target = '';    /**     * The encoding to use for entity encoding     * NOTE: no longer used     * @var string     */    var $encoding = 'utf-8';    /**     * Should keywords be linked?     * @var boolean     */    var $keyword_links = true;    /**#@-*/    /**     * Creates a new GeSHi object, with source and language     *     * @param string The source code to highlight     * @param string The language to highlight the source with     * @param string The path to the language file directory. <b>This     *               is deprecated!</b> I've backported the auto path     *               detection from the 1.1.X dev branch, so now it     *               should be automatically set correctly. If you have     *               renamed the language directory however, you will     *               still need to set the path using this parameter or     *               {@link GeSHi::set_language_path()}     * @since 1.0.0     */    function GeSHi($source, $language, $path = '') {        $this->set_source($source);        $this->set_language_path($path);        $this->set_language($language);    }    /**     * Returns an error message associated with the last GeSHi operation,     * or false if no error has occured     *     * @return string|false An error message if there has been an error, else false     * @since  1.0.0     */    function error() {        if ($this->error) {            $msg = $this->error_messages[$this->error];            $debug_tpl_vars = array(                '{LANGUAGE}' => $this->language,                '{PATH}' => $this->language_path            );            foreach ($debug_tpl_vars as $tpl => $var) {                $msg = str_replace($tpl, $var, $msg);            }            return "<br /><strong>GeSHi Error:</strong> $msg (code $this->error)<br />";        }        return false;    }    /**     * Gets a human-readable language name (thanks to Simon Patterson     * for the idea :))     *     * @return string The name for the current language     * @since  1.0.2     */    function get_language_name() {        if (GESHI_ERROR_NO_SUCH_LANG == $this->error) {            return $this->language_data['LANG_NAME'] . ' (Unknown Language)';        }        return $this->language_data['LANG_NAME'];    }    /**     * Sets the source code for this object     *     * @param string The source code to highlight     * @since 1.0.0     */    function set_source($source) {        $this->source = $source;        $this->highlight_extra_lines = array();    }    /**     * Sets the language for this object     *     * @param string The name of the language to use     * @since 1.0.0     */    function set_language($language) {        $this->error = false;        $this->strict_mode = GESHI_NEVER;        $language = preg_replace('#[^a-zA-Z0-9\-_]#', '', $language);        $this->language = strtolower($language);        $file_name = $this->language_path . $this->language . '.php';        if (!is_readable($file_name)) {            $this->error = GESHI_ERROR_NO_SUCH_LANG;            return;        }        // Load the language for parsing        $this->load_language($file_name);    }    /**     * Sets the path to the directory containing the language files. Note     * that this path is relative to the directory of the script that included     * geshi.php, NOT geshi.php itself.     *     * @param string The path to the language directory     * @since 1.0.0     * @deprecated The path to the language files should now be automatically     *             detected, so this method should no longer be needed. The     *             1.1.X branch handles manual setting of the path differently     *             so this method will disappear in 1.2.0.     */    function set_language_path($path) {        if ($path) {            $this->language_path = ('/' == substr($path, strlen($path) - 1, 1)) ? $path : $path . '/';            $this->set_language($this->language);        // otherwise set_language_path has no effect        }    }    /**     * Sets the type of header to be used.     *     * If GESHI_HEADER_DIV is used, the code is surrounded in a "div".This     * means more source code but more control over tab width and line-wrapping.     * GESHI_HEADER_PRE means that a "pre" is used - less source, but less     * control. Default is GESHI_HEADER_PRE.     *     * From 1.0.7.2, you can use GESHI_HEADER_NONE to specify that no header code     * should be outputted.     *     * @param int The type of header to be used     * @since 1.0.0     */    function set_header_type($type) {        if (GESHI_HEADER_DIV != $type && GESHI_HEADER_PRE != $type && GESHI_HEADER_NONE != $type) {            $this->error = GESHI_ERROR_INVALID_HEADER_TYPE;            return;        }        $this->header_type = $type;        // Set a default overall style if the header is a <div>        if (GESHI_HEADER_DIV == $type && !$this->overall_style) {            $this->overall_style = 'font-family: monospace;';        }    }    /**     * Sets the styles for the code that will be outputted     * when this object is parsed. The style should be a     * string of valid stylesheet declarations     *     * @param string  The overall style for the outputted code block     * @param boolean Whether to merge the styles with the current styles or not     * @since 1.0.0     */    function set_overall_style($style, $preserve_defaults = false) {        if (!$preserve_defaults) {            $this->overall_style = $style;        }        else {            $this->overall_style .= $style;        }    }    /**     * Sets the overall classname for this block of code. This     * class can then be used in a stylesheet to style this object's     * output     *     * @param string The class name to use for this block of code     * @since 1.0.0     */    function set_overall_class($class) {        $this->overall_class = $class;    }    /**     * Sets the overall id for this block of code. This id can then     * be used in a stylesheet to style this object's output     *     * @param string The ID to use for this block of code     * @since 1.0.0     */    function set_overall_id($id) {        $this->overall_id = $id;    }    /**     * Sets whether CSS classes should be used to highlight the source. Default     * is off, calling this method with no arguments will turn it on     *     * @param boolean Whether to turn classes on or not     * @since 1.0.0     */    function enable_classes($flag = true) {        $this->use_classes = ($flag) ? true : false;    }    /**     * Sets the style for the actual code. This should be a string     * containing valid stylesheet declarations. If $preserve_defaults is     * true, then styles are merged with the default styles, with the     * user defined styles having priority     *     * Note: Use this method to override any style changes you made to     * the line numbers if you are using line numbers, else the line of     * code will have the same style as the line number! Consult the     * GeSHi documentation for more information about this.     *     * @param string  The style to use for actual code     * @param boolean Whether to merge the current styles with the new styles     */    function set_code_style($style, $preserve_defaults = false) {        if (!$preserve_defaults) {            $this->code_style = $style;        }        else {            $this->code_style .= $style;        }    }    /**     * Sets the styles for the line numbers.     *     * @param string The style for the line numbers that are "normal"     * @param string|boolean If a string, this is the style of the line     *        numbers that are "fancy", otherwise if boolean then this     *        defines whether the normal styles should be merged with the     *        new normal styles or not     * @param boolean If set, is the flag for whether to merge the "fancy"     *        styles with the current styles or not     * @since 1.0.2     */    function set_line_style($style1, $style2 = '', $preserve_defaults = false) {        if (is_bool($style2)) {            $preserve_defaults = $style2;            $style2 = '';        }        if (!$preserve_defaults) {            $this->line_style1 = $style1;            $this->line_style2 = $style2;        }        else {            $this->line_style1 .= $style1;            $this->line_style2 .= $style2;        }    }    /**     * Sets whether line numbers should be displayed.     *     * Valid values for the first parameter are:     *     *  - GESHI_NO_LINE_NUMBERS: Line numbers will not be displayed     *  - GESHI_NORMAL_LINE_NUMBERS: Line numbers will be displayed     *  - GESHI_FANCY_LINE_NUMBERS: Fancy line numbers will be displayed     *     * For fancy line numbers, the second parameter is used to signal which lines     * are to be fancy. For example, if the value of this parameter is 5 then every     * 5th line will be fancy.     *     * @param int How line numbers should be displayed     * @param int Defines which lines are fancy     * @since 1.0.0     */    function enable_line_numbers($flag, $nth_row = 5) {        if (GESHI_NO_LINE_NUMBERS != $flag && GESHI_NORMAL_LINE_NUMBERS != $flag            && GESHI_FANCY_LINE_NUMBERS != $flag) {            $this->error = GESHI_ERROR_INVALID_LINE_NUMBER_TYPE;        }        $this->line_numbers = $flag;        $this->line_nth_row = $nth_row;    }    /**     * Sets the style for a keyword group. If $preserve_defaults is     * true, then styles are merged with the default styles, with the     * user defined styles having priority     *     * @param int     The key of the keyword group to change the styles of     * @param string  The style to make the keywords     * @param boolean Whether to merge the new styles with the old or just     *                to overwrite them     * @since 1.0.0     */    function set_keyword_group_style($key, $style, $preserve_defaults = false) {        if (!$preserve_defaults) {            $this->language_data['STYLES']['KEYWORDS'][$key] = $style;        }        else {            $this->language_data['STYLES']['KEYWORDS'][$key] .= $style;        }    }    /**     * Turns highlighting on/off for a keyword group     *     * @param int     The key of the keyword group to turn on or off     * @param boolean Whether to turn highlighting for that group on or off     * @since 1.0.0     */    function set_keyword_group_highlighting($key, $flag = true) {        $this->lexic_permissions['KEYWORDS'][$key] = ($flag) ? true : false;    }    /**     * Sets the styles for comment groups.  If $preserve_defaults is     * true, then styles are merged with the default styles, with the     * user defined styles having priority     *     * @param int     The key of the comment group to change the styles of     * @param string  The style to make the comments     * @param boolean Whether to merge the new styles with the old or just     *                to overwrite them     * @since 1.0.0     */    function set_comments_style($key, $style, $preserve_defaults = false) {        if (!$preserve_defaults) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -