/// <summary> /// Initializes a new instance of the <see cref="DataModelMember"/> class. /// </summary> /// <param name="declaredName">The name declaring this member in the source G4 file.</param> /// <param name="rank"> /// The rank of the property; e.g. 0 = int, 1 = List{int}, 2 = List{List{int}}. /// </param> /// <param name="required">true if required in JSON.</param> public DataModelMember(string declaredName, int rank, bool required) : this( declaredName, LinguisticTransformer.ToCSharpName(declaredName), LinguisticTransformer.ToJsonName(declaredName), String.Empty, LinguisticTransformer.ToArgumentName(declaredName), String.Empty, String.Empty, String.Empty, String.Empty, String.Empty, rank, required ) { }
internal void AddMember(GrammarSymbol declSymbol, int rank, bool required, string delimeter = null) { string declaredName = declSymbol.GetLogicalText(); string annotationName = declSymbol.Annotations.GetAnnotationValue("name"); string pattern = declSymbol.Annotations.GetAnnotationValue("pattern"); string minimum = declSymbol.Annotations.GetAnnotationValue("minimum"); string minItems = declSymbol.Annotations.GetAnnotationValue("minItems"); string uniqueItems = declSymbol.Annotations.GetAnnotationValue("uniqueItems"); string defaultValue = declSymbol.Annotations.GetAnnotationValue("default"); string cSharpName = annotationName ?? LinguisticTransformer.ToCSharpName(declaredName); string serializedName = declSymbol.Annotations.GetAnnotationValue("serializedName"); if (serializedName == null) { serializedName = LinguisticTransformer.ToJsonName(cSharpName); } if (serializedName == null) { serializedName = LinguisticTransformer.ToJsonName(declaredName); } string argumentName = declSymbol.Annotations.GetAnnotationValue("argumentName"); if (argumentName == null) { if (annotationName == null) { argumentName = LinguisticTransformer.ToArgumentName(declaredName); } else { argumentName = LinguisticTransformer.ToArgumentName(annotationName); } } foreach (DataModelMember existingMember in this.Members) { if (existingMember.CSharpName == cSharpName) { throw new G4ParseFailureException(declSymbol.GetLocation(), Strings.DuplicateCSharpMemberName, cSharpName); } if (existingMember.SerializedName == serializedName) { throw new G4ParseFailureException(declSymbol.GetLocation(), Strings.DuplicateJsonMemberName, serializedName); } if (existingMember.ArgumentName == argumentName) { throw new G4ParseFailureException(declSymbol.GetLocation(), Strings.DuplicateArgumentName, argumentName); } } DataModelMember newMember = new DataModelMember( declaredName, cSharpName, serializedName, declSymbol.Annotations.GetAnnotationValue("summary"), argumentName, pattern, minimum, minItems, uniqueItems, defaultValue, rank, required ); this.Members.Add(newMember); this.ToStringEntries.Add(new ToStringEntry(delimeter, newMember)); }