public override bool IsAvailable(UnitTextBase unit)
 {
     if (unit.IsPretext())
     {
         return(unit.Text.IsSameValue(ref _pretext));
     }
     return(true);
 }
コード例 #2
0
        /// <summary>
        /// Добавление юнита в цепочку
        /// </summary>
        /// <param name="unit">юнит</param>
        /// <param name="part">часть цепочки до первой встреченной сущности</param>
        /// <returns>флаг допустимости юнита для цепочки</returns>
        private bool AddUnit(UnitTextBase unit, List <UnitTextBase> part)
        {
            bool result = true;

            if (unit.UnitTextType == UnitTextType.ENTITY)
            {
                Entity entity = (Entity)unit;
                if (_format.IsHomogeneousItem(entity))
                {
                    result = AddEntity(entity, part);
                    part.Clear();
                }
                else
                {
                    part.Add(unit);
                }
            }
            else
            {
                if (DictionaryResource.IsHomogeneousConjunction(unit.Text))
                {
                    result = unit.Text.IsSameValue(ref _conjunction);
                }
                else if (DictionaryResource.IsNegotiationParticle(unit.Text))
                {
                    result = unit.Text.IsSameValue(ref _negotiationParticle);
                }
                else if (DictionaryResource.IsOtherEnumeration(unit.Text))
                {
                    _units.AddRange(part);
                    part.Clear();
                    result = false;
                }
                else
                {
                    result = _format.IsAvailable(unit);
                    if (unit.IsPretext())
                    {
                        _pretext = unit;
                    }
                }
                part.Add(unit);
            }
            return(result);
        }