public override bool IsAvailable(UnitTextBase unit) { if (unit.IsPretext()) { return(unit.Text.IsSameValue(ref _pretext)); } return(true); }
/// <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); }