home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / root / usr / share / YaST2 / modules / Map.ycp < prev    next >
Text File  |  2006-11-29  |  3KB  |  125 lines

  1. /**
  2.  * File:    modules/Map.ycp
  3.  * Package:    yast2
  4.  * Summary:    Map manipulation routines
  5.  * Authors:    Michal Svec <msvec@suse.cz>
  6.  * Flags:    Stable
  7.  *
  8.  * $Id: Map.ycp 31242 2006-06-01 12:59:16Z locilka $
  9.  */
  10.  
  11. {
  12.  
  13. module "Map";
  14. textdomain "base";
  15.  
  16. import "String";
  17.  
  18. /**
  19.  * Return all keys from the map
  20.  * @param m the map
  21.  * @return a list of all keys from the map
  22.  */
  23. global define list Keys(map m) ``{
  24.     if(m == nil || m == $[]) return [];
  25.     return maplist(any var, any val, m, ``(var));
  26. }
  27.  
  28. /**
  29.  * Return all values from the map
  30.  * @param m the map
  31.  * @return a list of all values from the map
  32.  */
  33. global define list Values(map m) ``{
  34.     if(m == nil || m == $[]) return [];
  35.     return maplist(any var, any val, m, ``(val));
  36. }
  37.  
  38. /**
  39.  * Switch map keys to lower case
  40.  * @param m input map
  41.  * @return map with keys converted to lower case
  42.  */
  43. global define map KeysToLower(map<string, any> m) ``{
  44.     string newk = nil;
  45.     if(m == nil) return $[];
  46.     return mapmap(string k, any v, m, ``{
  47.     newk = tolower(k);
  48.     return $[newk: v];
  49.     });
  50. }
  51.  
  52. /**
  53.  * Switch map keys to upper case
  54.  * @param m input map
  55.  * @return map with keys converted to lower case
  56.  */
  57. global define map KeysToUpper(map<string, any> m) ``{
  58.     string newk = nil;
  59.     if(m == nil) return $[];
  60.     return mapmap(string k, any v, m, ``{
  61.     newk = toupper(k);
  62.     return $[newk: v];
  63.     });
  64. }
  65.  
  66. /**
  67.  * Check if a map contains all needed keys
  68.  * @param m map to be checked
  69.  * @param keys needed keys
  70.  * @return true if map kontains all keys
  71.  */
  72. global define boolean CheckKeys(map m, list keys) ``{
  73.     if(m == nil || keys == nil)
  74.     return false;
  75.  
  76.     boolean ret = true;
  77.     foreach(any k, keys, ``{
  78.     if(k == nil || !haskey(m, k)) {
  79.         y2error("Missing key: %1", k);
  80.         ret = false;
  81.     }
  82.     });
  83.  
  84.     return ret;
  85. }
  86.  
  87. /**
  88.  * Convert options map $[var:val, ...] to string "var=val ..."
  89.  * @param m map to be converted
  90.  * @return converted map
  91.  */
  92. global define string ToString(map m) ``{
  93.     if(m == nil) return "";
  94.  
  95.     string ret = "";
  96.     foreach (any var, any val, m, ``{
  97.     ret = ret + sformat(" %1=%2", var, val);
  98.     });
  99.     return String::CutBlanks(ret);
  100. }
  101.  
  102. /**
  103.  * Convert string "var=val ..." to map $[val:var, ...]
  104.  * @param s string to be converted
  105.  * @return converted string
  106.  */
  107. global define map FromString(string s) ``{
  108.     if(s == nil) return $[];
  109.  
  110.     map ret = $[];
  111.     foreach(string vals, splitstring(s, " "), ``{
  112.     list val = splitstring(vals, "=");
  113.     if(size(val) < 1 || val[0]:"" == "") return;
  114.     string key = val[0]:"";
  115.     if(size(val) > 1)
  116.         ret[key] = val[1]:"";
  117.     else
  118.         ret[key] = "";
  119.     });
  120.     return ret;
  121. }
  122.  
  123. /* EOF */
  124. }
  125.