public static IEntity PrepareToHandle(IEntity entity)
        {
            ChangeableEntity changeableEntity = entity as ChangeableEntity;

            if (changeableEntity != null && changeableEntity.ChangeToEntity != null)
            {
                return(changeableEntity.Change());
            }

            return(entity);
        }
 public bool IsValid(ChangeableEntity changeableEntity)
 {
     foreach (IEntity allowedEntity in changeableEntity.AllowedEntities)
     {
         if (ValidType.IsInstanceOfType(allowedEntity))
         {
             changeableEntity.ChangeToEntity = allowedEntity;
             return(true);
         }
     }
     return(false);
 }
 public bool IsValid(ChangeableEntity changeableEntity)
 {
     foreach (IEntity entity in changeableEntity.AllowedEntities)
     {
         if (IsValid(entity))
         {
             changeableEntity.ChangeToEntity = entity;
             return(true);
         }
     }
     return(false);
 }
Example #4
0
        public override EntityRegexMatchState Interpret(EntityRegexMatchInfo info, EntityRegexMatchState state)
        {
            if (state == null || state.Count == 0)
            {
                return(null);
            }

            EntityRegexMatchState result = new EntityRegexMatchState();

            //foreach stateItem in original state
            foreach (StateItem stateItem in state)
            {
                if (info.StartIndex + stateItem.NextEntityIndex < info.Entities.Length)
                {
                    //evaluate regex
                    IEntity             entity           = info.Entities[info.StartIndex + stateItem.NextEntityIndex];
                    ChangeableEntity    changeableEntity = entity as ChangeableEntity;
                    WordHolder.WordItem item             = null;
                    if (changeableEntity != null)
                    {
                        foreach (IEntity allowedEntity in changeableEntity.AllowedEntities)
                        {
                            item = Holder.Find(allowedEntity.Value.ToUpper());
                            if (item != null)
                            {
                                break;
                            }
                        }
                    }
                    else
                    {
                        item = Holder.Find(entity.Value.ToUpper());
                    }

                    if (item != null)
                    {
                        stateItem.AddPassed(info.CurrentPatternIndex, item.Value);
                        result.Add(stateItem);
                    }
                }
            }
            return(result);
        }