Christian Krebs avatar Christian Krebs committed a3c9603 Draft

Fixed JS class generation.

Comments (0)

Files changed (1)

hob/templates/js/js-message-classes.mako

   % endif
 cls.${service.name}["${version}"].${message.name} = function(arr)
 {
-  % for field in message.fields:
+  % for index, field in enumerate(message.fields):
     % if field.doc:
 ${print_doc(field.doc, 1, INDENT)}
     % endif
     % endif
     % if field.q.name == "repeated":
       % if field.type.name in ["message"]:
-${INDENT}this.${field.name} = (arr[${str(field.number - 1)}] || []).map(function(item)
+${INDENT}this.${field.name} = (arr[${str(index)}] || []).map(function(item)
 ${INDENT}{
 ${INDENT * 2}return new cls.${service.name}["${version}"].${field.typename()}(item);
 ${INDENT}});
       % else:
-${INDENT}this.${field.name} = arr[${str(field.number - 1)}] || [];
+${INDENT}this.${field.name} = arr[${str(index)}] || [];
       % endif
     % elif field.message and isinstance(field.message, proto.Message):
-${INDENT}this.${field.name} = arr[${str(field.number - 1)}] ? new cls.${service.name}["${version}"].${field.typename()}(arr[${str(field.number - 1)}], this) : null;
+${INDENT}this.${field.name} = arr[${str(index)}] ? new cls.${service.name}["${version}"].${field.typename()}(arr[${str(index)}]) : null;
     % else:
       % if field.message and isinstance(field.message, proto.Enum):
 ${INDENT}// cls.${service.name}["${version}"].${".".join(field.message.path())}
       % endif
-${INDENT}this.${field.name} = arr[${str(field.number - 1)}];
+${INDENT}this.${field.name} = arr[${str(index)}];
     % endif
   % endfor
 };
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.