(
self,
message: Message,
indent: int = 0,
parent_stack: Optional[List[Message]] = None,
)
| 998 | return lines |
| 999 | |
| 1000 | def generate_message( |
| 1001 | self, |
| 1002 | message: Message, |
| 1003 | indent: int = 0, |
| 1004 | parent_stack: Optional[List[Message]] = None, |
| 1005 | ) -> List[str]: |
| 1006 | lines: List[str] = [] |
| 1007 | ind = self.indent_str * indent |
| 1008 | parent_stack = parent_stack or [] |
| 1009 | lineage = parent_stack + [message] |
| 1010 | type_name = self._declared_type_name(message.name, parent_stack) |
| 1011 | is_class = self.message_is_class(message) |
| 1012 | |
| 1013 | comment = self.format_type_id_comment(message, f"{ind}//") |
| 1014 | if comment: |
| 1015 | lines.append(comment) |
| 1016 | if self.get_effective_evolving(message): |
| 1017 | lines.append(f"{ind}@ForyStruct") |
| 1018 | else: |
| 1019 | lines.append(f"{ind}@ForyStruct(evolving: false)") |
| 1020 | |
| 1021 | if is_class: |
| 1022 | declaration = f"public final class {type_name}" |
| 1023 | else: |
| 1024 | conformance = ( |
| 1025 | ": Equatable" if self.message_supports_equatable(message) else "" |
| 1026 | ) |
| 1027 | declaration = f"public struct {type_name}{conformance}" |
| 1028 | lines.append(f"{ind}{declaration} {{") |
| 1029 | |
| 1030 | for nested_enum in message.nested_enums: |
| 1031 | lines.append("") |
| 1032 | lines.extend( |
| 1033 | self.generate_enum( |
| 1034 | nested_enum, |
| 1035 | indent=indent + 1, |
| 1036 | parent_stack=lineage, |
| 1037 | ) |
| 1038 | ) |
| 1039 | |
| 1040 | for nested_union in message.nested_unions: |
| 1041 | lines.append("") |
| 1042 | lines.extend( |
| 1043 | self.generate_union( |
| 1044 | nested_union, |
| 1045 | indent=indent + 1, |
| 1046 | parent_stack=lineage, |
| 1047 | ) |
| 1048 | ) |
| 1049 | |
| 1050 | for nested_msg in message.nested_messages: |
| 1051 | lines.append("") |
| 1052 | lines.extend( |
| 1053 | self.generate_message( |
| 1054 | nested_msg, |
| 1055 | indent=indent + 1, |
| 1056 | parent_stack=lineage, |
| 1057 | ) |
no test coverage detected