Вход Регистрация
Файл: upload/static/jscript/editarea/reg_syntax.js
Строк: 267
<?php
EditAreaLoader
.prototype.get_regexp= function(text_array){
        
//res="( |=|\n|\r|\[|\(|µ|)(";
        
res="(\b)(";
        for(
i=0i<text_array.lengthi++){
            if(
i>0)
                
res+="|";
            
//res+="("+ tab_text[i] +")";
            //res+=tab_text[i].replace(/(.|?|*|+|\|(|)|[|]|{|})/g, "\$1");
            
res+=this.get_escaped_regexp(text_array[i]);
        }
        
//res+=")( |\.|:|\{|\(|\)|\[|\]|'|"|\r|\n|\t|$)";
        
res+=")(\b)";
        
reg= new RegExp(res);
        
        return 
res;
    };
    
    
    
EditAreaLoader.prototype.get_escaped_regexp= function(str){
        return 
str.toString().replace(/(.|?|*|+|\|(|)|[|]|}|{|$|^||)/g"\$1");
    };
    
    
EditAreaLoader.prototype.init_syntax_regexp= function(){
        var 
lang_style= {};    
        for(var 
lang in this.load_syntax){
            if(!
this.syntax[lang])    // init the regexp if not already initialized
            
{
                
this.syntax[lang]= {};
                
this.syntax[lang]["keywords_reg_exp"]= {};
                
this.keywords_reg_exp_nb=0;
            
                if(
this.load_syntax[lang]['KEYWORDS']){
                    
param="g";
                    if(
this.load_syntax[lang]['KEYWORD_CASE_SENSITIVE']===false)
                        
param+="i";
                    for(var 
i in this.load_syntax[lang]['KEYWORDS']){
                        if(
typeof(this.load_syntax[lang]['KEYWORDS'][i])=="function") continue;
                        
this.syntax[lang]["keywords_reg_exp"][i]= new RegExp(this.get_regexpthis.load_syntax[lang]['KEYWORDS'][i] ), param);
                        
this.keywords_reg_exp_nb++;
                    }
                }
                
                if(
this.load_syntax[lang]['OPERATORS']){
                    var 
str="";
                    var 
nb=0;
                    for(var 
i in this.load_syntax[lang]['OPERATORS']){
                        if(
typeof(this.load_syntax[lang]['OPERATORS'][i])=="function") continue;
                        if(
nb>0)
                            
str+="|";                
                        
str+=this.get_escaped_regexp(this.load_syntax[lang]['OPERATORS'][i]);
                        
nb++;
                    }
                    if(
str.length>0)
                        
this.syntax[lang]["operators_reg_exp"]= new RegExp("("+str+")","g");
                }
                
                if(
this.load_syntax[lang]['DELIMITERS']){
                    var 
str="";
                    var 
nb=0;
                    for(var 
i in this.load_syntax[lang]['DELIMITERS']){
                        if(
typeof(this.load_syntax[lang]['DELIMITERS'][i])=="function") continue;
                        if(
nb>0)
                            
str+="|";
                        
str+=this.get_escaped_regexp(this.load_syntax[lang]['DELIMITERS'][i]);
                        
nb++;
                    }
                    if(
str.length>0)
                        
this.syntax[lang]["delimiters_reg_exp"]= new RegExp("("+str+")","g");
                }
                
                
        
//        /(("(\"|[^"])*"?)|('(\'|[^'])*'?)|(//(.|r|t)*n)|(/*(.|n|r|t)**/)|(<!--(.|n|r|t)*-->))/gi
                
var syntax_trace=[];
                
        
//        /("(?:[^"\]*(\\)*(\"?)?)*("|$))/g
                
                
this.syntax[lang]["quotes"]={};
                var 
quote_tab= [];
                if(
this.load_syntax[lang]['QUOTEMARKS']){
                    for(var 
i in this.load_syntax[lang]['QUOTEMARKS']){    
                        if(
typeof(this.load_syntax[lang]['QUOTEMARKS'][i])=="function") continue;            
                        var 
x=this.get_escaped_regexp(this.load_syntax[lang]['QUOTEMARKS'][i]);
                        
this.syntax[lang]["quotes"][x]=x;
                        
//quote_tab[quote_tab.length]="("+x+"(?:\\"+x+"|[^"+x+"])*("+x+"|$))";
                        //previous working : quote_tab[quote_tab.length]="("+x+"(?:[^"+x+"\\]*(\\\\)*(\\"+x+"?)?)*("+x+"|$))";
                        
quote_tab[quote_tab.length]="("+"(\\.|[^"+"])*(?:"+"|$))";
                        
                        
syntax_trace.push(x);            
                    }            
                }
                        
                
this.syntax[lang]["comments"]={};
                if(
this.load_syntax[lang]['COMMENT_SINGLE']){
                    for(var 
i in this.load_syntax[lang]['COMMENT_SINGLE']){    
                        if(
typeof(this.load_syntax[lang]['COMMENT_SINGLE'][i])=="function") continue;                        
                        var 
x=this.get_escaped_regexp(this.load_syntax[lang]['COMMENT_SINGLE'][i]);
                        
quote_tab[quote_tab.length]="("+x+"(.|\r|\t)*(\n|$))";
                        
syntax_trace.push(x);
                        
this.syntax[lang]["comments"][x]="n";
                    }            
                }        
                
// (/*(.|[rn])*?*/)
                
if(this.load_syntax[lang]['COMMENT_MULTI']){
                    for(var 
i in this.load_syntax[lang]['COMMENT_MULTI']){
                        if(
typeof(this.load_syntax[lang]['COMMENT_MULTI'][i])=="function") continue;                            
                        var 
start=this.get_escaped_regexp(i);
                        var 
end=this.get_escaped_regexp(this.load_syntax[lang]['COMMENT_MULTI'][i]);
                        
quote_tab[quote_tab.length]="("+start+"(.|\n|\r)*?("+end+"|$))";
                        
syntax_trace.push(start);
                        
syntax_trace.push(end);
                        
this.syntax[lang]["comments"][i]=this.load_syntax[lang]['COMMENT_MULTI'][i];
                    }            
                }        
                if(
quote_tab.length>0)
                    
this.syntax[lang]["comment_or_quote_reg_exp"]= new RegExp("("+quote_tab.join("|")+")","gi");
                
                if(
syntax_trace.length>0//   /((.|n)*?)(\*("|'|/*|*/|//|$))/g
                    
this.syntax[lang]["syntax_trace_regexp"]= new RegExp("((.|n)*?)(\\*("syntax_trace.join("|") +"|$))""gmi");
                
                if(
this.load_syntax[lang]['SCRIPT_DELIMITERS']){
                    
this.syntax[lang]["script_delimiters"]= {};
                    for(var 
i in this.load_syntax[lang]['SCRIPT_DELIMITERS']){
                        if(
typeof(this.load_syntax[lang]['SCRIPT_DELIMITERS'][i])=="function") continue;                            
                        
this.syntax[lang]["script_delimiters"][i]= this.load_syntax[lang]['SCRIPT_DELIMITERS'];
                    }            
                }
                
                
this.syntax[lang]["custom_regexp"]= {};
                if(
this.load_syntax[lang]['REGEXPS']){
                    for(var 
i in this.load_syntax[lang]['REGEXPS']){
                        if(
typeof(this.load_syntax[lang]['REGEXPS'][i])=="function") continue;
                        var 
valthis.load_syntax[lang]['REGEXPS'][i];
                        if(!
this.syntax[lang]["custom_regexp"][val['execute']])
                            
this.syntax[lang]["custom_regexp"][val['execute']]= {};
                        
this.syntax[lang]["custom_regexp"][val['execute']][i]={'regexp' : new RegExp(val['search'], val['modifiers'])
                                                                            , 
'class' val['class']};
                    }
                }
                
                if(
this.load_syntax[lang]['STYLES']){                            
                    
lang_style[lang]= {};
                    for(var 
i in this.load_syntax[lang]['STYLES']){
                        if(
typeof(this.load_syntax[lang]['STYLES'][i])=="function") continue;
                        if(
typeof(this.load_syntax[lang]['STYLES'][i]) != "string"){
                            for(var 
j in this.load_syntax[lang]['STYLES'][i]){                            
                                
lang_style[lang][j]= this.load_syntax[lang]['STYLES'][i][j];
                            }
                        }else{
                            
lang_style[lang][i]= this.load_syntax[lang]['STYLES'][i];
                        }
                    }
                }
                
// build style string
                
var style="";        
                for(var 
i in lang_style[lang]){
                    if(
lang_style[lang][i].length>0){
                        
style+= "."lang +" ."i.toLowerCase() +" span{"+lang_style[lang][i]+"}n";
                        
style+= "."lang +" ."i.toLowerCase() +"{"+lang_style[lang][i]+"}n";                
                    }
                }
                
this.syntax[lang]["styles"]=style;
            }
        }                
    };
    
    
editAreaLoader.waiting_loading["reg_syntax.js"]= "loaded";
?>
Онлайн: 0
Реклама