Changeset 1499

Show
Ignore:
Timestamp:
11/14/07 18:55:52 (6 years ago)
Author:
cho45
Message:

websites/coderepos.org/trac/share/js/TracUtils.js:

more smart code

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • websites/coderepos.org/trac/share/js/TracUtils.js

    r1493 r1499  
    9090        var exp = document.createExpression(exp, function (prefix) { 
    9191                var o = document.createNSResolver(context)(prefix); 
    92                 return o ? o : (document.contentType == "application/xhtml+xml") ? "http://www.w3.org/1999/xhtml" : ""; 
     92                if (o) return o; 
     93                return (document.contentType == "application/xhtml+xml") ? "http://www.w3.org/1999/xhtml" : ""; 
    9394        }); 
    9495 
    95         if (type) { 
    96                 switch (type) { 
    97                         case String: 
    98                                 return exp.evaluate( 
    99                                         context, 
    100                                         XPathResult.STRING_TYPE, 
    101                                         null 
    102                                 ).stringValue; 
    103                         case Number: 
    104                                 return exp.evaluate( 
    105                                         context, 
    106                                         XPathResult.NUMBER_TYPE, 
    107                                         null 
    108                                 ).numberValue; 
    109                         case Boolean: 
    110                                 return exp.evaluate( 
    111                                         context, 
    112                                         XPathResult.BOOLEAN_TYPE, 
    113                                         null 
    114                                 ).booleanValue; 
    115                         case Array: 
    116                                 var result = exp.evaluate( 
    117                                         context, 
    118                                         XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, 
    119                                         null 
    120                                 ); 
    121                                 var ret = []; 
    122                                 for (var i = 0, len = result.snapshotLength; i < len; i++) { 
    123                                         ret.push(result.snapshotItem(i)); 
     96        switch (type) { 
     97                case String: 
     98                        return exp.evaluate( 
     99                                context, 
     100                                XPathResult.STRING_TYPE, 
     101                                null 
     102                        ).stringValue; 
     103                case Number: 
     104                        return exp.evaluate( 
     105                                context, 
     106                                XPathResult.NUMBER_TYPE, 
     107                                null 
     108                        ).numberValue; 
     109                case Boolean: 
     110                        return exp.evaluate( 
     111                                context, 
     112                                XPathResult.BOOLEAN_TYPE, 
     113                                null 
     114                        ).booleanValue; 
     115                case Array: 
     116                        var result = exp.evaluate( 
     117                                context, 
     118                                XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, 
     119                                null 
     120                        ); 
     121                        var ret = []; 
     122                        for (var i = 0, len = result.snapshotLength; i < len; i++) { 
     123                                ret.push(result.snapshotItem(i)); 
     124                        } 
     125                        return ret; 
     126                case undefined: 
     127                        var result = exp.evaluate(context, XPathResult.ANY_TYPE, null); 
     128                        switch (result.resultType) { 
     129                                case XPathResult.STRING_TYPE : return result.stringValue; 
     130                                case XPathResult.NUMBER_TYPE : return result.numberValue; 
     131                                case XPathResult.BOOLEAN_TYPE: return result.booleanValue; 
     132                                case XPathResult.UNORDERED_NODE_ITERATOR_TYPE: { 
     133                                        // not ensure the order. 
     134                                        var ret = []; 
     135                                        var i = null; 
     136                                        while (i = result.iterateNext()) { 
     137                                                ret.push(i); 
     138                                        } 
     139                                        return ret; 
    124140                                } 
    125                                 return ret; 
    126                 } 
    127         } else { 
    128                 var result = exp.evaluate(context, XPathResult.ANY_TYPE, null); 
    129                 switch (result.resultType) { 
    130                         case XPathResult.STRING_TYPE : return result.stringValue; 
    131                         case XPathResult.NUMBER_TYPE : return result.numberValue; 
    132                         case XPathResult.BOOLEAN_TYPE: return result.booleanValue; 
    133                         case XPathResult.UNORDERED_NODE_ITERATOR_TYPE: { 
    134                                 // not ensure the order. 
    135                                 var ret = []; 
    136                                 var i = null; 
    137                                 while (i = result.iterateNext()) { 
    138                                         ret.push(i); 
    139                                 } 
    140                                 return ret; 
    141141                        } 
    142                 } 
    143                 return null; 
     142                        return null; 
     143                default: 
     144                        throw(TypeError("$X: specified type is not valid type.")); 
    144145        } 
    145146}