Sol.hooks.Hook

Sol.hooks.Hook = function(addonName, fnName, newFn, frame)

Hooking a function means that whenever the system attempts to call that function, it will call your function, instead. So, for example, if you want to change how things display in a chat frame, you can hook that frame's AddMessage function and have your own function be called. After you do whatever processing you want, you can (and in most cases, should) call the original function using Sol.hooks.GetOriginalFn

Parameters: + addonName - Your addon's name + fnName   - The name of the function to hook + frame    - The frame or table the function is for, or nil

WARNING: First of all, hooking is inherently dangerous; if you mess things up you'll most likely have to restart the game. Aside from that, there are some situations where the hooks came apart on a ReloadUI. They shouldn't. But they do. C'est la vie. Test thoroughly.