private ResourceFileHandlerDiff CompareResourceFileHandlers(ResourceFileHandlerBase leftResourceFileHandler, ResourceFileHandlerBase rightResourceFileHandler) { var resourceFileHandlerDiff = new ResourceFileHandlerDiff { Keys = new HashSet <string>(leftResourceFileHandler.Select(e => e.Key).Union(rightResourceFileHandler.Select(e => e.Key)).Distinct(StringComparer.OrdinalIgnoreCase)) }; foreach (var key in resourceFileHandlerDiff.Keys) { string leftResourceValue = null; string rightResourceValue = null; leftResourceFileHandler.TryGetValue(key, out leftResourceValue); rightResourceFileHandler.TryGetValue(key, out rightResourceValue); if (leftResourceValue == null) { resourceFileHandlerDiff.LeftResourceFileHandlerMissgingKeys.Add(key); } else if (rightResourceValue == null) { resourceFileHandlerDiff.RightResourceFileHandlerMissgingKeys.Add(key); } else if (leftResourceValue != rightResourceValue) { resourceFileHandlerDiff.Diff.Add(key, new Tuple <string, string>(leftResourceValue, rightResourceValue)); } } return(resourceFileHandlerDiff); }
private string BuildCompareReportCsv(ResourceFileHandlerDiff resourceFileHandlerDiff) { var stringBuilder = new StringBuilder(); stringBuilder.Append("\"key\",\"iOS\",\"Android\"\n"); foreach (var problematicKey in resourceFileHandlerDiff.Diff) { stringBuilder.AppendFormat("\"{0}\",\"{1}\",\"{2}\"\n", problematicKey.Key, problematicKey.Value.Item1, problematicKey.Value.Item2); } return(stringBuilder.ToString()); }