{"route":"/en-US-v0.14.1/reference/foundations/module/","title":"Module","description":"Documentation for the Module type.","part":null,"outline":[{"id":"summary","name":"Summary","children":[]}],"body":{"kind":"type","content":{"name":"module","title":"Module","keywords":[],"oneliner":"A collection of variables and functions that are commonly related to a single theme.","details":"<p>A collection of variables and functions that are commonly related to\na single theme.</p>\n<p>A module can</p>\n<ul>\n<li>be built-in</li>\n<li>stem from a <a href=\"/en-US-v0.14.1/reference/scripting/#modules\">file import</a></li>\n<li>stem from a <a href=\"/en-US-v0.14.1/reference/scripting/#packages\">package import</a> (and thus indirectly\nits entrypoint file)</li>\n<li>result from a call to the <a href=\"/en-US-v0.14.1/reference/foundations/plugin/\">plugin</a> function</li>\n</ul>\n<p>You can access definitions from the module using <a href=\"/en-US-v0.14.1/reference/scripting/#fields\">field access\nnotation</a> and interact with it using the <a href=\"/en-US-v0.14.1/reference/scripting/#modules\">import and\ninclude syntaxes</a>.</p>\n<div class=\"previewed-code\"><pre><code><span class=\"typ-key\">#</span><span class=\"typ-key\">import</span> <span class=\"typ-str\">&quot;utils.typ&quot;</span>\n<span class=\"typ-pol\">#</span><span class=\"typ-pol\">utils</span><span class=\"typ-punct\">.</span><span class=\"typ-func\">add</span><span class=\"typ-punct\">(</span><span class=\"typ-num\">2</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">5</span><span class=\"typ-punct\">)</span>\n\n<span class=\"typ-key\">#</span><span class=\"typ-key\">import</span> utils<span class=\"typ-punct\">:</span> sub\n<span class=\"typ-func\">#</span><span class=\"typ-func\">sub</span><span class=\"typ-punct\">(</span><span class=\"typ-num\">1</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">4</span><span class=\"typ-punct\">)</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.14.1/assets/8ad38f6a26a534e6fad80f3544716fff.png\" alt=\"Preview\"></div></div>\n<p>You can check whether a definition is present in a module using the <code>in</code>\noperator, with a string on the left-hand side. This can be useful to\n<a href=\"/en-US-v0.14.1/reference/foundations/std/#conditional-access\">conditionally access</a>\ndefinitions in a module.</p>\n<div class=\"previewed-code\"><pre><code><span class=\"typ-punct\">#</span><span class=\"typ-punct\">(</span><span class=\"typ-str\">&quot;table&quot;</span> <span class=\"typ-key\">in</span> std<span class=\"typ-punct\">)</span> <span class=\"typ-escape\">\\</span>\n<span class=\"typ-punct\">#</span><span class=\"typ-punct\">(</span><span class=\"typ-str\">&quot;nope&quot;</span> <span class=\"typ-key\">in</span> std<span class=\"typ-punct\">)</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.14.1/assets/1a249cfd54530a168bf401ee1304a852.png\" alt=\"Preview\"></div></div>\n<p>Alternatively, it is possible to convert a module to a dictionary, and\ntherefore access its contents dynamically, using the <a href=\"/en-US-v0.14.1/reference/foundations/dictionary/#constructor\">dictionary\nconstructor</a>.</p>","constructor":null,"scope":[]}}}