Example #1
0
 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)
 {
 }
Example #3
0
            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));
            }