public CheckCharacterGroupAction(ICharacterGroup group) { this.group = group; this.rows = new bool?[group.Items.Length][]; for (var i = 0; i < this.rows.Length; i++) { this.rows[i] = new bool?[group.Items[i].Items.Length]; for (var j = 0; j < this.rows[i].Length; j++) { var character = group.Items[i].Items[j]; if (character.IsEnabled == true) { this.rows[i][j] = character.IsChecked; } } } }
public virtual void Visit(ICharacterGroup instance) { }
private ICharacterGroup ParseCharacterGroupInternal() { ++index; // swallow '[' var members = new List <ICharacterGroupMember>(); bool isNegated = regex[index] == '^'; if (isNegated) { ++index; // swallow '^' } bool isDone = false; ICharacterGroup exclusions = null; while (!isDone) { var nextChar = regex[index]; switch (nextChar) { case ']': isDone = true; ++index; // swallow ']' break; case '-': ++index; // swallow '-' if (index == regex.Length) { // The Regex constructor should prevent this throw new InvalidOperationException(); } else if (regex[index] == '[') { exclusions = ParseCharacterGroupInternal(); } else if (members.Count == 0 || regex[index] == ']') { // If '-' is the first or last character, add it literally members.Add(Literal.For('-')); } else { var lastMember = members[members.Count - 1]; var range = ParseRange(lastMember); members.RemoveAt(members.Count - 1); members.Add(range); } break; default: var member = ParseCharacterGroupMember(); members.Add(member); break; } } var options = new CharacterGroupOptions() { IsNegated = isNegated, Exclusions = exclusions }; return(CharacterGroup.From(options, members)); }