(
self,
message: Message,
indent: int,
parent_stack: Optional[List[Message]] = None,
)
| 978 | return lines |
| 979 | |
| 980 | def generate_message( |
| 981 | self, |
| 982 | message: Message, |
| 983 | indent: int, |
| 984 | parent_stack: Optional[List[Message]] = None, |
| 985 | ) -> List[str]: |
| 986 | parent_stack = parent_stack or [] |
| 987 | current_stack = parent_stack + [message] |
| 988 | lines: List[str] = [] |
| 989 | for enum in message.nested_enums: |
| 990 | lines.extend(self.generate_enum(enum, indent)) |
| 991 | lines.append("") |
| 992 | for union in message.nested_unions: |
| 993 | lines.extend(self.generate_union(union, indent, current_stack)) |
| 994 | lines.append("") |
| 995 | for nested in message.nested_messages: |
| 996 | lines.extend(self.generate_message(nested, indent, current_stack)) |
| 997 | lines.append("") |
| 998 | |
| 999 | name = self.local_name(message) |
| 1000 | full = self.ref_name(message) |
| 1001 | lines.extend( |
| 1002 | [ |
| 1003 | f"{self.indent_str * indent}{self.struct_annotation(message)}", |
| 1004 | f"{self.indent_str * indent}final class {name} {{", |
| 1005 | f"{self.indent_str * (indent + 1)}{name}();", |
| 1006 | "", |
| 1007 | ] |
| 1008 | ) |
| 1009 | for field in message.fields: |
| 1010 | for annotation in self.field_annotations(field, current_stack): |
| 1011 | lines.append(f"{self.indent_str * (indent + 1)}{annotation}") |
| 1012 | lines.append( |
| 1013 | f"{self.indent_str * (indent + 1)}{self.dart_type(field.field_type, field.optional, current_stack)} {self.safe_identifier(self.to_camel_case(field.name))} = {self.default_value(field, current_stack)};" |
| 1014 | ) |
| 1015 | lines.extend( |
| 1016 | [ |
| 1017 | "", |
| 1018 | f"{self.indent_str * (indent + 1)}Uint8List toBytes() => {self.module_type_name()}.getFory().serialize(this);", |
| 1019 | f"{self.indent_str * (indent + 1)}static {full} fromBytes(Uint8List bytes) => {self.module_type_name()}.getFory().deserialize<{full}>(bytes);", |
| 1020 | "", |
| 1021 | f"{self.indent_str * (indent + 1)}@override", |
| 1022 | f"{self.indent_str * (indent + 1)}bool operator ==(Object other) => identical(this, other) || (other is {name}" |
| 1023 | + "".join( |
| 1024 | f" && other.{self.safe_identifier(self.to_camel_case(f.name))} == {self.safe_identifier(self.to_camel_case(f.name))}" |
| 1025 | for f in message.fields |
| 1026 | ) |
| 1027 | + ");", |
| 1028 | "", |
| 1029 | f"{self.indent_str * (indent + 1)}@override", |
| 1030 | f"{self.indent_str * (indent + 1)}int get hashCode => Object.hashAll([{', '.join(self.safe_identifier(self.to_camel_case(f.name)) for f in message.fields)}]);", |
| 1031 | f"{self.indent_str * indent}}}", |
| 1032 | ] |
| 1033 | ) |
| 1034 | return lines |
| 1035 | |
| 1036 | def _field_info_lines( |
| 1037 | self, |
no test coverage detected