コード例 #1
0
ファイル: ModifyOptions.cs プロジェクト: fjsnogueira/Orang
 public ModifyOptions(
     ModifyFunctions functions      = ModifyFunctions.None,
     bool aggregate                 = false,
     bool ignoreCase                = false,
     bool cultureInvariant          = false,
     ValueSortProperty sortProperty = ValueSortProperty.None,
     Func <IEnumerable <string>, IEnumerable <string> > method = null)
 {
     Functions        = functions;
     Aggregate        = aggregate;
     IgnoreCase       = ignoreCase;
     CultureInvariant = cultureInvariant;
     SortProperty     = sortProperty;
     Method           = method;
 }
コード例 #2
0
 public ModifyOptions(
     ModifyFunctions functions            = ModifyFunctions.None,
     bool aggregate                       = false,
     bool ignoreCase                      = false,
     bool cultureInvariant                = false,
     ValueSortProperty sortProperty       = ValueSortProperty.None,
     EnumerableModifier <string>?modifier = null)
 {
     Functions        = functions;
     Aggregate        = aggregate;
     IgnoreCase       = ignoreCase;
     CultureInvariant = cultureInvariant;
     SortProperty     = sortProperty;
     Modifier         = modifier;
 }
コード例 #3
0
ファイル: ModifyOptions.cs プロジェクト: fjsnogueira/Orang
        public IEnumerable <string> Modify(IEnumerable <string> values, ModifyFunctions?filter = null)
        {
            ModifyFunctions functions = Functions;

            if (filter != null)
            {
                functions &= filter.Value;
            }

            StringComparer comparer = StringComparer;

            bool trimStart = (functions & ModifyFunctions.TrimStart) != 0;
            bool trimEnd   = (functions & ModifyFunctions.TrimEnd) != 0;

            if (trimStart && trimEnd)
            {
                values = values.Select(f => f.Trim());
            }
            else if (trimStart)
            {
                values = values.Select(f => f.TrimStart());
            }
            else if (trimEnd)
            {
                values = values.Select(f => f.TrimEnd());
            }

            if ((functions & ModifyFunctions.RemoveEmpty) != 0)
            {
                values = values.Where(f => !string.IsNullOrEmpty(f));
            }

            if ((functions & ModifyFunctions.RemoveWhiteSpace) != 0)
            {
                values = values.Where(f => !string.IsNullOrWhiteSpace(f));
            }

            if ((functions & ModifyFunctions.ToLower) != 0)
            {
                values = values.Select(f => f.ToLower(CultureInfo));
            }
            else if ((functions & ModifyFunctions.ToUpper) != 0)
            {
                values = values.Select(f => f.ToUpper(CultureInfo));
            }

            if (Method != null)
            {
                values = Method(values);
            }

            if ((functions & ModifyFunctions.Distinct) != 0)
            {
                values = values.Distinct(comparer);
            }

            if ((functions & ModifyFunctions.Sort) != 0)
            {
                if (SortProperty == ValueSortProperty.Length)
                {
                    return(values.OrderBy(f => f.Length));
                }
                else
                {
                    return(values.OrderBy(f => f, comparer));
                }
            }
            else if ((functions & ModifyFunctions.SortDescending) != 0)
            {
                if (SortProperty == ValueSortProperty.Length)
                {
                    return(values.OrderByDescending(f => f.Length));
                }
                else
                {
                    return(values.OrderByDescending(f => f, comparer));
                }
            }

            return(values);
        }
コード例 #4
0
 public bool HasFunction(ModifyFunctions functions) => (Functions & functions) != 0;