~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to www/media/common/edit_area/reg_syntax.js

  • Committer: mattgiuca
  • Date: 2008-01-15 06:17:23 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:233
Added a shaky implementation of EditArea as the text editor.
Installed the EditArea files in media/common.
FileBrowser app includes EditArea.
editor.js calls the appropriate methods to set up an EditArea and the Save
button saves its contents.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
        EditAreaLoader.prototype.get_regexp= function(text_array){
 
2
                //res="( |=|\\n|\\r|\\[|\\(|µ|)(";
 
3
                res="(\\b)(";
 
4
                for(i=0; i<text_array.length; i++){
 
5
                        if(i>0)
 
6
                                res+="|";
 
7
                        //res+="("+ tab_text[i] +")";
 
8
                        //res+=tab_text[i].replace(/(\.|\?|\*|\+|\\|\(|\)|\[|\]|\{|\})/g, "\\$1");
 
9
                        res+=this.get_escaped_regexp(text_array[i]);
 
10
                }
 
11
                //res+=")( |\\.|:|\\{|\\(|\\)|\\[|\\]|\'|\"|\\r|\\n|\\t|$)";
 
12
                res+=")(\\b)";
 
13
                reg= new RegExp(res);
 
14
                
 
15
                return res;
 
16
        };
 
17
        
 
18
        
 
19
        EditAreaLoader.prototype.get_escaped_regexp= function(str){
 
20
                return str.replace(/(\.|\?|\*|\+|\\|\(|\)|\[|\]|\}|\{|\$|\^|\|)/g, "\\$1");
 
21
        };
 
