bool ILanguangeExporter.AppendCodes( ref StringBuilder sb, FhirProperty property, string parentName ) { // **** put a comment **** sb.Append($"/**\n * Code Values for the {parentName}.{property.Name} field\n */\n"); // **** open our enum *** sb.Append($"export enum {parentName}{property.NameCapitalized}Codes {{\n"); // **** start adding values **** foreach (string code in property.CodeValues) { FhirTypeManager.SanitizeForCode(code, _reservedWordsSet, out string name, out string value); sb.Append($"\t{name.ToUpper()} = \"{value}\",\n"); } // **** close our enum *** sb.Append("}\n"); return(true); }
bool ILanguangeExporter.AppendCodes( ref StringBuilder sb, FhirProperty property, string parentName ) { // **** put a comment **** sb.Append($"\t///<summary>Code Values for the {parentName}.{property.Name} field</summary>\n"); // **** open our enum *** sb.Append($"\tpublic sealed class {parentName}{property.NameCapitalized}Codes {{\n"); // **** start adding values **** foreach (string code in property.CodeValues) { FhirTypeManager.SanitizeForCode(code, _reservedWordsSet, out string name, out string value); sb.Append($"\t\tpublic const string {name.ToUpper()} = \"{value}\";\n"); } // **** close our enum *** sb.Append("\t}\n"); return(true); }
bool ILanguangeExporter.AppendFhirProperty( ref StringBuilder sb, FhirProperty property, string typeName, bool useLowerCaseName ) { // **** always use lower-case start **** string name = FhirTypeManager.SanitizeForProperty(property.Name, _reservedWordsSet); string comment = FhirTypeManager.SanitizeComment(property.Comment, _lineComment, _indentChar, 2); string optionalFlagString = (_flagOptionals && property.IsOptional) ? "?" : ""; // **** **** if (property.IsArray) { sb.Append( $"\t/**\n" + $"\t * {comment}\n" + //$"\t * Cardinality: {property.Cardinality}\n" + $"\t */\n" + $"\t{name}{optionalFlagString}: {typeName}[];\n" + $"\t/**\n" + $"\t * May contain extended information for property: '{name}'\n" + $"\t */\n" + $"\t_{name}?: Element[];\n" ); return(true); } sb.Append( $"\t/**\n" + $"\t * {comment}\n" + //$"\t * Cardinality: {property.Cardinality}\n" + $"\t */\n" + $"\t{name}{optionalFlagString}: {typeName};\n" + $"\t/**\n" + $"\t * May contain extended information for property: '{name}'\n" + $"\t */\n" + $"\t_{name}?: Element;\n" ); return(true); }
bool ILanguangeExporter.AppendFhirProperty( ref StringBuilder sb, FhirProperty property, string typeName, bool useLowerCaseName ) { string nameCamel = FhirTypeManager.SanitizeForProperty(property.Name, _reservedWordsSet); string namePascal = FhirTypeManager.SanitizeForProperty(property.NameCapitalized, _reservedWordsSet); string propertyName; string extendedName; if (useLowerCaseName) { propertyName = nameCamel; extendedName = nameCamel; } else { switch (LanguageStyle) { case (int)CSharpStyle.SystemTextJson: propertyName = namePascal; extendedName = namePascal; break; case (int)CSharpStyle.Newtonsoft: propertyName = namePascal; extendedName = namePascal; break; case (int)CSharpStyle.Plain: default: propertyName = namePascal; extendedName = nameCamel; break; } } string propertyAnnotation = ""; string extendedAnnotation = ""; switch (LanguageStyle) { case (int)CSharpStyle.SystemTextJson: propertyAnnotation = $"\t\t[JsonPropertyName(\"{property.Name}\")]\n"; extendedAnnotation = $"\t\t[JsonPropertyName(\"_{property.Name}\")]\n"; break; case (int)CSharpStyle.Newtonsoft: propertyAnnotation = $"\t\t[JsonProperty(PropertyName = \"{property.Name}\")]\n"; extendedAnnotation = $"\t\t[JsonProperty(PropertyName = \"_{property.Name}\")]\n"; break; case (int)CSharpStyle.Plain: default: break; } string comment = FhirTypeManager.SanitizeComment(property.Comment, _lineComment, _indentChar, 2); string optionalFlagString = (_flagOptionals && property.IsOptional) ? "?" : ""; // **** nullable reference types are not allowed in current C# **** switch (typeName) { case "bool": case "decimal": case "DateTime": case "int": case "uint": case "Guid": // **** ignore - types can be optional **** break; default: // **** do not allow reference types to be null (for now) **** optionalFlagString = ""; break; } // **** **** if (property.IsArray) { sb.Append( $"\t\t///<summary>{comment}</summary>\n" + propertyAnnotation + $"\t\tpublic {typeName}[] {propertyName} {{ get; set; }}\n" + $"\t\t///<summary>May contain extended information for property: '{propertyName}'</summary>\n" + extendedAnnotation + $"\t\tpublic Element[] _{extendedName} {{ get; set; }}\n"); return(true); } sb.Append( $"\t\t///<summary>{comment}</summary>\n" + propertyAnnotation + $"\t\tpublic {typeName}{optionalFlagString} {propertyName} {{ get; set; }}\n" + $"\t\t///<summary>May contain extended information for property: '{propertyName}'</summary>\n" + extendedAnnotation + $"\t\tpublic Element _{extendedName} {{ get; set; }}\n"); return(true); }