public static List <PinglishString> NormalizePinglishStrings(List <PinglishString> list, PinglishStringNormalizationOptions options) { if (options == PinglishStringNormalizationOptions.None) { return(list); } var results = list; if ((options & PinglishStringNormalizationOptions.LowercaseEnglishLetters) == PinglishStringNormalizationOptions.LowercaseEnglishLetters) { results = results.ToLower(); } if ((options & PinglishStringNormalizationOptions.NoDuplicatesEntries) == PinglishStringNormalizationOptions.NoDuplicatesEntries) { results = results.RemoveDuplicates(); } if ((options & PinglishStringNormalizationOptions.NoErabPersianLetters) == PinglishStringNormalizationOptions.NoErabPersianLetters) { throw new NotImplementedException(); } return(results); }
/// <summary> /// Merges the two PinglishString lists. /// <returns>A reference to the merged list.</returns> /// </summary> public static List <PinglishString> MergePinglishStringLists(List <PinglishString> list1, List <PinglishString> list2, PinglishStringNormalizationOptions options) { if (list1 == null) { throw new ArgumentNullException("list1"); } if (list2 == null) { throw new ArgumentNullException("list2"); } // TODO: Implement removeErab bool removeErab = options.Has(PinglishStringNormalizationOptions.NoErabPersianLetters); bool noDuplicates = options.Has(PinglishStringNormalizationOptions.NoDuplicatesEntries); bool lowerCase = options.Has(PinglishStringNormalizationOptions.LowercaseEnglishLetters); bool sort = options.Has(PinglishStringNormalizationOptions.SortBasedOnEnglishLetters); var lstResult = noDuplicates ? list1.RemoveDuplicates() : new List <PinglishString>(list1); if (lowerCase) { lstResult = lstResult.ToLower(); } // Now, lstResult is modified with noDuplicates and lowerCase options // Time to add list2 items PinglishString ps; for (int i = 0; i < list2.Count; ++i) { ps = list2[i]; if (lowerCase) { ps = ps.ToLower(); } if (noDuplicates) { if (!lstResult.Contains(ps)) { lstResult.Add(ps); } } else { lstResult.Add(ps); } } if (sort) { lstResult.Sort(new PinglishStringEqualityComparer()); } return(lstResult); }
public static List <PinglishString> MergePinglishStringLists(List <List <PinglishString> > lists, PinglishStringNormalizationOptions options) { var result = new List <PinglishString>(); if (lists.Count < 1) { return(result); } for (int i = 0; i < lists.Count; i++) { result = MergePinglishStringLists(result, lists[i], options); } return(result); }