コード例 #1
0
        protected override bool IsTransformAvailableUnit(UnitTextBase unit, IList <UnitTextBase> sequence)
        {
            bool isVerbOrDeepr = false;
            bool isAdverb      = false;

            if (unit.IsEntity)
            {
                Entity entity = (Entity)unit;
                isVerbOrDeepr = entity.IsType(EntityType.Verb) || entity.IsType(EntityType.Infinitive) || entity.IsType(EntityType.Deepr);
                isAdverb      = entity.IsType(EntityType.Adverb);
            }
            return(isVerbOrDeepr || (sequence.Any() && (isAdverb || unit.IsEmptyText())));
        }
コード例 #2
0
        /// <summary>
        /// Получение следующего юнита с текстом
        /// </summary>
        /// <param name="unit">текущий юнит</param>
        /// <returns>следующий юнит с текстом</returns>
        public static UnitTextBase GetNonEmptyNext(this UnitTextBase unit)
        {
            UnitTextBase result = unit.Next;

            while (true)
            {
                if ((result == null) || !result.IsEmptyText())
                {
                    break;
                }
                result = result.Next;
            }
            return(result);
        }
コード例 #3
0
        /// <summary>
        /// Получение следующего юнита, который стоит рядом с пропуском юнитов без текста
        /// </summary>
        /// <param name="startUnit">юнит, с которого начинается поиск</param>
        /// <returns>юнит</returns>
        private UnitTextBase GetNextNearUnitSkipEmpty(UnitTextBase startUnit)
        {
            UnitTextBase result = startUnit;
            UnitTextBase next   = result.Next;

            while (true)
            {
                if ((next == null) || !next.IsEmptyText() || (next.PositionInfo.Start != result.PositionInfo.End))
                {
                    break;
                }
                result = next;
                next   = next.Next;
            }
            return(result);
        }