|
|
|
@ -366,14 +366,15 @@ ul.auto-toc {
|
|
|
|
|
<li><a class="reference internal" href="#global-environment" id="id32">Global environment</a></li>
|
|
|
|
|
<li><a class="reference internal" href="#utils" id="id33">utils</a></li>
|
|
|
|
|
<li><a class="reference internal" href="#dumper" id="id34">dumper</a></li>
|
|
|
|
|
<li><a class="reference internal" href="#class" id="id35">class</a></li>
|
|
|
|
|
</ul>
|
|
|
|
|
</li>
|
|
|
|
|
<li><a class="reference internal" href="#plugins" id="id35">Plugins</a><ul>
|
|
|
|
|
<li><a class="reference internal" href="#burrows" id="id36">burrows</a></li>
|
|
|
|
|
<li><a class="reference internal" href="#sort" id="id37">sort</a></li>
|
|
|
|
|
<li><a class="reference internal" href="#plugins" id="id36">Plugins</a><ul>
|
|
|
|
|
<li><a class="reference internal" href="#burrows" id="id37">burrows</a></li>
|
|
|
|
|
<li><a class="reference internal" href="#sort" id="id38">sort</a></li>
|
|
|
|
|
</ul>
|
|
|
|
|
</li>
|
|
|
|
|
<li><a class="reference internal" href="#scripts" id="id38">Scripts</a></li>
|
|
|
|
|
<li><a class="reference internal" href="#scripts" id="id39">Scripts</a></li>
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
|
|
|
|
<p>The current version of DFHack has extensive support for
|
|
|
|
@ -1930,16 +1931,88 @@ the other arguments see the original documentation link above.</p>
|
|
|
|
|
</li>
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="section" id="class">
|
|
|
|
|
<h2><a class="toc-backref" href="#id35">class</a></h2>
|
|
|
|
|
<p>Implements a trivial single-inheritance class system.</p>
|
|
|
|
|
<ul>
|
|
|
|
|
<li><p class="first"><tt class="docutils literal">Foo = defclass(Foo[, ParentClass])</tt></p>
|
|
|
|
|
<p>Defines or updates class Foo. The <tt class="docutils literal">Foo = defclass(Foo)</tt> syntax
|
|
|
|
|
is needed so that when the module or script is reloaded, the
|
|
|
|
|
class identity will be preserved through the preservation of
|
|
|
|
|
global variable values.</p>
|
|
|
|
|
<p>The <tt class="docutils literal">defclass</tt> function is defined as a stub in the global
|
|
|
|
|
namespace, and using it will auto-load the class module.</p>
|
|
|
|
|
</li>
|
|
|
|
|
<li><p class="first"><tt class="docutils literal">Class.super</tt></p>
|
|
|
|
|
<p>This class field is set by defclass to the parent class, and
|
|
|
|
|
allows a readable <tt class="docutils literal">Class.super.method(self, <span class="pre">...)</span></tt> syntax for
|
|
|
|
|
calling superclass methods.</p>
|
|
|
|
|
</li>
|
|
|
|
|
<li><p class="first"><tt class="docutils literal">Class.ATTRS { foo = xxx, bar = yyy }</tt></p>
|
|
|
|
|
<p>Declares certain instance fields to be attributes, i.e. auto-initialized
|
|
|
|
|
from fields in the table used as the constructor argument. If omitted,
|
|
|
|
|
they are initialized with the default values specified in this declaration.</p>
|
|
|
|
|
<p>If the default value should be <em>nil</em>, use <tt class="docutils literal">ATTRS { foo = DEFAULT_NIL }</tt>.</p>
|
|
|
|
|
</li>
|
|
|
|
|
<li><p class="first"><tt class="docutils literal">new_obj = Class{ foo = arg, bar = arg, ... }</tt></p>
|
|
|
|
|
<p>Calling the class as a function creates and initializes a new instance.
|
|
|
|
|
Initialization happens in this order:</p>
|
|
|
|
|
<ol class="arabic simple">
|
|
|
|
|
<li>An empty instance table is created, and its metatable set.</li>
|
|
|
|
|
<li>The <tt class="docutils literal">preinit</tt> method is called via <tt class="docutils literal">invoke_before</tt> (see below)
|
|
|
|
|
with the table used as argument to the class. This method is intended
|
|
|
|
|
for validating and tweaking that argument table.</li>
|
|
|
|
|
<li>Declared ATTRS are initialized from the argument table or their default values.</li>
|
|
|
|
|
<li>The <tt class="docutils literal">init</tt> method is called via <tt class="docutils literal">invoke_after</tt> with the argument table.
|
|
|
|
|
This is the main constructor method.</li>
|
|
|
|
|
<li>The <tt class="docutils literal">postinit</tt> method is called via <tt class="docutils literal">invoke_after</tt> with the argument table.
|
|
|
|
|
Place code that should be called after the object is fully constructed here.</li>
|
|
|
|
|
</ol>
|
|
|
|
|
</li>
|
|
|
|
|
</ul>
|
|
|
|
|
<p>Predefined instance methods:</p>
|
|
|
|
|
<ul>
|
|
|
|
|
<li><p class="first"><tt class="docutils literal">instance:assign{ foo = xxx }</tt></p>
|
|
|
|
|
<p>Assigns all values in the input table to the matching instance fields.</p>
|
|
|
|
|
</li>
|
|
|
|
|
<li><p class="first"><tt class="docutils literal">instance:callback(method_name, <span class="pre">[args...])</span></tt></p>
|
|
|
|
|
<p>Returns a closure that invokes the specified method of the class,
|
|
|
|
|
properly passing in self, and optionally a number of initial arguments too.
|
|
|
|
|
The arguments given to the closure are appended to these.</p>
|
|
|
|
|
</li>
|
|
|
|
|
<li><p class="first"><tt class="docutils literal">instance:invoke_before(method_name, <span class="pre">args...)</span></tt></p>
|
|
|
|
|
<p>Navigates the inheritance chain of the instance starting from the most specific
|
|
|
|
|
class, and invokes the specified method with the arguments if it is defined in
|
|
|
|
|
that specific class. Equivalent to the following definition in every class:</p>
|
|
|
|
|
<pre class="literal-block">
|
|
|
|
|
function Class:invoke_before(method, ...)
|
|
|
|
|
if rawget(Class, method) then
|
|
|
|
|
rawget(Class, method)(self, ...)
|
|
|
|
|
end
|
|
|
|
|
Class.super.invoke_before(method, ...)
|
|
|
|
|
end
|
|
|
|
|
</pre>
|
|
|
|
|
</li>
|
|
|
|
|
<li><p class="first"><tt class="docutils literal">instance:invoke_after(method_name, <span class="pre">args...)</span></tt></p>
|
|
|
|
|
<p>Like invoke_before, only the method is called after the recursive call to super,
|
|
|
|
|
i.e. invocations happen in the parent to child order.</p>
|
|
|
|
|
<p>These two methods are inspired by the Common Lisp before and after methods, and
|
|
|
|
|
are intended for implementing similar protocols for certain things. The class
|
|
|
|
|
library itself uses them for constructors.</p>
|
|
|
|
|
</li>
|
|
|
|
|
</ul>
|
|
|
|
|
<p>To avoid confusion, these methods cannot be redefined.</p>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="section" id="plugins">
|
|
|
|
|
<h1><a class="toc-backref" href="#id35">Plugins</a></h1>
|
|
|
|
|
<h1><a class="toc-backref" href="#id36">Plugins</a></h1>
|
|
|
|
|
<p>DFHack plugins may export native functions and events
|
|
|
|
|
to lua contexts. They are automatically imported by
|
|
|
|
|
<tt class="docutils literal"><span class="pre">mkmodule('plugins.<name>')</span></tt>; this means that a lua
|
|
|
|
|
module file is still necessary for <tt class="docutils literal">require</tt> to read.</p>
|
|
|
|
|
<p>The following plugins have lua support.</p>
|
|
|
|
|
<div class="section" id="burrows">
|
|
|
|
|
<h2><a class="toc-backref" href="#id36">burrows</a></h2>
|
|
|
|
|
<h2><a class="toc-backref" href="#id37">burrows</a></h2>
|
|
|
|
|
<p>Implements extended burrow manipulations.</p>
|
|
|
|
|
<p>Events:</p>
|
|
|
|
|
<ul>
|
|
|
|
@ -1977,13 +2050,13 @@ set is the same as used by the command line.</p>
|
|
|
|
|
<p>The lua module file also re-exports functions from <tt class="docutils literal">dfhack.burrows</tt>.</p>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="section" id="sort">
|
|
|
|
|
<h2><a class="toc-backref" href="#id37">sort</a></h2>
|
|
|
|
|
<h2><a class="toc-backref" href="#id38">sort</a></h2>
|
|
|
|
|
<p>Does not export any native functions as of now. Instead, it
|
|
|
|
|
calls lua code to perform the actual ordering of list items.</p>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="section" id="scripts">
|
|
|
|
|
<h1><a class="toc-backref" href="#id38">Scripts</a></h1>
|
|
|
|
|
<h1><a class="toc-backref" href="#id39">Scripts</a></h1>
|
|
|
|
|
<p>Any files with the .lua extension placed into hack/scripts/*
|
|
|
|
|
are automatically used by the DFHack core as commands. The
|
|
|
|
|
matching command name consists of the name of the file sans
|
|
|
|
|