Index: tools/json_schema_compiler/js_externs_generator.py |
diff --git a/tools/json_schema_compiler/js_externs_generator.py b/tools/json_schema_compiler/js_externs_generator.py |
index 34552a7a888a10fa39c2fb49665c751cb56766ea..786f05838d8f7390c6a0866fc81265ec774426d9 100644 |
--- a/tools/json_schema_compiler/js_externs_generator.py |
+++ b/tools/json_schema_compiler/js_externs_generator.py |
@@ -126,7 +126,7 @@ class _Generator(object): |
"""Given an OrderedDict of properties, returns a Code containing the |
description of an object. |
""" |
- if not properties: return '' |
+ if not properties: return Code() |
c = Code() |
c.Sblock('{') |
@@ -212,38 +212,39 @@ class _Generator(object): |
def _TypeToJsType(self, js_type): |
"""Converts a model.Type to a JS type (number, Array, etc.)""" |
- c = Code() |
if js_type.property_type in (PropertyType.INTEGER, PropertyType.DOUBLE): |
- c.Append('number') |
- elif js_type.property_type is PropertyType.OBJECT: |
- c = self._GenerateObjectDefinition(js_type.properties) |
- elif js_type.property_type is PropertyType.ARRAY: |
- (c.Append('!Array<'). |
+ return Code().Append('number') |
+ if js_type.property_type is PropertyType.OBJECT: |
+ if js_type.properties: |
+ return self._GenerateObjectDefinition(js_type.properties) |
+ return Code().Append('Object') |
+ if js_type.property_type is PropertyType.ARRAY: |
+ return (Code().Append('!Array<'). |
Concat(self._TypeToJsType(js_type.item_type), new_line=False). |
Append('>', new_line=False)) |
- elif js_type.property_type is PropertyType.REF: |
+ if js_type.property_type is PropertyType.REF: |
ref_type = js_type.ref_type |
# Enums are defined as chrome.fooAPI.MyEnum, but types are defined simply |
# as MyType. |
if self._namespace.types[ref_type].property_type is PropertyType.ENUM: |
ref_type = '!chrome.%s.%s' % (self._namespace.name, ref_type) |
- c.Append(ref_type) |
- elif js_type.property_type is PropertyType.CHOICES: |
+ return Code().Append(ref_type) |
+ if js_type.property_type is PropertyType.CHOICES: |
+ c = Code() |
c.Append('(') |
for i, choice in enumerate(js_type.choices): |
c.Concat(self._TypeToJsType(choice), new_line=False) |
if i is not len(js_type.choices) - 1: |
c.Append('|', new_line=False) |
c.Append(')', new_line=False) |
- elif js_type.property_type is PropertyType.FUNCTION: |
- c = self._FunctionToJsFunction(js_type.function) |
- elif js_type.property_type is PropertyType.ANY: |
- c.Append('*') |
- elif js_type.property_type.is_fundamental: |
- c.Append(js_type.property_type.name) |
- else: |
- c.Append('?') # TODO(tbreisacher): Make this more specific. |
- return c |
+ return c |
+ if js_type.property_type is PropertyType.FUNCTION: |
+ return self._FunctionToJsFunction(js_type.function) |
+ if js_type.property_type is PropertyType.ANY: |
+ return Code().Append('*') |
+ if js_type.property_type.is_fundamental: |
+ return Code().Append(js_type.property_type.name) |
+ return Code().Append('?') # TODO(tbreisacher): Make this more specific. |
def _GenerateFunction(self, function): |
"""Generates the code representing a function, including its documentation. |