shbrushxml.js

来自「在线编辑器」· JavaScript 代码 · 共 91 行

JS
91
字号
/** * Code Syntax Highlighter. * Version 1.5.2 * Copyright (C) 2004-2008 Alex Gorbatchev * http://www.dreamprojections.com/syntaxhighlighter/ * *  This program is free software: you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation, version 3 of the License. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program.  If not, see <http://www.gnu.org/licenses/>. */dp.sh.Brushes.Xml = function() {        // this.CssClass = 'dp-xml';        // this.Style =    '.dp-xml .cdata { color: #ff1493; }' +        //                                 '.dp-xml .tag, .dp-xml .tag-name { color: #069; font-weight: bold; }' +        //                                 '.dp-xml .attribute { color: red; }' +        //                                 '.dp-xml .attribute-value { color: blue; }';};dp.sh.Brushes.Xml.prototype     = new dp.sh.Highlighter();dp.sh.Brushes.Xml.Aliases       = ['xml', 'xhtml', 'xslt', 'html', 'xhtml'];dp.sh.Brushes.Xml.prototype.ProcessRegexList = function(){        function push(array, value)        {                array[array.length] = value;        }                /* If only there was a way to get index of a group within a match, the whole XML           could be matched with the expression looking something like that:                   (<!\[CDATA\[\s*.*\s*\]\]>)           | (<!--\s*.*\s*?-->)           | (<)*(\w+)*\s*(\w+)\s*=\s*(".*?"|'.*?'|\w+)(/*>)*           | (</?)(.*?)(/?>)        */        var index       = 0;        var match       = null;        var regex       = null;        // Match CDATA in the following format <![ ... [ ... ]]>        // (\&lt;|<)\!\[[\w\s]*?\[(.|\s)*?\]\](\&gt;|>)        this.GetMatches(new RegExp('(\&lt;|<)\\!\\[[\\w\\s]*?\\[(.|\\s)*?\\]\\](\&gt;|>)', 'gm'), 'cdata');        // Match comments        // (\&lt;|<)!--\s*.*?\s*--(\&gt;|>)        this.GetMatches(new RegExp('(\&lt;|<)!--\\s*.*?\\s*--(\&gt;|>)', 'gm'), 'comments');        // Match attributes and their values        // (:|\w+)\s*=\s*(".*?"|\'.*?\'|\w+)*        regex = new RegExp('([:\\w-\.]+)\\s*=\\s*(".*?"|\'.*?\'|\\w+)*|(\\w+)', 'gm'); // Thanks to Tomi Blinnikka of Yahoo! for fixing namespaces in attributes        while((match = regex.exec(this.code)) != null)        {                if (match[1] == null) {					continue;                }                        push(this.matches, new dp.sh.Match(match[1], match.index, 'attribute'));                        // if xml is invalid and attribute has no property value, ignore it                     if(match[2] != undefined)                {                        push(this.matches, new dp.sh.Match(match[2], match.index + match[0].indexOf(match[2]), 'attribute-value'));                }        }        // Match opening and closing tag brackets        // (\&lt;|<)/*\?*(?!\!)|/*\?*(\&gt;|>)		// TODO: Dion found this to be killing syntax highlighting. Tags aren't styled with this commented out//        this.GetMatches(new RegExp('(\&lt;|<)/*\\?*(?!\\!)|/*\\?*(\&gt;|>)', 'gm'), 'tag');        // Match tag names        // (\&lt;|<)/*\?*\s*(\w+)        regex = new RegExp('(?:\&lt;|<)/*\\?*\\s*([:\\w-\.]+)', 'gm');        while((match = regex.exec(this.code)) != null)        {                push(this.matches, new dp.sh.Match(match[1], match.index + match[0].indexOf(match[1]), 'tag-name'));        }}

⌨️ 快捷键说明

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