Changeset 21605

Show
Ignore:
Timestamp:
10/19/08 07:26:18 (5 years ago)
Author:
fujidig
Message:

getpath を実装

Location:
lang/javascript/hsp-on-js/trunk/src
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lang/javascript/hsp-on-js/trunk/src/builtin-funcs.js

    r21594 r21605  
    599599                return Formatter.sprintf(this, format, args); 
    600600        }, 
     601        0x104: function getpath(path, flags) { 
     602                this.scanArgs(arguments, 'sn'); 
     603                path = path.toStrValue()._value; 
     604                flags = flags.toIntValue()._value; 
     605                if(flags & 16) { 
     606                        var re = /((?:[\x81-\x9f\xe0-\xfc][\s\S]|[^A-Z])*)([A-Z]*)/g; 
     607                        path = path.replace(re, function(s,a,b) { 
     608                                return a + b.toLowerCase(); 
     609                        }); 
     610                } 
     611                var dir = /^(?:\w:)?(?:(?:[^\x81-\x9f\xe0-\xfc]|[\x81-\x9f\xe0-\xfc]{2})*[\/\\])?/.exec(path)[0]; 
     612                var ext = /(?:\.[^.\/\\]*)?$/.exec(path)[0]; 
     613                var basename = path.slice(dir.length, path.length - ext.length); 
     614                if(flags & 8) { 
     615                        path = basename + ext; 
     616                } else if(flags & 32) { 
     617                        path = dir; 
     618                } 
     619                var result = path; 
     620                switch(flags & 7) { 
     621                case 1: 
     622                        result = path.slice(0, path.length - ext.length); 
     623                        break; 
     624                case 2: 
     625                        result = ext; 
     626                        break; 
     627                } 
     628                return new StrValue(result); 
     629        }, 
    601630        0x180: function sin(val) { 
    602631                this.scanArgs(arguments, 'n'); 
  • lang/javascript/hsp-on-js/trunk/src/t.hsp

    r21592 r21605  
    1 mes double("0x100") 
    2 mes double("abc") 
    3 mes double(" \n\t1E5") 
    4 mes int(" \n\t++123") 
    5 mes strf("%#x", int("$100")) 
    6 mes strf("%#x", int("$123$456")) 
     1path = "C:\\Program Files\\hsp31\\readme.txt" 
     2mes "all:" + getpath(path, 0) 
     3mes "remove ext: " + getpath(path, 1) 
     4mes "ext only: " + getpath(path, 2) 
     5mes "filename only: " + getpath(path, 8) 
     6mes "lower case: " + getpath(path, 16) 
     7mes "only dir: " + getpath(path, 32) 
    78