Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions packages/helpers/lib/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -249,17 +249,17 @@ export function functionRegex(

const normalFunctionName = funcName ? "\\s" + escapeRegExp(funcName) : "";
const arrowFunctionName = funcName
? `(let|const|var)?\\s?${escapeRegExp(funcName)}\\s*=\\s*`
? `(let|const|var)?\\s?${escapeRegExp(funcName)}\\s*.*=\\s*`
: "";
const body = "[^}]*";

const funcREHead = `function\\s*${normalFunctionName}\\s*\\(\\s*${params}\\s*\\)\\s*\\{`;
const funcREHead = `function\\s*${normalFunctionName}\\s*\\(\\s*${params}\\s*\\)\\s*[\\w\\W]*\\{`;
const funcREBody = `${body}\\}`;
const funcRegEx = includeBody
? `${funcREHead}${funcREBody}`
: `${funcREHead}`;

const arrowFuncREHead = `${arrowFunctionName}\\(?\\s*${params}\\s*\\)?\\s*=>\\s*\\{?`;
const arrowFuncREHead = `${arrowFunctionName}\\(?\\s*${params}\\s*\\)?\\s*[\\w\\W]*=>\\s*\\{?`;
const arrowFuncREBody = `${body}\\}?`;
const arrowFuncRegEx = includeBody
? `${arrowFuncREHead}${arrowFuncREBody}`
Expand All @@ -268,7 +268,7 @@ export function functionRegex(
const anonymousFunctionName = funcName
? `(let|const|var)?\\s?${escapeRegExp(funcName)}\\s*=\\s*function\\s*`
: "";
const anonymousFuncREHead = `${anonymousFunctionName}\\(\\s*${params}\\s*\\)\\s*\\{`;
const anonymousFuncREHead = `${anonymousFunctionName}\\(\\s*${params}\\s*\\)\\s*[\\w\\W]*\\{`;
const anonymousFuncRegEx = includeBody
? `${anonymousFuncREHead}${funcREBody}`
: `${anonymousFuncREHead}`;
Expand Down
11 changes: 11 additions & 0 deletions packages/tests/curriculum-helper.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -485,6 +485,17 @@ describe("functionRegex", () => {
expect(regEx.test("function myFunc(arg1, arg3){}")).toBe(false);
});

it("matches a named function that uses Typescript types", () => {
const funcName = "myFunc";
const regEx = functionRegex(funcName, [
"arg1\\s*:\\s*string",
"arg2\\s*:\\s*string",
]);
expect(
regEx.test("function myFunc(arg1 : string, arg2 : string) : string{}"),
).toBe(true);
});

it("matches arrow functions", () => {
const funcName = "myFunc";
const regEx = functionRegex(funcName, ["arg1", "arg2"]);
Expand Down