var expandEntityResult = function(data, map) {
  var replacer = function(match, p1, offset, value) {
    return map[p1];
  };
  var replace = function(value) {
    var keys = Object.keys(map).join('|');
    var regexp = new RegExp('^(' + keys + ')\:');
    
    return value.replace(regexp, replacer);
  };
  var traverse = function(o, func) {
    for (var i in o) {
      if (o[i] !== null) {
        if (typeof(o[i]) === 'object') {
          traverse(o[i], func);
        } else if (typeof(o[i]) === 'string') {
          o[i] = func(o[i]);
        }
      }
    }
  };

  traverse(data, replace);

  return data;
};