public static IEnumerable<dynamic> ReadValuesFromString(OsloExtensions.Parser parser, string text) { foreach (var edge in Node.ReadFromString(text)) { yield return NodeToObject(parser, edge.Node); } }
// this method is the only way to go from the low-level // node world to the world of (dynamic) objects public static object NodeToObject(OsloExtensions.Parser parser, Node node) { if (node.NodeKind == NodeKind.Atomic) return node.AtomicValue; else return new DynamicObjectNode(parser, node); }
public static IEnumerable<dynamic> ReadValues(OsloExtensions.Parser parser, TextReader reader) { foreach (var edge in Node.ReadFrom(reader)) { yield return NodeToObject(parser, edge.Node); } }
// we never want to double-wrap, so all construction // goes through NodeToObject, which unwraps atomics internal DynamicObjectNode(OsloExtensions.Parser parser, Node node) { this.parser = parser; this.node = node; }