Changeset 14184

Show
Ignore:
Timestamp:
06/26/08 19:08:40 (5 months ago)
Author:
peller
Message:

Some code cleanup. Refs #7055

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • dojox/trunk/string/BidiComplex.js

    r14159 r14184  
    88//              in both static text and dynamic text during user input.  
    99 
    10 dojox.string.BidiComplex.attachInput = function(/*Object*/field,/*String*/pattern){ 
     10dojox.string.BidiComplex.attachInput = function(/*DOMNode*/field, /*String*/pattern){ 
    1111        // summary: 
    12         //              Add Object listeners to the Text contianer Object for Dynamic Complex text  
    13         // field: Object reference 
    14         // pattern: Complex Expression Pattern type  
    15         // example: 
    16         //              dojo.require("dojox.string.BidiComplex"); 
    17         //              var obj = document.getElementById("com"); 
    18         //              dojox.string.BidiComplex.attachInput(obj,"FILE_PATH"); 
    19          
     12        //              Attach key listeners to the INPUT field to accomodate dynamic complex BiDi expressions  
     13        // field: INPUT DOM node 
     14        // pattern: Complex Expression Pattern type. One of "FILE_PATH", "URL", "EMAIL", "XPATH" 
     15 
    2016        dojox.string.BidiComplex._ce_type = pattern; //FIXME: shared ref 
    2117        field.alt = dojox.string.BidiComplex._ce_type; 
     
    3228        } 
    3329 
    34         field.oncut=dojox.string.BidiComplex._fOnCut; 
    35         field.oncopy=dojox.string.BidiComplex._fOnCopy; 
     30        field.oncut = dojox.string.BidiComplex._fOnCut; 
     31        field.oncopy = dojox.string.BidiComplex._fOnCopy; 
    3632 
    3733        field.value = dojox.string.BidiComplex._insertMarkers(field.value, field.alt);     
     
    4743}; 
    4844 
    49 (function(){ 
    50 // Unicode Bidirectional Characters 
    51 var LRO = '\u202D', 
    52         RLO = '\u202E', 
    53         PDF = '\u202C', 
    54         LRE = '\u202A', 
    55         RLE = '\u202B', 
    56         LRM = '\u200E', 
    57         RLM = '\u200F'; 
    58  
    5945dojox.string.BidiComplex.stripSpecialCharacters = function(str){ 
    60                 // summary: 
    61                 //              removes all Unicode directional markers from the string 
    62                 // Example : 
    63                 //              var originalString = dojox.string.BidiComplex.stripSpecialCharacters(displayString); 
    64                 //        
    65         if(!str){ 
    66                 return str;         
    67         } 
    68  
    69         var buf = "", character; 
    70         for(var i = 0; i < str.length; i++){ // FIXME: dojo.forEach 
    71                 character = str.charAt(i); 
    72                 if((character != LRE) && (character != RLE)  
    73                         && (character != LRM) && (character != RLM) 
    74                         && (character != LRO) && (character != RLO) && 
    75                         (character != PDF)){ 
    76                         buf+=character; 
    77                 } 
    78         } 
    79  
    80         return buf;        
     46        // summary: 
     47        //              removes all Unicode directional markers from the string 
     48 
     49        return str.replace(/[\u200E\u200F\u202A-\u202E]/g, ""); // String 
    8150}; 
    8251 
     
    9261         
    9362dojox.string.BidiComplex._ceKeyDown = function(event){ 
     63//FIXME: global references: obj and str0 
    9464        obj = dojo.isIE ? event.srcElement : event.target;         
    9565        str0 = obj.value; 
     
    9767                         
    9868dojox.string.BidiComplex._ceKeyUp = function(event){ 
     69        var LRM = '\u200E'; 
     70        //FIXME: str0 global reference 
    9971        obj = dojo.isIE ? event.srcElement : event.target; 
    10072        str1 = obj.value; 
     
    165137 
    166138                if((ieKey == dojo.keys.DELETE) && (str2.charAt(cursorEnd)==LRM)){ 
    167                         obj.value = str2.substring(0,cursorEnd) + str2.substring(cursorEnd+2, str2.length); 
     139                        obj.value = str2.substring(0, cursorEnd) + str2.substring(cursorEnd+2, str2.length); 
    168140                } 
    169141 
    170142                if(ieKey == dojo.keys.DELETE){ 
    171143                        setSelectedRange(obj,cursorStart,cursorEnd); 
    172                 }else if(ieKey == dojo.keys.BACKSPACE){  
    173                                 if(str0.charAt(cursorEnd-1)==LRM){ 
    174                                         dojox.string.BidiComplex._setSelectedRange(obj, cursorStart - 1, cursorEnd - 1); 
    175                                 }else{ 
    176                                         dojox.string.BidiComplex._setSelectedRange(obj, cursorStart, cursorEnd); 
    177                                 } 
     144                }else if(ieKey == dojo.keys.BACKSPACE){ 
     145                        //FIXME: str0 global reference 
     146                        if(str0.charAt(cursorEnd-1)==LRM){ 
     147                                dojox.string.BidiComplex._setSelectedRange(obj, cursorStart - 1, cursorEnd - 1); 
     148                        }else{ 
     149                                dojox.string.BidiComplex._setSelectedRange(obj, cursorStart, cursorEnd); 
     150                        } 
    178151                }else if(obj.value.charAt(cursorEnd) != LRM){ 
    179152                        dojox.string.BidiComplex._setSelectedRange(obj, cursorStart + 1, cursorEnd + 1); 
     
    234207 
    235208dojox.string.BidiComplex._getCaretPos = function(event,obj){ 
    236  
    237209        if(!dojo.isIE){ 
    238210                return [event.target.selectionStart, event.target.selectionEnd];     
     
    395367        dojox.string.BidiComplex._segmentsPointers = dojox.string.BidiComplex._parse(str, pattern); // FIXME: shared ref 
    396368         
    397         var buf = LRE + str; 
     369        var buf = '\u202A'/*LRE*/ + str; 
    398370        var shift = 1;                                            
    399371        var n; 
     
    403375                        preStr = buf.substring(0, n + shift); 
    404376                        postStr = buf.substring(n + shift, buf.length); 
    405                         buf = preStr + LRM + postStr; 
     377                        buf = preStr + '\u200E'/*LRM*/ + postStr; 
    406378                        shift++; 
    407379                }                                   
     
    409381        return buf;         
    410382}; 
    411 })();