Add setMethodArgConversionSelector

Summary: `setMethodArgConversionSelector` is method for provinding generated structs for methods' params. It was exactly how in old codegen.

Reviewed By: RSNara

Differential Revision: D16784403

fbshipit-source-id: d35bc8160be62385527299a6b8e68c1159002853
This commit is contained in:
Michał Osadnik 2019-08-14 04:55:37 -07:00 коммит произвёл Facebook Github Bot
Родитель 40dd48c6bd
Коммит c0304aaa9b
2 изменённых файлов: 27 добавлений и 1 удалений

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

@ -36,7 +36,7 @@ const moduleTemplate = `
Native::_MODULE_NAME_::SpecJSI::Native::_MODULE_NAME_::SpecJSI(id<RCTTurboModule> instance, std::shared_ptr<JSCallInvoker> jsInvoker)
: ObjCTurboModule("::_MODULE_NAME_::", instance, jsInvoker) {
::_PROPERTIES_MAP_::
::_PROPERTIES_MAP_::::_CONVERSION_SELECTORS_::
}`.trim();
const getterTemplate = `
@ -48,6 +48,9 @@ const getterTemplate = `
@end
`.trim();
const argConvertionTemplate =
'\n setMethodArgConversionSelector(@"::_ARG_NAME_::", ::_ARG_NUMBER_::, @"JS_Native::_MODULE_NAME_::_Spec::_SELECTOR_NAME_:::");';
const template = `
/**
* Copyright (c) Facebook, Inc. and its affiliates.
@ -221,6 +224,28 @@ module.exports = {
)
.join('\n'),
)
.replace(
'::_CONVERSION_SELECTORS_::',
properties
.map(({name: propertyName, typeAnnotation: {params}}) =>
params
.map((param, index) =>
param.typeAnnotation.type === 'ObjectTypeAnnotation' &&
param.typeAnnotation.properties
? argConvertionTemplate
.replace(
'::_SELECTOR_NAME_::',
capitalizeFirstLetter(propertyName) +
capitalizeFirstLetter(param.name),
)
.replace('::_ARG_NUMBER_::', index.toString())
.replace('::_ARG_NAME_::', propertyName)
: '',
)
.join(''),
)
.join(''),
)
.replace(/::_MODULE_NAME_::/g, name);
})
.join('\n');

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

@ -40,6 +40,7 @@ static facebook::jsi::Value __hostFunction_NativeSampleTurboModuleSpecJSI_diffic
NativeSampleTurboModuleSpecJSI::NativeSampleTurboModuleSpecJSI(id<RCTTurboModule> instance, std::shared_ptr<JSCallInvoker> jsInvoker)
: ObjCTurboModule(\\"SampleTurboModule\\", instance, jsInvoker) {
methodMap_[\\"difficult\\"] = MethodMetadata {1, __hostFunction_NativeSampleTurboModuleSpecJSI_difficult};
setMethodArgConversionSelector(@\\"difficult\\", 0, @\\"JS_NativeSampleTurboModule_SpecDifficultA:\\");
}