예제 #1
0
        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);
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        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);
        }