jquery.highlighter.js
上传用户:andy18
上传日期:2022-05-22
资源大小:83k
文件大小:5k
源码类别:

xml/soap/webservice

开发平台:

Java

  1. /*
  2.  * jQuery SyntaxHighlighter Plugin
  3.  * version: 1.1
  4.  * @requires jQuery v1.2.2 or later
  5.  *
  6.  * Copyright (c) 2008 AlloVince
  7.  * Examples at: http://allo.ave7.net/JQuery_with_SyntaxHighlighter
  8.  * Licensed under the MIT License:
  9.  *   http://www.opensource.org/licenses/mit-license.php
  10.  *
  11.  */
  12. if(jQuery) (function($){
  13. $.extend($, {
  14. SyntaxHighlighter: function (option) {
  15. //原有设置
  16. var highlighter_name = option.name!= undefined ?  option.name : "SyntaxHighlighter";
  17. var showGutter = option.showGutter!= undefined ? option.showGutter : true;
  18. var showControls = option.showControls!= undefined ? option.showControls : false;
  19. var collapseAll = option.collapseAll!= undefined ? option.collapseAll :false;
  20. var firstLine = option.firstLine ? option.firstLine : 1;
  21. var showColumns = option.showColumns!= undefined ? option.showColumns : false;
  22. //插件设置
  23. if(typeof(option) == "string") {
  24. var dir = option;
  25. }
  26. if(typeof(option) == "object") {
  27. var dir = option.dir;
  28. }
  29. var apptoall = option.apptoall != undefined ? option.apptoall : true;
  30. var autofind = option.autofind != undefined ? option.autofind : true;
  31. var jspath = option.jspath ? option.jspath : dir + "Scripts/";
  32. var csspath = option.csspath ? option.csspath : dir + "Styles/";
  33. var swfpath = option.swfpath  ? option.swfpath : dir + "Scripts/";
  34. var highlighter = {
  35. cpp:{
  36. alias:"c,c++",
  37. has:false
  38. },
  39. csharp:{
  40. alias:"c#,c-sharp",
  41. has:false
  42. },
  43. css:{
  44. has:false
  45. },
  46. delphi:{
  47. alias:"pascal",
  48. has:false
  49. },
  50. java:{
  51. has:false
  52. },
  53. jscript: {
  54. alias:"js,javascript",
  55. has:false
  56. },
  57. php:{
  58. has:false
  59. },
  60. python:{
  61. alias:"py",
  62. has:false
  63. },
  64. ruby:{
  65. alias:"rails,ror",
  66. has:false
  67. },
  68. sql: {
  69.     alias: "sql",
  70. has:false
  71. },
  72. vb:{
  73. alias:"vb.net",
  74. has:false
  75. },
  76. xml:{
  77. alias:"html,xhtml,xslt",
  78. has:false
  79. }
  80. }
  81. var highlighter_count = 0;
  82. if(autofind == true) {
  83. //自动寻找条件1:有class
  84. var finds = "pre[class],textarea[class]";
  85. }
  86. else {
  87. var finds = "pre[name='" + highlighter_name + "'][class],textarea[name='" + highlighter_name + "'][class]";
  88. }
  89. //计数
  90. $(finds).each(function(){
  91. var code_type = $(this).attr("class");
  92. code_type = code_type.split(":");
  93. code_type = code_type[0];
  94. if($(this).css("display") == "none") {
  95. $(this).attr("name",highlighter_name + '_lighted');
  96. //continue;
  97. }
  98. //自动寻找条件2:未定义name
  99. if ($(this).attr("name") == undefined || $(this).attr("name") == highlighter_name) {
  100. for (var types in highlighter) {
  101. if (types == code_type) {
  102. if (highlighter[types].has == false) {
  103. highlighter_count++;
  104. }
  105. highlighter[types].has = true;
  106. $(this).attr("name", highlighter_name);
  107. break;
  108. }
  109. //别名
  110. else if (highlighter[types].alias) {
  111. var alias = highlighter[types].alias.split(",");
  112. for (var i = 0; i < alias.length; i++) {
  113. if (code_type == alias[i]) {
  114. if (highlighter[types].has == false) {
  115. highlighter_count++;
  116. }
  117. highlighter[types].has = true;
  118. $(this).attr("name", highlighter_name);
  119. break;
  120. }
  121. }
  122. }
  123. }
  124. }
  125. });
  126. //首字母大写函数 From http://tech.karbassi.com/2007/10/08/javascript-ucfirst/
  127. String.prototype.ucfirst = function() {
  128.    var x = this.split(/s+/g);
  129.    for(var i = 0; i < x.length; i++) {
  130.       var parts = x[i].match(/(w)(w*)/);
  131.       x[i] = parts[1].toUpperCase() + parts[2].toLowerCase();
  132.    }
  133.    return x.join(' ');
  134. };
  135. if(highlighter_count > 0) {
  136. $.getScript(jspath + "shCore.js",function(){
  137. eval(this);
  138. $("head").append("<link rel="stylesheet" type="text/css" media="screen" href="" + csspath + "SyntaxHighlighter.css" />");
  139. var i = 0;
  140. for(var types in highlighter) {
  141. if(highlighter[types].has == true) {
  142. //文件首字母大写
  143. var jsfile = jspath + "shBrush" + types.ucfirst() + ".js";
  144. //利用JS反射动态读取所需要JS文件并执行
  145. $.getScript(jsfile,function(){
  146. eval(this);
  147. i++;
  148. if(i == highlighter_count) {
  149. //在最后一次读取后执行高亮
  150. dp.SyntaxHighlighter.ClipboardSwf = swfpath + 'clipboard.swf';
  151. if(apptoall == false) {
  152. dp.SyntaxHighlighter.HighlightAll(highlighter_name);
  153. }
  154. if(apptoall == true) {
  155. dp.SyntaxHighlighter.HighlightAll(highlighter_name,showGutter,showControls,collapseAll,firstLine,showColumns);
  156. }
  157. }
  158. });
  159. }
  160. }
  161. });
  162. }
  163. }
  164. })
  165. })(jQuery);