3 using SharpYaml.Serialization;
5 namespace SiliconStudio.Core.Yaml
12 internal YamlMappingNode node;
14 public YamlMappingNode Node
29 var yamlKey = ConvertFromDynamic(key);
30 var keyPosition = node.Children.IndexOf(yamlKey);
32 if (keyPosition == movePosition)
36 var item = node.Children[keyPosition];
37 node.Children.RemoveAt(keyPosition);
40 if (movePosition > keyPosition)
44 node.Children.Insert(movePosition, item.Key, item.Value);
49 var yamlKey = ConvertFromDynamic(key);
50 var keyPosition = node.Children.IndexOf(yamlKey);
51 node.Children.RemoveAt(keyPosition);
56 var yamlKey = ConvertFromDynamic(key);
58 return node.Children.IndexOf(yamlKey);
61 public override bool TryConvert(ConvertBinder binder, out
object result)
63 if (binder.Type.IsAssignableFrom(node.GetType()))
69 throw new InvalidOperationException();
74 public override bool TryGetMember(GetMemberBinder binder, out
object result)
76 result = GetValue(
new YamlScalarNode(binder.Name));
80 public override bool TrySetMember(SetMemberBinder binder,
object value)
82 var key =
new YamlScalarNode(binder.Name);
85 node.Children.Remove(key);
87 node.Children[key] = ConvertFromDynamic(value);
91 public override bool TrySetIndex(SetIndexBinder binder,
object[] indexes,
object value)
93 var key = ConvertFromDynamic(indexes[0]);
95 node.Children.Remove(key);
97 node.Children[key] = ConvertFromDynamic(value);
101 public override bool TryGetIndex(GetIndexBinder binder,
object[] indexes, out
object result)
103 var key = ConvertFromDynamic(indexes[0]);
104 result = GetValue(key);
108 private object GetValue(YamlNode key)
111 if (node.Children.TryGetValue(key, out result))
113 return ConvertToDynamic(result);
Dynamic version of YamlMappingNode.
override bool TrySetIndex(SetIndexBinder binder, object[] indexes, object value)
DynamicYamlMapping(YamlMappingNode node)
Placeholder value to remove keys from DynamicYamlMapping.
void MoveChild(object key, int movePosition)
override bool TrySetMember(SetMemberBinder binder, object value)
override bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object result)
void RemoveChild(object key)
override bool TryConvert(ConvertBinder binder, out object result)
override bool TryGetMember(GetMemberBinder binder, out object result)