(
self,
message: Message,
indent: int = 0,
parent_stack: Optional[List[Message]] = None,
)
| 890 | return lines |
| 891 | |
| 892 | def generate_message( |
| 893 | self, |
| 894 | message: Message, |
| 895 | indent: int = 0, |
| 896 | parent_stack: Optional[List[Message]] = None, |
| 897 | ) -> List[str]: |
| 898 | lines: List[str] = [] |
| 899 | ind = self.indent_str * indent |
| 900 | parent_stack = parent_stack or [] |
| 901 | lineage = parent_stack + [message] |
| 902 | module_class = self.get_module_class_name() |
| 903 | type_name = self.safe_type_identifier(message.name) |
| 904 | full_type_ref = self._type_reference_for_local(message) |
| 905 | |
| 906 | comment = self.format_type_id_comment(message, f"{ind}//") |
| 907 | if comment: |
| 908 | lines.append(comment) |
| 909 | if self.get_effective_evolving(message): |
| 910 | lines.append(f"{ind}[ForyStruct]") |
| 911 | else: |
| 912 | lines.append(f"{ind}[ForyStruct(Evolving = false)]") |
| 913 | lines.append(f"{ind}public sealed partial class {type_name}") |
| 914 | lines.append(f"{ind}{{") |
| 915 | |
| 916 | for nested_enum in message.nested_enums: |
| 917 | lines.append("") |
| 918 | lines.extend(self.generate_enum(nested_enum, indent + 1)) |
| 919 | |
| 920 | for nested_union in message.nested_unions: |
| 921 | lines.append("") |
| 922 | lines.extend(self.generate_union(nested_union, indent + 1, lineage)) |
| 923 | |
| 924 | for nested_msg in message.nested_messages: |
| 925 | lines.append("") |
| 926 | lines.extend(self.generate_message(nested_msg, indent + 1, lineage)) |
| 927 | |
| 928 | used_field_names: Set[str] = set() |
| 929 | for field in message.fields: |
| 930 | lines.append("") |
| 931 | schema_type = self._schema_type_hint(field.field_type) |
| 932 | if schema_type: |
| 933 | lines.append( |
| 934 | f"{ind}{self.indent_str}[ForyField({field.number}, Type = typeof({schema_type}))]" |
| 935 | ) |
| 936 | else: |
| 937 | lines.append(f"{ind}{self.indent_str}[ForyField({field.number})]") |
| 938 | field_name = self._field_member_name(field, message, used_field_names) |
| 939 | field_type = self.generate_type( |
| 940 | field.field_type, |
| 941 | nullable=field.optional, |
| 942 | parent_stack=lineage, |
| 943 | ) |
| 944 | init = self._default_initializer(field, lineage) or "" |
| 945 | lines.append( |
| 946 | f"{ind}{self.indent_str}public {field_type} {field_name} {{ get; set; }}{init}" |
| 947 | ) |
| 948 | |
| 949 | lines.append("") |
no test coverage detected