GenerateModuleH: Replace string replace with string templates

Summary:
## Benefits:
- Improved Readability
- Improved type-safety with templates

Changelog: [Internal]

Differential Revision: D24386278

fbshipit-source-id: b6cfa9fe17e1f7c54f4d541fd19281bf9a6c6796
This commit is contained in:
Ramanpreet Nara 2020-10-19 21:56:26 -07:00 коммит произвёл Facebook GitHub Bot
Родитель ac46837d35
Коммит de32fd2539
1 изменённых файлов: 22 добавлений и 10 удалений

Просмотреть файл

@ -23,16 +23,26 @@ const {unwrapNullable} = require('../../parsers/flow/modules/utils');
type FilesOutput = Map<string, string>;
const moduleTemplate = `class JSI_EXPORT ::_HASTE_MODULE_NAME_::CxxSpecJSI : public TurboModule {
const ModuleClassDeclarationTemplate = ({
hasteModuleName,
moduleProperties,
}: $ReadOnly<{|hasteModuleName: string, moduleProperties: string|}>) => {
return `class JSI_EXPORT ${hasteModuleName}CxxSpecJSI : public TurboModule {
protected:
::_HASTE_MODULE_NAME_::CxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker);
${hasteModuleName}CxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker);
public:
::_MODULE_PROPERTIES_::
${moduleProperties}
};`;
};
const template = `/**
const FileTemplate = ({
modules,
}: $ReadOnly<{|
modules: string,
|}>) => {
return `/**
* ${'C'}opyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
@ -47,11 +57,12 @@ const template = `/**
namespace facebook {
namespace react {
::_MODULES_::
${modules}
} // namespace react
} // namespace facebook
`;
};
function translatePrimitiveJSTypeToCpp(
nullableTypeAnnotation: Nullable<NativeModuleTypeAnnotation>,
@ -164,15 +175,16 @@ module.exports = {
);
})
.join('\n');
return moduleTemplate
.replace(/::_MODULE_PROPERTIES_::/g, traversedProperties)
.replace(/::_HASTE_MODULE_NAME_::/g, hasteModuleName)
.replace('::_PROPERTIES_MAP_::', '');
return ModuleClassDeclarationTemplate({
hasteModuleName,
moduleProperties: traversedProperties,
});
})
.join('\n');
const fileName = 'NativeModules.h';
const replacedTemplate = template.replace(/::_MODULES_::/g, modules);
const replacedTemplate = FileTemplate({modules});
return new Map([[fileName, replacedTemplate]]);
},