22
        
 
23
        EditAreaLoader.prototype.init_syntax_regexp= function(){
 
24
                var lang_style= new Object();   
 
25
                for(var lang in this.load_syntax){
 
26
                        if(!this.syntax[lang])  // init the regexp if not already initialized
 
27
                        {
 
28
                                this.syntax[lang]= new Object();
 
29
                                this.syntax[lang]["keywords_reg_exp"]= new Object();
 
30
                                this.keywords_reg_exp_nb=0;
 
31
                        
 
32
                                if(this.load_syntax[lang]['KEYWORDS']){
 
33
                                        param="g";
 
34
                                        if(this.load_syntax[lang]['KEYWORD_CASE_SENSITIVE']===false)
 
35
                                                param+="i";
 
36
                                        for(var i in this.load_syntax[lang]['KEYWORDS']){
 
37
                                                if(typeof(this.load_syntax[lang]['KEYWORDS'][i])=="function") continue;
 
38
                                                this.syntax[lang]["keywords_reg_exp"][i]= new RegExp(this.get_regexp( this.load_syntax[lang]['KEYWORDS'][i] ), param);
 
39
                                                this.keywords_reg_exp_nb++;
 
40
                                        }
 
41
                                }
 
42
                                
 
43
                                if(this.load_syntax[lang]['OPERATORS']){
 
44
                                        var str="";
 
45
                                        var nb=0;
 
46
                                        for(var i in this.load_syntax[lang]['OPERATORS']){
 
47
                                                if(typeof(this.load_syntax[lang]['OPERATORS'][i])=="function") continue;
 
48
                                                if(nb>0)
 
49
                                                        str+="|";                               
 
50
                                                str+=this.get_escaped_regexp(this.load_syntax[lang]['OPERATORS'][i]);
 
51
                                                nb++;
 
52
                                        }
 
53
                                        if(str.length>0)
 
54
                                                this.syntax[lang]["operators_reg_exp"]= new RegExp("("+str+")","g");
 
55
                                }
 
56
                                
 
57
                                if(this.load_syntax[lang]['DELIMITERS']){
 
58
                                        var str="";
 
59
                                        var nb=0;
 
60
                                        for(var i in this.load_syntax[lang]['DELIMITERS']){
 
61
                                                if(typeof(this.load_syntax[lang]['DELIMITERS'][i])=="function") continue;
 
62
                                                if(nb>0)
 
63
                                                        str+="|";
 
64
                                                str+=this.get_escaped_regexp(this.load_syntax[lang]['DELIMITERS'][i]);
 
65
                                                nb++;
 
66
                                        }
 
67
                                        if(str.length>0)
 
68
                                                this.syntax[lang]["delimiters_reg_exp"]= new RegExp("("+str+")","g");
 
69
                                }
 
70
                                
 
71
                                
 
72
                //              /(("(\\"|[^"])*"?)|('(\\'|[^'])*'?)|(//(.|\r|\t)*\n)|(/\*(.|\n|\r|\t)*\*/)|(<!--(.|\n|\r|\t)*-->))/gi
 
73
                                var syntax_trace=new Array();
 
74
                                
 
75
                //              /("(?:[^"\\]*(\\\\)*(\\"?)?)*("|$))/g
 
76
                                
 
77
                                this.syntax[lang]["quotes"]=new Object();
 
78
                                var quote_tab= new Array();
 
79
                                if(this.load_syntax[lang]['QUOTEMARKS']){
 
80
                                        for(var i in this.load_syntax[lang]['QUOTEMARKS']){     
 
81
                                                if(typeof(this.load_syntax[lang]['QUOTEMARKS'][i])=="function") continue;                       
 
82
                                                var x=this.get_escaped_regexp(this.load_syntax[lang]['QUOTEMARKS'][i]);
 
83
                                                this.syntax[lang]["quotes"][x]=x;
 
84
                                                //quote_tab[quote_tab.length]="("+x+"(?:\\\\"+x+"|[^"+x+"])*("+x+"|$))";
 
85
                                                quote_tab[quote_tab.length]="("+x+"(?:[^"+x+"\\\\]*(\\\\\\\\)*(\\\\"+x+"?)?)*("+x+"|$))";
 
86
                                                syntax_trace.push(x);                   
 
87
                                        }                       
 
88
                                }
 
89
                                                
 
90
                                this.syntax[lang]["comments"]=new Object();
 
91
                                if(this.load_syntax[lang]['COMMENT_SINGLE']){
 
92
                                        for(var i in this.load_syntax[lang]['COMMENT_SINGLE']){ 
 
93
                                                if(typeof(this.load_syntax[lang]['COMMENT_SINGLE'][i])=="function") continue;                                           
 
94
                                                var x=this.get_escaped_regexp(this.load_syntax[lang]['COMMENT_SINGLE'][i]);
 
95
                                                quote_tab[quote_tab.length]="("+x+"(.|\\r|\\t)*(\\n|$))";
 
96
                                                syntax_trace.push(x);
 
97
                                                this.syntax[lang]["comments"][x]="\n";
 
98
                                        }                       
 
99
                                }               
 
100
                                // (/\*(.|[\r\n])*?\*/)
 
101
                                if(this.load_syntax[lang]['COMMENT_MULTI']){
 
102
                                        for(var i in this.load_syntax[lang]['COMMENT_MULTI']){
 
103
                                                if(typeof(this.load_syntax[lang]['COMMENT_MULTI'][i])=="function") continue;                                                    
 
104
                                                var start=this.get_escaped_regexp(i);
 
105
                                                var end=this.get_escaped_regexp(this.load_syntax[lang]['COMMENT_MULTI'][i]);
 
106
                                                quote_tab[quote_tab.length]="("+start+"(.|\\n|\\r)*?("+end+"|$))";
 
107
                                                syntax_trace.push(start);
 
108
                                                syntax_trace.push(end);
 
109
                                                this.syntax[lang]["comments"][i]=this.load_syntax[lang]['COMMENT_MULTI'][i];
 
110
                                        }                       
 
111
                                }               
 
112
                                if(quote_tab.length>0)
 
113
                                        this.syntax[lang]["comment_or_quote_reg_exp"]= new RegExp("("+quote_tab.join("|")+")","gi");
 
114
                                
 
115
                                if(syntax_trace.length>0) //   /((.|\n)*?)(\\*("|'|\/\*|\*\/|\/\/|$))/g
 
116
                                        this.syntax[lang]["syntax_trace_regexp"]= new RegExp("((.|\n)*?)(\\\\*("+ syntax_trace.join("|") +"|$))", "gmi");
 
117
                                
 
118
                                if(this.load_syntax[lang]['SCRIPT_DELIMITERS']){
 
119
                                        this.syntax[lang]["script_delimiters"]= new Object();
 
120
                                        for(var i in this.load_syntax[lang]['SCRIPT_DELIMITERS']){
 
121
                                                if(typeof(this.load_syntax[lang]['SCRIPT_DELIMITERS'][i])=="function") continue;                                                        
 
122
                                                this.syntax[lang]["script_delimiters"][i]= this.load_syntax[lang]['SCRIPT_DELIMITERS'];
 
123
                                        }                       
 
124
                                }
 
125
                                
 
126
                                this.syntax[lang]["custom_regexp"]= new Object();
 
127
                                if(this.load_syntax[lang]['REGEXPS']){
 
128
                                        for(var i in this.load_syntax[lang]['REGEXPS']){
 
129
                                                if(typeof(this.load_syntax[lang]['REGEXPS'][i])=="function") continue;
 
130
                                                var val= this.load_syntax[lang]['REGEXPS'][i];
 
131
                                                if(!this.syntax[lang]["custom_regexp"][val['execute']])
 
132
                                                        this.syntax[lang]["custom_regexp"][val['execute']]= new Object();
 
133
                                                this.syntax[lang]["custom_regexp"][val['execute']][i]={'regexp' : new RegExp(val['search'], val['modifiers'])
 
134
                                                                                                                                                        , 'class' : val['class']};
 
135
                                        }
 
136
                                }
 
137
                                
 
138
                                if(this.load_syntax[lang]['STYLES']){                                                   
 
139
                                        lang_style[lang]= new Object();
 
140
                                        for(var i in this.load_syntax[lang]['STYLES']){
 
141
                                                if(typeof(this.load_syntax[lang]['STYLES'][i])=="function") continue;
 
142
                                                if(typeof(this.load_syntax[lang]['STYLES'][i]) != "string"){
 
143
                                                        for(var j in this.load_syntax[lang]['STYLES'][i]){                                                      
 
144
                                                                lang_style[lang][j]= this.load_syntax[lang]['STYLES'][i][j];
 
145
                                                        }
 
146
                                                }else{
 
147
                                                        lang_style[lang][i]= this.load_syntax[lang]['STYLES'][i];
 
148
                                                }
 
149
                                        }
 
150
                                }
 
151
                                // build style string
 
152
                                var style="";           
 
153
                                for(var i in lang_style[lang]){
 
154
                                        if(lang_style[lang][i].length>0){
 
155
                                                style+= "."+ lang +" ."+ i.toLowerCase() +" span{"+lang_style[lang][i]+"}\n";
 
156
                                                style+= "."+ lang +" ."+ i.toLowerCase() +"{"+lang_style[lang][i]+"}\n";                                
 
157
                                        }
 
158
                                }
 
159
                                this.syntax[lang]["styles"]=style;
 
160
                        }
 
161
                }                               
 
162
        };
 
163
        
 
164
        editAreaLoader.waiting_loading["reg_syntax.js"]= "loaded";