mirror of
https://github.com/openharmony/tools_previewer.git
synced 2026-07-01 20:44:05 -04:00
!153 修改callback回调函数中多参数的函数mock报错的问题
Merge pull request !153 from yy/master
This commit is contained in:
@@ -301,7 +301,7 @@ const paramsTypeStart = {
|
||||
'Array': '[]',
|
||||
'Object': '{}',
|
||||
'{': '{}',
|
||||
'string': '',
|
||||
'string': '""',
|
||||
'number': 0,
|
||||
'boolean': false
|
||||
};
|
||||
@@ -322,6 +322,9 @@ const removeCallback = (str: string) => {
|
||||
callbackParams.value = matchValue ? matchValue[1] : '';
|
||||
callbackParams.type = 'AsyncCallback';
|
||||
}
|
||||
if (callbackParams.value.includes(',')) {
|
||||
callbackParams.value = callbackParams.value.split(',')[0];
|
||||
}
|
||||
return callbackParams;
|
||||
};
|
||||
|
||||
@@ -353,54 +356,79 @@ const hasDotFirstWord = (str: string) => {
|
||||
return str.includes('.') ? str.split('.')[0] : str;
|
||||
};
|
||||
|
||||
/**
|
||||
* get callback parameters data
|
||||
* @returns data: parameters data: type: AsyncCallback or Callback
|
||||
*/
|
||||
const setCallbackData = (mockApi: string, paramTypeString: string): {data: string, type: string} => {
|
||||
const callbackParams = removeCallback(paramTypeString);
|
||||
let callbackData = '';
|
||||
let importType = '';
|
||||
if (callbackParams.value) {
|
||||
importType = isInImportType(mockApi, callbackParams.value);
|
||||
}
|
||||
if (importType === 'isHasDotImportMock') {
|
||||
const upperWord = firstLetterWord(callbackParams.value); // Image.PixelMap
|
||||
const firstWord = hasDotFirstWord(upperWord); // Image
|
||||
callbackData = `mock${firstWord}()${upperWord.slice(firstWord.length)}`;
|
||||
} else if (importType === 'isNoHasDotImportMock') {
|
||||
callbackData = callbackParams.value;
|
||||
} else if (importType === 'isImportMock') {
|
||||
callbackData = `mock${firstLetterWord(callbackParams.value)}()`;
|
||||
} else if (importType === 'isImport') {
|
||||
callbackData = callbackParams.value;
|
||||
} else if (importType === 'noImport') {
|
||||
let paramsTypeNoHas = true;
|
||||
if (callbackParams.value.endsWith(']')) {
|
||||
callbackData = '[]';
|
||||
} else {
|
||||
Object.keys(paramsTypeStart).forEach(item => {
|
||||
if (callbackParams.value.startsWith(item)) {
|
||||
callbackData = paramsTypeStart[item];
|
||||
paramsTypeNoHas = false;
|
||||
}
|
||||
});
|
||||
if (paramsTypeNoHas) {
|
||||
callbackData = callbackParams.value;
|
||||
}
|
||||
if (callbackParams.value === 'Date') {
|
||||
callbackData = 'new Date()';
|
||||
}
|
||||
if (callbackParams.value === 'Uint8Array') {
|
||||
callbackData = 'new Uint8Array()';
|
||||
}
|
||||
if (callbackParams.value === 'T') {
|
||||
callbackData = '[PC Preview] unknown type';
|
||||
}
|
||||
}
|
||||
} else {
|
||||
callbackData = '[PC Preview] unknown type';
|
||||
}
|
||||
return {
|
||||
data: callbackData,
|
||||
type: callbackParams.type
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* get callback statement
|
||||
* @returns image.PixelMap mockImage.PixelMap mockImage
|
||||
* @returns callback statement
|
||||
*/
|
||||
export function getCallbackStatement(mockApi: string, paramTypeString?: string): string {
|
||||
let outPut = `if (args && typeof args[args.length - 1] === 'function') {
|
||||
args[args.length - 1].call(this,`;
|
||||
const callbackError = "{'code': '','data': '','name': '','message': '','stack': ''}";
|
||||
let callbackData = '';
|
||||
let callbackDataParams = {
|
||||
type: '',
|
||||
data: '[PC Preview] unknown type'
|
||||
};
|
||||
if (paramTypeString) {
|
||||
const callbackParams = removeCallback(paramTypeString);
|
||||
let importType = '';
|
||||
if (callbackParams.value) {
|
||||
importType = isInImportType(mockApi, callbackParams.value);
|
||||
}
|
||||
if (importType === 'isHasDotImportMock') {
|
||||
const upperWord = firstLetterWord(callbackParams.value); // Image.PixelMap
|
||||
const firstWord = hasDotFirstWord(upperWord); // Image
|
||||
callbackData = `mock${firstWord}()${upperWord.slice(firstWord.length)}`;
|
||||
} else if (importType === 'isNoHasDotImportMock') {
|
||||
callbackData = callbackParams.value;
|
||||
} else if (importType === 'isImportMock') {
|
||||
callbackData = `mock${firstLetterWord(callbackParams.value)}()`;
|
||||
} else if (importType === 'isImport') {
|
||||
callbackData = callbackParams.value;
|
||||
} else if (importType === 'noImport') {
|
||||
let paramsTypeNoHas = true;
|
||||
if (callbackParams.value.endsWith(']')) {
|
||||
callbackData = '[]';
|
||||
} else {
|
||||
Object.keys(paramsTypeStart).forEach(item => {
|
||||
if (callbackParams.value.startsWith(item)) {
|
||||
callbackData = paramsTypeStart[item];
|
||||
paramsTypeNoHas = false;
|
||||
}
|
||||
});
|
||||
if (paramsTypeNoHas) {
|
||||
callbackData = callbackParams.value;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
callbackData = '[PC Preview] unknown type';
|
||||
}
|
||||
if (callbackParams.type === 'AsyncCallback') {
|
||||
outPut += ` ${callbackError},`;
|
||||
}
|
||||
callbackDataParams = setCallbackData(mockApi, paramTypeString);
|
||||
}
|
||||
outPut += callbackData === '[PC Preview] unknown type' ? ` '${callbackData}');\n}` : ` ${callbackData});\n}`;
|
||||
if (callbackDataParams?.type === 'AsyncCallback') {
|
||||
outPut += ` ${callbackError},`;
|
||||
}
|
||||
outPut += callbackDataParams.data === '[PC Preview] unknown type' ? ` '${callbackDataParams.data}');\n}` : ` ${callbackDataParams.data});\n}`;
|
||||
return outPut;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user