public virtual bool CanExecute(params string[] parameters) { if (Parameters.IsNullOrEmpty() && !parameters.IsNullOrEmpty()) { return(false); } if (parameters.IsNullOrEmpty()) { return(true); } var comparer = new StringEqualityComparer(false); var lastParam = parameters.Last(); var paramCopy = (string[])parameters.Clone(); if (lastParam.IsNumber()) { paramCopy = paramCopy.Take(paramCopy.Length - 2).ToArray(); } var result = paramCopy.All(p => Parameters.Contains(p, comparer)); return(result); }
public void MustNotBeEquals() { var firstString = "Abc"; var secondString = "Def"; var isEquals = new StringEqualityComparer().Equals(firstString, secondString); Assert.IsFalse(isEquals); }
public void MustBeEquals() { var firstString = "Abc"; var secondString = "Ab" + ((Func <string>)(() => "c"))(); var isEquals = new StringEqualityComparer().Equals(firstString, secondString); Assert.IsTrue(isEquals); }
public override Token[] Tokenize(IDictionary<string, OptionArity> options, IEnumerable<string> inputs) { /* * Cte postupne stringy ze vstupu. Pokud narazi na neco, co se rovna TreatAsArgumentMarkeru, vse za tim je cteno jako argument. * Pokud narazi na neco, co zacina LongOptionStarter, prida se OptionToken s dlouhym nazvem. * Pokud narazi na neco, co zacina ShortOptionStarter, pride se OptionToken pro kazdy char ve stringu. * Jinak se prida ArgumentToken. * * kdyz neco zacina uvozovkou (a take ji pak musi koncit), je to povazovano za argument, at je v tom cokoliv (vcetne mezer a OptionStarteru) */ //TODO uvozovky inputs = PrepareInput(inputs); List<Token> tokens = new List<Token>(); bool treatAsArgument = false; StringEqualityComparer stringEqualityComparer = new StringEqualityComparer(Culture, IgnoreCase); foreach (string input in inputs) { if (treatAsArgument) { tokens.Add(new ArgumentToken(input)); } else if (input.StartsWith(TextSymbol, IgnoreCase, Culture)) { Debug.Assert(input.EndsWith(TextSymbol, IgnoreCase, Culture), "Should end with " + TextSymbol); string argument = input.Substring(TextSymbol.Length, input.Length - TextSymbol.Length * 2); tokens.Add(new ArgumentToken(argument)); } else if (stringEqualityComparer.Equals(input, TreatAsArgumentMark)) { treatAsArgument = true; } else if (input.StartsWith(LongOptionStarter, IgnoreCase, Culture)) { string option = input.Substring(LongOptionStarter.Length); tokens.Add(new OptionToken(option)); } else if (input.StartsWith(ShortOptionStarter, IgnoreCase, Culture)) { string option = input.Substring(ShortOptionStarter.Length); foreach (char c in option) { tokens.Add(new OptionToken(c.ToString())); } } else { tokens.Add(new ArgumentToken(input)); } } return tokens.ToArray(); }
public HandlebarsConfiguration() { var stringEqualityComparer = new StringEqualityComparer(StringComparison.OrdinalIgnoreCase); Helpers = new ObservableIndex <string, IHelperDescriptor <HelperOptions>, StringEqualityComparer>(stringEqualityComparer); BlockHelpers = new ObservableIndex <string, IHelperDescriptor <BlockHelperOptions>, StringEqualityComparer>(stringEqualityComparer); RegisteredTemplates = new ObservableIndex <string, HandlebarsTemplate <TextWriter, object, object>, StringEqualityComparer>(stringEqualityComparer); HelperResolvers = new ObservableList <IHelperResolver>(); TextEncoder = new HtmlEncoder(FormatProvider); UnresolvedBindingFormatter = new Formatter <UndefinedBindingResult>(undef => string.Empty); }
public override void AddUsersToRoles(string[] usernames, string[] roleNames) { using (var db = new MembershipContext()) { var strComparer = new StringEqualityComparer(); var users = db.Users.Where(u => usernames.Contains(u.UserName, strComparer)).Include(u => u.Roles).ToList(); Role[] roles = db.Roles.Where(r => roleNames.Contains(r.RoleName, strComparer)).Select(r => r.RoleId).ToArray(); if ((users != null && users.Count > 0) && (roles != null && roles.Length > 0)) { foreach (var user in users) { Role[] userRoles = user.Roles.Select(r => r.RoleId).ToArray(); Role[] missingRoles = roles.Where(r => !userRoles.Contains(r)).ToArray(); for (int i = 0; i < missingRoles.Length; i++) { user.Roles.Add(new UserUserRole() { RoleId = missingRoles[i] }); } } db.SaveChanges(); } } }
public override void RemoveUsersFromRoles(string[] usernames, string[] roleNames) { using (var db = new MembershipContext()) { var strComparer = new StringEqualityComparer(); UserUserRole[] userRoles = (from u in db.Users join ur in db.UserRoles on u.UserId equals ur.UserId join r in db.Roles on ur.RoleId equals r.RoleId where usernames.Contains(u.UserName, strComparer) && roleNames.Contains(r.RoleName, strComparer) select ur).ToArray(); DbSet<UserUserRole> dbSet = db.Set<UserUserRole>(); foreach (var uRole in userRoles) { if (db.Entry(uRole).State == System.Data.EntityState.Detached) dbSet.Attach(uRole); dbSet.Remove(uRole); } if (userRoles.Length > 0) db.SaveChanges(); } }
/// <summary> /// Tokenizes the specified options. /// </summary> /// <param name="options">The options with their arities.</param> /// <param name="inputs">The input to tokenize.</param> /// <returns>A collection of tokens representing options and arguments.</returns> public override Token[] Tokenize(IDictionary<string, OptionArity> options, IEnumerable<string> inputs) { /* * Cte postupne vstupni stringy a rozhazuje je. Kdyz ma nejaky option nastaveny minimalni pocet argumentu n, tak * n stringu za nim bude povazovano za jeho argumenty. * Pri nastaveni maximalniho poctu argumentu bude vsechno, co nezacina na ShortOptionStarter, LongOptionStarter, * nebo na TreatAsArgumentMarkpovazovano povazovano za argument (po dosazeni minimalniho poctu argumentu). * Boolovske optiony nemusi mit za sebou zadny argument. meli by mit nastaveny pocet argumentu na 0. */ inputs = PrepareInput(inputs); List<Token> tokens = new List<Token>(); TreatMode treatMode = TreatMode.None; StringEqualityComparer stringEqualityComparer = new StringEqualityComparer(Culture, IgnoreCase); uint lastOptionArgumentCount = uint.MaxValue; OptionArity? lastOptionArity = null; foreach (string input in inputs) { if (treatMode == TreatMode.Argument) { AddArgument(tokens, input); } else if (stringEqualityComparer.Equals(input, TreatAsArgumentMark)) { treatMode = TreatMode.Argument; tokens.Add(new TreatAsArgumentToken()); } else if (treatMode == TreatMode.OptionArgument) { AddArgument(tokens, input, ref treatMode, ref lastOptionArgumentCount, ref lastOptionArity); } // tady uz je treatMode == TreatMode.None else if (input.StartsWith(LongOptionStarter, IgnoreCase, Culture)) { string option = input.Substring(LongOptionStarter.Length); AddOption(tokens, option, options, ref treatMode, ref lastOptionArgumentCount, ref lastOptionArity); } else if (input.StartsWith(ShortOptionStarter, IgnoreCase, Culture)) { string option = input.Substring(ShortOptionStarter.Length); Debug.Assert(option.Length == 1, string.Format("Unexpected short option: {0}", option)); AddOption(tokens, option, options, ref treatMode, ref lastOptionArgumentCount, ref lastOptionArity); } else { AddArgument(tokens, input); } } return tokens.ToArray(); }
public StringExpression(String value, StringComparison comparison) : this(value, comparison, StringEqualityComparer.GetComparer(comparison)) { }
public void OneNullMustNotBeEquals(string firstString, string secondString) { var isEquals = new StringEqualityComparer().Equals(firstString, secondString); Assert.IsFalse(isEquals); }
static StringEqualityComparer() { _inst = new StringEqualityComparer(); }
public override bool Validate(string value) { StringEqualityComparer stringEqualityComparer = new StringEqualityComparer(Culture, IgnoreCase); return allowedStrings.Contains(value, stringEqualityComparer); }
public override object FromString(string value) { StringEqualityComparer stringEqualityComparer = new StringEqualityComparer(Culture, IgnoreCase); if (allowedStrings.Contains(value, stringEqualityComparer)) { return value; } else { throw new NotImplementedException(); //TODO vyhodit vhodnou vyjimku } }
List <TMaster> GenerateObjects(Table table) { IEqualityComparer <object> comparer; var columnType = table.ColumnTypeMap[m_MasterKeyColumn]; if (columnType == typeof(short)) { comparer = new Int16EqualityComparer(); } else if (columnType == typeof(int)) { comparer = new Int32EqualityComparer(); } else if (columnType == typeof(long)) { comparer = new Int64EqualityComparer(); } else if (columnType == typeof(Guid)) { comparer = new GuidEqualityComparer(); } else if (columnType == typeof(string)) { comparer = new StringEqualityComparer(); } else if (columnType == typeof(DateTime)) { comparer = new DateTimeEqualityComparer(); } else if (columnType == typeof(DateTimeOffset)) { comparer = new DateTimeOffsetEqualityComparer(); } else if (columnType == typeof(ulong)) { comparer = new UInt64EqualityComparer(); } else { throw new NotSupportedException($"Key column of type '{columnType.Name}' is not supported for Master/Detail collections."); } var groups = new Dictionary <object, List <Row> >(comparer); foreach (var row in table.Rows) { var key = row[m_MasterKeyColumn]; if (key == null) { throw new MissingDataException($"A null was found in the master key column '{m_MasterKeyColumn}'"); } if (!groups.TryGetValue(key, out var group)) { group = new(); groups.Add(key, group); } group.Add(row); } var result = new List <TMaster>(); foreach (var group in groups.Values) { var master = MaterializerUtilities.ConstructObject <TMaster>(group[0], m_MasterConstructor, Converter); var target = m_Map(master); foreach (var row in group) { target.Add(MaterializerUtilities.ConstructObject <TDetail>(row, m_DetailConstructor, Converter)); } result.Add(master); } return(result); }