Changeset 38722

Show
Ignore:
Timestamp:
12/13/10 17:27:55 (3 years ago)
Author:
amachang
Message:

Fix FilterExpr? and PathExpr? bug And 0.1.12 released.

Location:
lang/javascript/javascript-xpath/trunk
Files:
3 added
6 modified

Legend:

Unmodified
Added
Removed
  • lang/javascript/javascript-xpath/trunk/release/javascript-xpath-latest-cmp.js

    r14924 r38722  
    4040for(var n in Ga)Ha[n]=Ga[n];Ha.index=0;return Ha;};Ea.prototype.regs={token:/\$?(?:(?![0-9-])[\w-]+:)?(?![0-9-])[\w-]+|\/\/|\.\.|::|\d+(?:\.\d*)?|\.\d+|"[^"]*"|'[^']*'|[!<>]=|(?![0-9-])[\w-]+:\*|\s+|./g,strip:/^\s/};Ea.prototype.peek=function(i){return this[this.index+(i||0)];};Ea.prototype.next=function(){return this[this.index++];};Ea.prototype.back=function(){this.index--;};Ea.prototype.empty=function(){return this.length<=this.index;};var Ia=function(Ja,Ka,La){this.node=Ja;this.position=Ka||1;this.last=La||1;};var Ma=function(){};Ma.prototype.number=function(Na){var Oa=this.evaluate(Na);if(Oa.isNodeSet)return Oa.number();return+Oa;};Ma.prototype.string=function(Pa){var Qa=this.evaluate(Pa);if(Qa.isNodeSet)return Qa.string();return ''+Qa;};Ma.prototype.bool=function(Ra){var Sa=this.evaluate(Ra);if(Sa.isNodeSet)return Sa.bool();return!!Sa;};var Ta=function(){};Ta.parsePredicates=function(Ua,Va){while(Ua.peek()=='['){Ua.next();if(Ua.empty()){throw Error('missing predicate expr');} 
    4141var Wa=oa.parse(Ua);Va.predicate(Wa);if(Ua.empty()){throw Error('unclosed predicate expr');} 
    42 if(Ua.next()!=']'){Ua.back();throw Error('bad token: '+Ua.next());}}};Ta.prototyps=new Ma();Ta.prototype.evaluatePredicates=function(Xa,Ya){var Za,predicate,nodes,node,Xa,position,reverse;reverse=this.reverse;Za=this.predicates;Xa.sort();for(var i=Ya||0,l0=Za.length;i<l0;i++){predicate=Za[i];var $a=[];var ab=Xa.list();for(var j=0,l1=ab.length;j<l1;j++){position=reverse?(l1-j):(j+1);exrs=predicate.evaluate(new Ia(ab[j],position,l1));switch(typeof exrs){case 'number':exrs=(position==exrs);break;case 'string':exrs=!!exrs;break;case 'object':exrs=exrs.bool();break;} 
     42if(Ua.next()!=']'){Ua.back();throw Error('bad token: '+Ua.next());}}};Ta.prototype=new Ma();Ta.prototype.evaluatePredicates=function(Xa,Ya){var Za,predicate,nodes,node,Xa,position,reverse;reverse=this.reverse;Za=this.predicates;Xa.sort();for(var i=Ya||0,l0=Za.length;i<l0;i++){predicate=Za[i];var $a=[];var ab=Xa.list();for(var j=0,l1=ab.length;j<l1;j++){position=reverse?(l1-j):(j+1);exrs=predicate.evaluate(new Ia(ab[j],position,l1));switch(typeof exrs){case 'number':exrs=(position==exrs);break;case 'string':exrs=!!exrs;break;case 'object':exrs=exrs.bool();break;} 
    4343if(!exrs){$a.push(j);}} 
    4444for(var j=$a.length-1,l1=0;j>=l1;j--){Xa.del($a[j]);}} 
  • lang/javascript/javascript-xpath/trunk/release/javascript-xpath-latest.js

    r14924 r38722  
    1 /*  JavaScript-XPath 0.1.11 
     1/*  JavaScript-XPath 0.1.12 
    22 *  (c) 2007 Cybozu Labs, Inc. 
    33 * 
     
    309309}; 
    310310 
    311 BaseExprHasPredicates.prototyps = new BaseExpr(); 
     311BaseExprHasPredicates.prototype = new BaseExpr(); 
    312312 
    313313BaseExprHasPredicates.prototype.evaluatePredicates = function(nodeset, start) { 
  • lang/javascript/javascript-xpath/trunk/src/baseExpr.js

    r1393 r38722  
    4646}; 
    4747 
    48 BaseExprHasPredicates.prototyps = new BaseExpr(); 
     48BaseExprHasPredicates.prototype = new BaseExpr(); 
    4949 
    5050BaseExprHasPredicates.prototype.evaluatePredicates = function(nodeset, start) { 
  • lang/javascript/javascript-xpath/trunk/test/functional/data/0012

    r29934 r38722  
    3737            </tbody> 
    3838        </table> 
     39        <p id="ppp">1</p> 
    3940    </body> 
    4041</html> 
     
    4849/descendant::tr[2] => tr#id6 
    4950(//tr)[2] => tr#id6 
     51(//p) + 1 => value(2) 
     52id('ppp')[true()] => p#ppp 
     53number(id('ppp')[true()]) => value(1) 
     54id('ppp')[true()] + 1 => value(2) 
    5055 
  • lang/javascript/javascript-xpath/trunk/test/functional/index.html

    r14909 r38722  
    88  <meta http-equiv="Content-Script-Type" content="text/javascript" /> 
    99 
     10  <script type="text/javascript" src="./json2.js"></script> 
    1011  <script type="text/javascript" src="./logger.js"></script> 
    1112  <!--LOCAL_DATA_HERE--> 
     
    430431        } 
    431432        else { 
    432             if (typeof tester.value != 'string') { 
    433                 return { status: 'ng', detail: 'value(' + nodes + ')' } 
    434             } 
    435             else { 
    436                 return { status: 'ng', detail: 'value("' + nodes.replace(/\\/, '\\\\').replace(/"/, '\\"') + '")' } 
    437             } 
     433            return { status: 'ng', detail: 'value(' + JSON.stringify(nodes) + ')' } 
    438434        } 
    439435    } 
     
    469465                break; 
    470466            case 3: 
    471                 t += 'text("' + node.nodeValue.replace(/\\/, '\\\\').replace(/"/, '\\"') + '")'; 
     467                t += 'text(' + JSON.stringify(node.nodeValue) + ')'; 
    472468                break; 
    473469            case 7: 
    474                 t += 'processing-instruction(' + node.nodeName + '="' + node.nodeValue.replace(/\\/, '\\\\').replace(/"/, '\\"') + '")'; 
     470                t += 'processing-instruction(' + node.nodeName + '=' + JSON.stringify(node.nodeValue) + ')'; 
    475471                break; 
    476472            case 8: 
    477                 t += 'comment("' + node.nodeValue.replace(/\\/, '\\\\').replace(/"/, '\\"') + '")'; 
     473                t += 'comment(' + JSON.stringify(node.nodeValue) + ')'; 
    478474                break; 
    479475            case 9: 
  • lang/javascript/javascript-xpath/trunk/version.txt

    r14924 r38722  
    1 0.1.11 
     10.1.12