JavaScript版代码高亮

2019-06-04 00:24:03刘景俊

   //得到分割字符
   this._wordDelimiters= "  ,.?!;:/<>(){}[]"'rnt=+-|*%@#$^&";
   //引用字符
   this._quotation  = this.str2hashtable("",'");
   //行注释字符
   this._lineComment = "//";
   //转义字符
   this._escape  = "";
   //多行引用开始
   this._commentOn  = "/*";
   //多行引用结束
   this._commentOff = "*/";
   //忽略词
   this._ignore  = "<!--";
   //是否处理标记
   this._dealTag  = true;
   break;
  case "xml":
  default:
   //是否大小写敏感
   this._caseSensitive = true;
   //得到关键字哈希表
   this._keywords  = this.str2hashtable("!DOCTYPE,?xml,script,version,encoding");
   //得到内建对象哈希表
   this._commonObjects = this.str2hashtable("");
   //标记
   this._tags   = this.str2hashtable("",false);
   //得到分割字符
   this._wordDelimiters= "  ,.;:/<>(){}[]"'rnt=+-|*%@#$^&";
   //引用字符
   this._quotation  = this.str2hashtable("",'");
   //行注释字符
   this._lineComment = "";
   //转义字符
   this._escape  = "";
   //多行引用开始
   this._commentOn  = "<!--";
   //多行引用结束
   this._commentOff = "-->";
   //忽略词
   this._ignore  = "<!--";
   //是否处理标记
   this._dealTag  = true;
   break;
 }

 this.highlight = function() {
  var codeArr = new Array();
  var word_index = 0;
  var htmlTxt = new Array();

  //得到分割字符数组(分词)
  for (var i = 0; i < this._codetxt.length; i++) {
   if (this._wordDelimiters.indexOf(this._codetxt.charAt(i)) == -1) {  //找不到关键字
    if (codeArr[word_index] == null || typeof(codeArr[word_index]) == 'undefined') {
     codeArr[word_index] = "";
    }
    codeArr[word_index] += this._codetxt.charAt(i);
   } else {
    if (typeof(codeArr[word_index]) != 'undefined' && codeArr[word_index].length > 0)
     word_index++;