WatchNode Process(Value eIn, ref string content, string prefix, int count, bool isListMember = false) { content += prefix + string.Format("[{0}]:", count.ToString()); WatchNode node = null; if (eIn.IsContainer) { if ((eIn as Value.Container).Item != null) { content += (eIn as Value.Container).Item.ToString(); node = new WatchNode((eIn as Value.Container).Item.ToString(), isListMember, count); handlerManager.ProcessNode((eIn as Value.Container).Item, node); //node.Link = id; } } else if (eIn.IsFunction) { content += eIn.ToString() + "\n"; node = new WatchNode("<function>", isListMember, count); } else if (eIn.IsList) { content += "List\n"; string newPrefix = prefix + "\t"; var list = (eIn as Value.List).Item; node = new WatchNode(list.IsEmpty ? "Empty List" : "List", isListMember, count); foreach (var e in list.Select((x, i) => new { Element = x, Index = i })) { node.Children.Add(Process(e.Element, ref content, newPrefix, e.Index, true)); } } else if (eIn.IsNumber) { content += (eIn as Value.Number).Item.ToString() + "\n"; node = new WatchNode((eIn as Value.Number).Item.ToString(), isListMember, count); } else if (eIn.IsString) { content += (eIn as Value.String).Item.ToString() + "\n"; node = new WatchNode((eIn as Value.String).Item.ToString(), isListMember, count); } else if (eIn.IsSymbol) { content += (eIn as Value.Symbol).Item.ToString() + "\n"; node = new WatchNode((eIn as Value.Symbol).Item.ToString(), isListMember, count); } return(node); }
public override string ToString() { return("( " + (Value == null ? "null" : Value.ToString()) + ": " + String.Join(" ", _children.Select(x => x.ToString())) + ")"); }
WatchNode Process(Value eIn, ref string content, string prefix, int count) { content += prefix + string.Format("[{0}]:", count.ToString()); WatchNode node = null; if (eIn.IsContainer) { if ((eIn as Value.Container).Item != null) { //TODO: make clickable hyperlinks to show the element in Revit //http://stackoverflow.com/questions/7890159/programmatically-make-textblock-with-hyperlink-in-between-text content += (eIn as Value.Container).Item.ToString(); node = new WatchNode((eIn as Value.Container).Item.ToString()); handlerManager.ProcessNode((eIn as Value.Container).Item, node); //node.Link = id; } } else if (eIn.IsFunction) { content += eIn.ToString() + "\n"; node = new WatchNode(eIn.ToString()); } else if (eIn.IsList) { content += eIn.GetType().ToString() + "\n"; string newPrefix = prefix + "\t"; int innerCount = 0; node = new WatchNode(eIn.GetType().ToString()); foreach(Value eIn2 in (eIn as Value.List).Item) { node.Children.Add(Process(eIn2, ref content, newPrefix, innerCount)); innerCount++; } } else if (eIn.IsNumber) { content += (eIn as Value.Number).Item.ToString() + "\n"; node = new WatchNode((eIn as Value.Number).Item.ToString()); } else if (eIn.IsString) { content += (eIn as Value.String).Item.ToString() + "\n"; node = new WatchNode((eIn as Value.String).Item.ToString()); } else if (eIn.IsSymbol) { content += (eIn as Value.Symbol).Item.ToString() + "\n"; node = new WatchNode((eIn as Value.Symbol).Item.ToString()); } return node; }
WatchNode Process(Value eIn, ref string content, string prefix, int count, bool isListMember = false) { content += prefix + string.Format("[{0}]:", count.ToString()); WatchNode node = null; if (eIn.IsContainer) { if ((eIn as Value.Container).Item != null) { content += (eIn as Value.Container).Item.ToString(); node = new WatchNode((eIn as Value.Container).Item.ToString(), isListMember, count); handlerManager.ProcessNode((eIn as Value.Container).Item, node); //node.Link = id; } } else if (eIn.IsFunction) { content += eIn.ToString() + "\n"; node = new WatchNode("<function>", isListMember, count); } else if (eIn.IsList) { content += "List\n"; string newPrefix = prefix + "\t"; var list = (eIn as Value.List).Item; node = new WatchNode(list.IsEmpty ? "Empty List" : "List", isListMember, count); foreach (var e in list.Select((x, i) => new { Element = x, Index = i })) { node.Children.Add( Process(e.Element, ref content, newPrefix, e.Index, true) ); } } else if (eIn.IsNumber) { content += (eIn as Value.Number).Item.ToString() + "\n"; node = new WatchNode((eIn as Value.Number).Item.ToString(), isListMember, count); } else if (eIn.IsString) { content += (eIn as Value.String).Item.ToString() + "\n"; node = new WatchNode((eIn as Value.String).Item.ToString(), isListMember, count); } else if (eIn.IsSymbol) { content += (eIn as Value.Symbol).Item.ToString() + "\n"; node = new WatchNode((eIn as Value.Symbol).Item.ToString(), isListMember, count); } return node; }
WatchNode Process(Value eIn, ref string content, string prefix, int count) { content += prefix + string.Format("[{0}]:", count.ToString()); WatchNode node = null; if (eIn.IsContainer) { if ((eIn as Value.Container).Item != null) { //TODO: make clickable hyperlinks to show the element in Revit //http://stackoverflow.com/questions/7890159/programmatically-make-textblock-with-hyperlink-in-between-text content += (eIn as Value.Container).Item.ToString(); node = new WatchNode((eIn as Value.Container).Item.ToString()); handlerManager.ProcessNode((eIn as Value.Container).Item, node); //node.Link = id; } } else if (eIn.IsFunction) { content += eIn.ToString() + "\n"; node = new WatchNode("<function>"); } else if (eIn.IsList) { content += "List\n"; string newPrefix = prefix + "\t"; var list = (eIn as Value.List).Item; node = new WatchNode(list.IsEmpty ? "Empty List" : "List"); foreach (var e in list.Select((x, i) => new { Element = x, Index = i })) { node.Children.Add(Process(e.Element, ref content, newPrefix, e.Index)); } } else if (eIn.IsNumber) { content += (eIn as Value.Number).Item.ToString() + "\n"; node = new WatchNode((eIn as Value.Number).Item.ToString()); } else if (eIn.IsString) { content += (eIn as Value.String).Item.ToString() + "\n"; node = new WatchNode((eIn as Value.String).Item.ToString()); } else if (eIn.IsSymbol) { content += (eIn as Value.Symbol).Item.ToString() + "\n"; node = new WatchNode((eIn as Value.Symbol).Item.ToString()); } return node; }