github.com/NeowayLabs/nash@v0.2.2-0.20200127205349-a227041ffd50/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  }