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 <![ ... [ ... ]]> // (\<|<)\!\[[\w\s]*?\[(.|\s)*?\]\](\>|>) this.GetMatches(new RegExp('(\<|<)\\!\\[[\\w\\s]*?\\[(.|\\s)*?\\]\\](\>|>)', 'gm'), 'cdata'); // Match comments // (\<|<)!--\s*.*?\s*--(\>|>) this.GetMatches(new RegExp('(\<|<)!--\\s*.*?\\s*--(\>|>)', '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 // (\<|<)/*\?*(?!\!)|/*\?*(\>|>) // TODO: Dion found this to be killing syntax highlighting. Tags aren't styled with this commented out// this.GetMatches(new RegExp('(\<|<)/*\\?*(?!\\!)|/*\\?*(\>|>)', 'gm'), 'tag'); // Match tag names // (\<|<)/*\?*\s*(\w+) regex = new RegExp('(?:\<|<)/*\\?*\\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 + -
显示快捷键?