/// <summary> /// Replace one subtree with another /// </summary> public ContextNode Replace(ContextNode search, ContextNode replace) { return(new ContextNode(Ctx, Replace(Node, search.Node, replace.Node, Ctx, search.Ctx, replace.Ctx))); }
public int GetHashCode(ParseTreeNode obj) { return(ContextNode.GetHashCode(Ctx, obj)); }
public bool Equals(ParseTreeNode x, ParseTreeNode y) { return(ContextNode.Equals(x, y, Ctx, Ctx)); }
public bool Contains(ContextNode search) { return(Contains(Node, search.Node, Ctx, search.Ctx)); }
private static IEnumerable <ParseTreeNode> CellContainedInRanges(ParseTreeNode fqcellref, ContextNode formula) { if (!fqcellref.Is(GrammarNames.Reference) || !fqcellref.ChildNodes[1].Is(GrammarNames.Cell)) { throw new ArgumentException("Must be a reference to a single cell", nameof(fqcellref)); } return(CellContainedInRanges(fqcellref, formula.Node, formula.Ctx)); }
/// <summary> /// Return all ranges used in a specific formula this cell is contained in /// </summary> public IEnumerable <ParseTreeNode> CellContainedInRanges(ContextNode formula) { var node = Node.SkipToRelevant(false); return(CellContainedInRanges(Ctx.Qualify(node), formula)); }