internal override Union <ITypeErrorBuilder, PValue> TryCreateFromMap( string json, GreenJsonMapSyntax jsonMapSyntax, out SettingObject convertedValue, int mapSyntaxStartPosition, List <JsonErrorInfo> errors) { var mapBuilder = new Dictionary <string, PValue>(); // Analyze values with this schema while building the PMap. foreach (var(keyNodeStart, keyNode, valueNodeStart, valueNode) in jsonMapSyntax.ValidKeyValuePairs()) { if (TryGetProperty(new SettingKey(keyNode.Value), out SettingProperty property)) { var valueOrError = property.TryCreateValue( json, valueNode, mapSyntaxStartPosition + valueNodeStart, errors); if (valueOrError.IsOption2(out PValue convertedItemValue)) { mapBuilder.Add(keyNode.Value, convertedItemValue); } else { ITypeErrorBuilder typeError = valueOrError.ToOption1(); errors.Add(ValueTypeErrorAtPropertyKey.Create( typeError, keyNode, valueNode, json, mapSyntaxStartPosition + keyNodeStart, mapSyntaxStartPosition + valueNodeStart)); } } else { errors.Add(UnrecognizedPropertyKeyTypeError.Create( keyNode, json, mapSyntaxStartPosition + keyNodeStart)); } } var map = new PMap(mapBuilder); convertedValue = new SettingObject(this, map); return(map); }
internal abstract Union <ITypeErrorBuilder, PValue> TryCreateFromMap( string json, GreenJsonMapSyntax jsonMapSyntax, out T convertedValue, int valueNodeStartPosition, List <JsonErrorInfo> errors);