Esempio n. 1
0
 int GetSubTypeIndex(ITargetItem target)
 {
     var parent = this;
     Tracer.Assert(!string.IsNullOrWhiteSpace(target.Token));
     var token = target.Token;
     if(parent.Brackets.Any(item => item.Left == token))
         return 0;
     if(parent.Brackets.Any(item => item.Right == token))
         return 2;
     return 1;
 }
Esempio n. 2
0
        internal Relation GetRelation(ITargetItem newItem, ITargetItem recentItem)
        {
            var delta = newItem.GetLeftDepth() - recentItem.GetRightDepth();

            switch(delta)
            {
            case 0:
                return GetRelationOnSameDepth
                    (
                        GetSubTypeIndex(newItem),
                        GetSubTypeIndex(recentItem),
                        newItem.Token,
                        recentItem.Token);
            case 1:
                return Relation.Push;
            default:
                NotImplementedMethod(newItem, recentItem, nameof(delta), delta);
                return null;
            }
        }