Changeset 19370

Show
Ignore:
Timestamp:
09/16/08 17:18:36 (5 years ago)
Author:
terurou
Message:

New functions nanashi.map() and nanashi.hash()

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/javascript/nanashi.js/nanashi.js

    r19178 r19370  
    229229            return text.replace(/[\x00-\x1F\'\"\\\u007F-\uFFFF]/g, escapeChar); 
    230230        } 
    231         var char2esc = {'\t':'t','\n':'n','\v':'v','\f':'f','\r':'\r',     
     231        var char2esc = {'\t':'t','\n':'n','\v':'v','\f':'f','\r':'\r', 
    232232                        '\'':'\'','\"':'\"','\\':'\\'}; 
    233233        function escapeChar(c){ 
     
    343343    } 
    344344 
     345    function map(list, fn, reverse) { 
     346        var result = (isArrayLike(list)) ? [] : {}; 
     347        each(list, function (v, i) { 
     348            result[i] = fn(v, i); 
     349        }, reverse); 
     350        return result; 
     351    } 
     352 
    345353    function collect(list, fn, reverse) { 
    346354        var result = []; 
     
    380388        }, reverse); 
    381389        return result; 
     390    } 
     391 
     392    function hash(list, fn) { 
     393        if (typeof(fn) != "function") fn = function (v, i) { return [v, i]; } 
     394         
     395        var result = {}; 
     396        each(list, function (v, i) { 
     397            var ret = fn(v, i); 
     398            result[ret[0]] = ret[1]; 
     399        }); 
    382400    } 
    383401 
     
    436454        "any"    : any, 
    437455        "all"    : all, 
     456        "map"    : map, 
    438457        "collect": collect, 
    439458        "select" : select, 
    440459        "reject" : reject, 
    441460        "detect" : detect, 
     461        "hash"   : hash, 
    442462        "forloop": forloop, 
    443463        "trim" : trim,