diff --git a/addons/mod_loader/internal/mod_hook_preprocessor.gd b/addons/mod_loader/internal/mod_hook_preprocessor.gd index 35e0219c..1c31b370 100644 --- a/addons/mod_loader/internal/mod_hook_preprocessor.gd +++ b/addons/mod_loader/internal/mod_hook_preprocessor.gd @@ -14,6 +14,11 @@ const HASH_COLLISION_ERROR := \ const MOD_LOADER_HOOKS_START_STRING := \ "\n# ModLoader Hooks - The following code has been automatically added by the Godot Mod Loader." +## \\bfunc\\b\\s+ -> Match the word 'func' and one or more whitespace characters +## \\b%s\\b -> the function name +## (?:.*\\n*)*?\\s*\\( -> Match any character between zero and unlimited times, but be lazy +## and only do this until a '(' is found. +const REGEX_MATCH_FUNC_WITH_WHITESPACE := "\\bfunc\\b\\s+\\b%s\\b(?:.*\\n*)*?\\s*\\(" ## finds function names used as setters and getters (excluding inline definitions) ## group 2 and 4 contain the xetter names @@ -338,7 +343,7 @@ func match_method_body(method_name: String, func_body_start_index: int, text: St static func match_func_with_whitespace(method_name: String, text: String, offset := 0) -> RegExMatch: # Dynamically create the new regex for that specific name - var func_with_whitespace := RegEx.create_from_string("func\\s+%s[\\\\\\s]*\\(" % method_name) + var func_with_whitespace := RegEx.create_from_string(REGEX_MATCH_FUNC_WITH_WHITESPACE % method_name) return func_with_whitespace.search(text, offset)