github.com/madlambda/nash@v0.2.2-0.20230113003044-f2284521680b/stdlib/map.sh (about) 1 fn map_new() { 2 return () 3 } 4 5 fn map_get(map, key) { 6 return map_get_default($map, $key, "") 7 } 8 9 fn map_iter(map, func) { 10 for entry in $map { 11 $func($entry[0], $entry[1]) 12 } 13 } 14 15 fn map_get_default(map, key, default) { 16 for entry in $map { 17 if $entry[0] == $key { 18 return $entry[1] 19 } 20 } 21 22 return $default 23 } 24 25 fn map_add(map, key, val) { 26 for entry in $map { 27 if $entry[0] == $key { 28 entry[1] = $val 29 return $map 30 } 31 } 32 33 var tuple = ($key $val) 34 map <= append($map, $tuple) 35 return $map 36 } 37 38 fn map_del(map, key) { 39 var newmap = () 40 41 for entry in $map { 42 if $entry[0] != $key { 43 var tuple = ($entry[0] $entry[1]) 44 newmap <= append($newmap, $tuple) 45 } 46 } 47 48 return $newmap 49 }