Skip to content

Commit

Permalink
Merge 2ddff8c into c79fb9f
Browse files Browse the repository at this point in the history
  • Loading branch information
akhil0203 committed Apr 29, 2024
2 parents c79fb9f + 2ddff8c commit 419f79b
Showing 1 changed file with 43 additions and 32 deletions.
75 changes: 43 additions & 32 deletions framework/src/helper/function-analyzer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,61 +24,72 @@ const getEnv = (name: string, defaultValue: string,): string => {
}
return defaultValue;
};

// eslint-disable-next-line complexity
const buildParameter = (parameter: string,): Param => {
const commentAndAssignmentRegExp=/\/\*.+\*\/.+=.+/u;
const commentRegExp=/\/\*.+\*\/.+/u;
const assignmentRegExp=/.+=.+/u;
const commentOrAssignmentAtEndRegExp =/\/\*.+\*\/|=.+$/gu;
const whitespaceRegExp =/\s*/gu;
const beginningAssignmentRegExp=/^.+=/u;
const leadingOrTrailingWhitespaceRegExp=/^\s*|\s*$/gu;
const commentBlockOrWhitespaceRegExp=/^.*\/\*|\*\/.+$/gu;
const buildParameter = (parameter: string): Param => {
const value: Param = {
name: '',
type: 'string',
default: '',
value: '',
envName: '',
};
if (parameter.match(/\/\*.+\*\/.+=.+/u,)) {
const processCommentAndAssignment = (parameter: string, value: Param) => {
value.name = parameter
.replace(/(\/\*.+\*\/)|(=.+$)/gu, '',)
.replace(/\s*/gu, '',);
.replace(commentOrAssignmentAtEndRegExp, '',)
.replace(whitespaceRegExp, '',);
value.default = parameter
.replace(/^.+=/u, '',)
.replace(/(^\s*)|(\s*$)/gu, '',);
.replace(beginningAssignmentRegExp, '',)
.replace(leadingOrTrailingWhitespaceRegExp, '',);
value.type = parameter
.replace(/(^.*\/\*)|(\*\/.+$)/gu, '',)
.replace(/\s*/gu, '',)
.replace(commentBlockOrWhitespaceRegExp, '',)
.replace(whitespaceRegExp, '',)
.toLowerCase();
return value;
}
if (parameter.match(/\/\*.+\*\/.+/u,)) {
};
const processComment = (parameter: string, value: Param) => {
value.name = parameter
.replace(/(\/\*.+\*\/)|(=.+$)/gu, '',)
.replace(/\s*/gu, '',);
.replace(commentOrAssignmentAtEndRegExp, '',)
.replace(whitespaceRegExp, '',);
value.default = '';
value.type = parameter
.replace(/(^.*\/\*)|(\*\/.+$)/gu, '',)
.replace(/\s*/gu, '',)
.replace(commentBlockOrWhitespaceRegExp, '',)
.replace(whitespaceRegExp, '',)
.toLowerCase();
if (value.type === 'boolean') {
value.default = 'false';
} else if (value.type === 'number') {
value.default = '0';
value.default = '0';
}
return value;
}
if (parameter.match(/.+=.+/u,)) {
};
const processAssignment = (parameter: string, value: Param) => {
value.name = parameter
.replace(/(\/\*.+\*\/)|(=.+$)/gu, '',)
.replace(/\s*/gu, '',);
.replace(commentOrAssignmentAtEndRegExp, '',)
.replace(whitespaceRegExp, '',);
value.default = parameter
.replace(/^.+=/u, '',)
.replace(/(^\s*)|(\s*$)/gu, '',);
.replace(beginningAssignmentRegExp, '',)
.replace(leadingOrTrailingWhitespaceRegExp, '',);
if (! Number.isNaN(Number.parseFloat(value.default,),)) {
value.type = 'number';
} else if (value.default === 'true' || value.default === 'false') {
value.type = 'boolean';
value.type = 'boolean';
}
return value;
};
if (commentAndAssignmentRegExp.exec(parameter,)) {
processCommentAndAssignment(parameter, value);
} else if (commentRegExp.exec(parameter)) {
processComment(parameter, value);
} else if (assignmentRegExp.exec(parameter)) {
processAssignment(parameter, value);
} else {
value.name = parameter.replace(whitespaceRegExp, '');
}
value.name = parameter.replace(/\s*/gu, '',);
return value;
return value;
};
// eslint-disable-next-line complexity
const parseParameterString = (parameter: string,): Param => {
Expand Down Expand Up @@ -110,11 +121,11 @@ const parseParameterString = (parameter: string,): Param => {
}
return value;
};
// eslint-disable-next-line @typescript-eslint/ban-types
export const analyze = (func: Function,): Param[] => {
const functionWhitespaceRegExp=/\s*function\s*/u;
export const analyze = (func: MyFunction,): Param[] => {
const parameters: string[] = ((): string[] => {
const fun: string = func.toString().replace(/[\r\n]/gu, ' ',);
if (fun.match(/\s*function\s*/u,)) {
if (functionWhitespaceRegExp.exec(fun,)) {
return fun
.replace(/(^function\s*\()|(\)\s*\{.*\}\s*$)/gu, '',)
.split(',',);
Expand Down

0 comments on commit 419f79b

Please sign in to comment.