<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <head> <title>Reference</title> <link rel="stylesheet" href="../ldoc.css" type="text/css" /> </head> <body> <div id="container"> <div id="product"> <div id="product_logo"></div> <div id="product_name"><big><b></b></big></div> <div id="product_description"></div> </div> <!-- id="product" --> <div id="main"> <!-- Menu --> <div id="navigation"> <br/> <h1>MDK</h1> <ul> <li><a href="../index.html">Index</a></li> </ul> <h2>Source</h2> <ul class="nowrap"> <li><a href="../source/LICENSE.lua.html">LICENSE.lua</a></li> <li><strong>aliasmgr.lua</strong></li> <li><a href="../source/chyron.lua.html">chyron.lua</a></li> <li><a href="../source/demontools.lua.html">demontools.lua</a></li> <li><a href="../source/echofile.lua.html">echofile.lua</a></li> <li><a href="../source/emco.lua.html">emco.lua</a></li> <li><a href="../source/figlet.lua.html">figlet.lua</a></li> <li><a href="../source/ftext.lua.html">ftext.lua</a></li> <li><a href="../source/gradientmaker.lua.html">gradientmaker.lua</a></li> <li><a href="../source/loggingconsole.lua.html">loggingconsole.lua</a></li> <li><a href="../source/loginator.lua.html">loginator.lua</a></li> <li><a href="../source/mastermindsolver.lua.html">mastermindsolver.lua</a></li> <li><a href="../source/revisionator.lua.html">revisionator.lua</a></li> <li><a href="../source/schema.lua.html">schema.lua</a></li> <li><a href="../source/sortbox.lua.html">sortbox.lua</a></li> <li><a href="../source/spinbox.lua.html">spinbox.lua</a></li> <li><a href="../source/sug.lua.html">sug.lua</a></li> <li><a href="../source/ftext_spec.lua.html">ftext_spec.lua</a></li> <li><a href="../source/textgauge.lua.html">textgauge.lua</a></li> <li><a href="../source/timergauge.lua.html">timergauge.lua</a></li> </ul> <h2>Modules</h2> <ul class="nowrap"> <li><a href="../modules/demontools.html">demontools</a></li> <li><a href="../modules/echofile.html">echofile</a></li> <li><a href="../modules/figlet.html">figlet</a></li> <li><a href="../modules/ftext.html">ftext</a></li> <li><a href="../modules/GradientMaker.html">GradientMaker</a></li> </ul> <h2>Classes</h2> <ul class="nowrap"> <li><a href="../classes/aliasmgr.html">aliasmgr</a></li> <li><a href="../classes/Chyron.html">Chyron</a></li> <li><a href="../classes/EMCO.html">EMCO</a></li> <li><a href="../classes/LoggingConsole.html">LoggingConsole</a></li> <li><a href="../classes/Loginator.html">Loginator</a></li> <li><a href="../classes/MasterMindSolver.html">MasterMindSolver</a></li> <li><a href="../classes/revisionator.html">revisionator</a></li> <li><a href="../classes/SortBox.html">SortBox</a></li> <li><a href="../classes/spinbox.html">spinbox</a></li> <li><a href="../classes/SUG.html">SUG</a></li> <li><a href="../classes/TextGauge.html">TextGauge</a></li> <li><a href="../classes/TimerGauge.html">TimerGauge</a></li> </ul> </div> <div id="content"> <h2>aliasmgr.lua</h2> <pre> <span class="comment">--- Alias Manager </span><span class="comment">-- @classmod aliasmgr </span><span class="comment">-- @author Damian Monogue <demonnic@gmail.com> </span><span class="comment">-- @copyright 2022 Damian Monogue </span><span class="comment">-- @license MIT, see LICENSE.lua </span><span class="keyword">local</span> aliasmgr = {} aliasmgr.__index = aliasmgr <a id="10"></a><span class="comment">--- Creates a new alias manager </span><span class="keyword">function</span> aliasmgr:<span class="function-name">new</span>() <span class="keyword">local</span> mgr = { aliases = {} } <span class="global">setmetatable</span>(mgr, self) <span class="keyword">return</span> mgr <span class="keyword">end</span> <span class="keyword">local</span> <span class="keyword">function</span> <span class="function-name">argError</span>(funcName, argument, expected, actual) <span class="keyword">local</span> msg = <span class="global">string</span>.<span class="function-name">format</span>(<span class="string">"%s: %s as %s expected, got %s"</span>, funcName, argument, expected, actual) <span class="function-name">printError</span>(msg, <span class="keyword">true</span>, <span class="keyword">true</span>) <span class="keyword">end</span> <span class="comment">--- Registers an alias with the alias manager </span><span class="comment">-- @param name the name for the alias </span><span class="comment">-- @param regex the regular expression the alias matches against </span><a id="27"></a><span class="comment">-- @param func The code to run when the alias matches. Can wrap code in [[ ]] or pass an actual function </span><span class="keyword">function</span> aliasmgr:<span class="function-name">register</span>(name, regex, func) <span class="keyword">local</span> funcName = <span class="string">"aliasmgr:register(name, regex, func)"</span> <span class="keyword">if</span> func == <span class="keyword">nil</span> <span class="keyword">then</span> <span class="function-name">printError</span>(<span class="function-name">f</span><span class="string">"{funcName} takes 3 arguments and you have provided less than that"</span>, <span class="keyword">true</span>, <span class="keyword">true</span>) <span class="keyword">end</span> <span class="keyword">local</span> nameType = <span class="global">type</span>(name) <span class="keyword">if</span> nameType ~= <span class="string">"string"</span> <span class="keyword">then</span> <span class="function-name">argError</span>(funcName, <span class="string">"name"</span>, <span class="string">"string"</span>, nameType) <span class="keyword">end</span> <span class="keyword">local</span> regexType = <span class="global">type</span>(regex) <span class="keyword">if</span> regexType ~= <span class="string">"string"</span> <span class="keyword">then</span> <span class="function-name">argError</span>(funcName, <span class="string">"regex"</span>, <span class="string">"string"</span>, regexType) <span class="keyword">end</span> <span class="keyword">local</span> funcType = <span class="global">type</span>(func) <span class="keyword">if</span> funcType ~= <span class="string">"string"</span> <span class="keyword">and</span> funcType ~= <span class="string">"function"</span> <span class="keyword">then</span> <span class="function-name">argError</span>(funcName, <span class="string">"func"</span>, <span class="string">"string or function"</span>, funcType) <span class="keyword">end</span> <span class="keyword">local</span> object = { regex = regex, func = func } self:<span class="function-name">kill</span>(name) <span class="keyword">local</span> ok, err = <span class="global">pcall</span>(tempAlias, regex, func) <span class="keyword">if</span> <span class="keyword">not</span> ok <span class="keyword">then</span> <span class="keyword">return</span> <span class="keyword">nil</span>, err <span class="keyword">end</span> object.handlerID = err self.aliases[name] = object <span class="keyword">return</span> <span class="keyword">true</span> <span class="keyword">end</span> <span class="comment">--- Registers an alias with the alias manager. Alias for register </span><span class="comment">-- @param name the name for the alias </span><span class="comment">-- @param regex the regular expression the alias matches against </span><span class="comment">-- @param func The code to run when the alias matches. Can wrap code in [[ ]] or pass an actual function </span><a id="63"></a><span class="comment">-- @see register </span><span class="keyword">function</span> aliasmgr:<span class="function-name">add</span>(name, regex, func) self:<span class="function-name">register</span>(name, regex, func) <span class="keyword">end</span> <span class="comment">--- Disables an alias, but does not delete it so it can be enabled later without being redefined </span><span class="comment">-- @param name the name of the alias to disable </span><a id="70"></a><span class="comment">-- @return true if the alias exists and gets disabled, false if it does not exist or is already disabled </span><span class="keyword">function</span> aliasmgr:<span class="function-name">disable</span>(name) <span class="keyword">local</span> funcName = <span class="string">"aliasmgr:disable(name)"</span> <span class="keyword">local</span> nameType = <span class="global">type</span>(name) <span class="keyword">if</span> nameType ~= <span class="string">"string"</span> <span class="keyword">then</span> <span class="function-name">argError</span>(funcName, <span class="string">"name"</span>, <span class="string">"string"</span>, nameType) <span class="keyword">end</span> <span class="keyword">local</span> object = self.aliases[name] <span class="keyword">if</span> <span class="keyword">not</span> object <span class="keyword">or</span> object.handlerID == -<span class="number">1</span> <span class="keyword">then</span> <span class="keyword">return</span> <span class="keyword">false</span> <span class="keyword">end</span> <span class="function-name">killAlias</span>(object.handlerID) object.handlerID = -<span class="number">1</span> <span class="keyword">return</span> <span class="keyword">true</span> <span class="keyword">end</span> <a id="86"></a><span class="comment">--- Disables all aliases registered with the manager </span><span class="keyword">function</span> aliasmgr:<span class="function-name">disableAll</span>() <span class="keyword">local</span> aliases = self.aliases <span class="keyword">for</span> name, object <span class="keyword">in</span> <span class="global">pairs</span>(aliases) <span class="keyword">do</span> self:<span class="function-name">disable</span>(name) <span class="keyword">end</span> <span class="keyword">end</span> <span class="comment">--- Enables an alias by name </span><span class="comment">-- @param name the name of the alias to enable </span><a id="96"></a><span class="comment">-- @return true if the alias exists and was enabled, false if it does not exist. </span><span class="keyword">function</span> aliasmgr:<span class="function-name">enable</span>(name) <span class="keyword">local</span> funcName = <span class="string">"aliasmgr:enable(name)"</span> <span class="keyword">local</span> nameType = <span class="global">type</span>(name) <span class="keyword">if</span> nameType ~= <span class="string">"string"</span> <span class="keyword">then</span> <span class="function-name">argError</span>(funcName, <span class="string">"name"</span>, <span class="string">"string"</span>, nameType) <span class="keyword">end</span> <span class="keyword">local</span> object = self.aliases[name] <span class="keyword">if</span> <span class="keyword">not</span> object <span class="keyword">then</span> <span class="keyword">return</span> <span class="keyword">false</span> <span class="keyword">end</span> self:<span class="function-name">register</span>(name, object.regex, object.func) <span class="keyword">end</span> <a id="110"></a><span class="comment">--- Enables all aliases registered with the manager </span><span class="keyword">function</span> aliasmgr:<span class="function-name">enableAll</span>() <span class="keyword">local</span> aliases = self.aliases <span class="keyword">for</span> name,_ <span class="keyword">in</span> <span class="global">pairs</span>(aliases) <span class="keyword">do</span> self:<span class="function-name">enable</span>(name) <span class="keyword">end</span> <span class="keyword">return</span> <span class="keyword">true</span> <span class="keyword">end</span> <span class="comment">--- Kill an alias, deleting it from the manager </span><span class="comment">-- @param name the name of the alias to kill </span><a id="121"></a><span class="comment">-- @return true if the alias exists and gets deleted, false if the alias does not exist </span><span class="keyword">function</span> aliasmgr:<span class="function-name">kill</span>(name) <span class="keyword">local</span> funcName = <span class="string">"aliasmgr:kill(name)"</span> <span class="keyword">local</span> nameType = <span class="global">type</span>(name) <span class="keyword">if</span> nameType ~= <span class="string">"string"</span> <span class="keyword">then</span> <span class="function-name">argError</span>(funcName, <span class="string">"name"</span>, <span class="string">"string"</span>, nameType) <span class="keyword">end</span> <span class="keyword">local</span> object = self.aliases[name] <span class="keyword">if</span> <span class="keyword">not</span> object <span class="keyword">then</span> <span class="keyword">return</span> <span class="keyword">false</span> <span class="keyword">end</span> self:<span class="function-name">disable</span>(name) self.aliases[name] = <span class="keyword">nil</span> <span class="keyword">return</span> <span class="keyword">true</span> <span class="keyword">end</span> <a id="137"></a><span class="comment">--- Kills all aliases registered with the manager, clearing it out </span><span class="keyword">function</span> aliasmgr:<span class="function-name">killAll</span>() <span class="keyword">local</span> aliases = self.aliases <span class="keyword">for</span> name, _ <span class="keyword">in</span> <span class="global">pairs</span>(aliases) <span class="keyword">do</span> self:<span class="function-name">kill</span>(name) <span class="keyword">end</span> <span class="keyword">end</span> <span class="comment">--- Kills an alias, deleting it from the manager </span><span class="comment">-- @param name the name of the alias to delete </span><span class="comment">-- @return true if the alias exists and gets deleted, false if the alias does not exist </span><a id="148"></a><span class="comment">-- @see kill </span><span class="keyword">function</span> aliasmgr:<span class="function-name">delete</span>(name) <span class="keyword">return</span> self:<span class="function-name">kill</span>(name) <span class="keyword">end</span> <span class="comment">--- Kills all aliases, deleting them from the manager </span><a id="154"></a><span class="comment">-- @see killAll </span><span class="keyword">function</span> aliasmgr:<span class="function-name">deleteAll</span>() <span class="keyword">return</span> self:<span class="function-name">killAll</span>() <span class="keyword">end</span> <span class="comment">--- Returns the list of aliases and the information being tracked for them </span><a id="160"></a><span class="comment">-- @return the table of alias information, with names as keys and a table of information as the values. </span><span class="keyword">function</span> aliasmgr:<span class="function-name">getAliases</span>() <span class="keyword">return</span> self.aliases <span class="keyword">end</span> <span class="keyword">return</span> aliasmgr</pre> </div> <!-- id="content" --> </div> <!-- id="main" --> <div id="about"> <i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i> <i style="float:right;">Last updated 2023-05-29 18:41:27 </i> </div> <!-- id="about" --> </div> <!-- id="container" --> </body> </html>