diff options
author | Joel Fischer <joeljfischer@gmail.com> | 2020-09-18 12:46:44 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-18 12:46:44 -0400 |
commit | eebe4e42dc87526f511bdbec7df25ec05a55acb3 (patch) | |
tree | fcb21fd34030ae9969f663f5ffed274f2a179655 | |
parent | ba15545ed19d124cfa317c0fb1ca39a3ab2b4498 (diff) | |
parent | bb745b8f88fb0e5b3cb06b3f8c75ddba3c4c419f (diff) | |
download | sdl_ios-eebe4e42dc87526f511bdbec7df25ec05a55acb3.tar.gz |
Merge pull request #1779 from smartdevicelink/bugfix/issue-1720-RPC-spec-generator-should-alphabetize-imports
Fixed RPC spec generator unsorted imports
-rw-r--r-- | generator/templates/base_struct_function.m.jinja2 | 2 | ||||
-rw-r--r-- | generator/templates/functions/template.m.jinja2 | 2 | ||||
-rw-r--r-- | generator/templates/structs/template.m.jinja2 | 1 | ||||
-rw-r--r-- | generator/transformers/common_producer.py | 27 |
4 files changed, 27 insertions, 5 deletions
diff --git a/generator/templates/base_struct_function.m.jinja2 b/generator/templates/base_struct_function.m.jinja2 index ee17b5ccf..4294858d4 100644 --- a/generator/templates/base_struct_function.m.jinja2 +++ b/generator/templates/base_struct_function.m.jinja2 @@ -2,8 +2,6 @@ "templates/functions/template.m" and "templates/structs/template.m". -#} {% include 'copyright.jinja2' %} {%- block imports %} -#import "{{name}}.h" -#import "NSMutableDictionary+Store.h" {%- for import in imports %} #import "{{import}}.h" {%- endfor %} diff --git a/generator/templates/functions/template.m.jinja2 b/generator/templates/functions/template.m.jinja2 index 9809b8df2..a8871754e 100644 --- a/generator/templates/functions/template.m.jinja2 +++ b/generator/templates/functions/template.m.jinja2 @@ -2,8 +2,6 @@ {% extends "base_struct_function.m.jinja2" %} {% block imports %} {{super()}} -#import "SDLRPCFunctionNames.h" -#import "SDLRPCParameterNames.h" {%- endblock %} {% block constructors %} #pragma clang diagnostic push diff --git a/generator/templates/structs/template.m.jinja2 b/generator/templates/structs/template.m.jinja2 index 488b076af..0e538c3ea 100644 --- a/generator/templates/structs/template.m.jinja2 +++ b/generator/templates/structs/template.m.jinja2 @@ -2,6 +2,5 @@ {% extends "base_struct_function.m.jinja2" %} {% block imports %} {{super()}} -#import "SDLRPCParameterNames.h" {%- endblock %} {% set parameters_store = 'store' %}
\ No newline at end of file diff --git a/generator/transformers/common_producer.py b/generator/transformers/common_producer.py index 16adea071..f3ac8c5bd 100644 --- a/generator/transformers/common_producer.py +++ b/generator/transformers/common_producer.py @@ -49,6 +49,11 @@ class InterfaceProducerCommon(ABC): :param render: dictionary with pre filled entries, which going to be filled/changed by reference :return: dictionary which going to be applied to Jinja2 template """ + + importsKey = 'imports' + enumKey = 'enum' + structKey = 'struct' + if item.description: render['description'] = self.extract_description(item.description) if item.since: @@ -64,6 +69,28 @@ class InterfaceProducerCommon(ABC): render['params'][param.name] = self.extract_param(param, item.name) if isinstance(item, (Struct, Function)): self.extract_imports(param, render['imports']) + + # Add additional known imports to the import list + if isinstance(item, (Struct, Function)): + name = 'SDL' + item.name + render[importsKey]['.m'].add( "NSMutableDictionary+Store" ) + render[importsKey]['.m'].add(name) + render[importsKey]['.h'][enumKey] = list(render[importsKey]['.h'][enumKey]) + (render[importsKey]['.h'][enumKey]).sort() + render[importsKey]['.h'][structKey] = list(render[importsKey]['.h'][structKey]) + (render[importsKey]['.h'][structKey]).sort() + + if isinstance(item, Struct): + name = 'SDL' + item.name + render[importsKey]['.m'].add( "SDLRPCParameterNames" ) + + if isinstance(item, Function): + render[importsKey]['.m'].add( "SDLRPCFunctionNames" ) + render[importsKey]['.m'].add( "SDLRPCParameterNames" ) + + # Sort the import list to ensure they appear in alphabetical order in the template + render[importsKey]['.m'] = list(render[importsKey]['.m']) + (render[importsKey]['.m']).sort() if 'constructors' not in render and isinstance(item, (Struct, Function)): render['constructors'] = self.extract_constructors(render['params']) |