summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Fischer <joeljfischer@gmail.com>2020-09-18 12:46:44 -0400
committerGitHub <noreply@github.com>2020-09-18 12:46:44 -0400
commiteebe4e42dc87526f511bdbec7df25ec05a55acb3 (patch)
treefcb21fd34030ae9969f663f5ffed274f2a179655
parentba15545ed19d124cfa317c0fb1ca39a3ab2b4498 (diff)
parentbb745b8f88fb0e5b3cb06b3f8c75ddba3c4c419f (diff)
downloadsdl_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.jinja22
-rw-r--r--generator/templates/functions/template.m.jinja22
-rw-r--r--generator/templates/structs/template.m.jinja21
-rw-r--r--generator/transformers/common_producer.py27
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'])