예제 #1
0
        private static SourcePosition FindDescendantPositionToExchange(StatementGrammarNode movedNode)
        {
            var nodeToExchange = movedNode.ParentNode
                                 .GetPathFilterDescendants(n => n != movedNode && NodeFilters.BreakAtNestedQueryBlock(n), movedNode.Id)
                                 .FirstOrDefault();

            return(CreateNodePosition(movedNode, nodeToExchange));
        }
        public static IEnumerable <INode> Walk(IDirectory directory, NodeType nodeType)
        {
            var accept = NodeFilters.ByNodeType(nodeType);

            foreach (var childNode in directory.GetChildren())
            {
                if (accept(childNode))
                {
                    yield return(childNode);
                }

                if (childNode is IDirectory)
                {
                    foreach (var childChildNode in Walk(((IDirectory)childNode), nodeType))
                    {
                        yield return(childChildNode);
                    }
                }
            }
        }
 public virtual IEnumerable <string> GetChildNames(NodeType nodeType, Predicate <string> acceptName)
 {
     return(GetChildNamesUsingNodes(nodeType, NodeFilters.ByNodeName(acceptName)));
 }