meld
Version:
Meld: A template language for LLM prompts
161 lines (154 loc) • 6.5 kB
HTML
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@import Directive - meld</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Tektur:wght@800&family=Cousine:wght@400;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="/css/style.css">
<script src="/js/theme.js" defer></script>
<script src="/js/terminal.js" defer></script>
</head>
<body>
<header>
<div class="container">
<a href="/" class="logo">meld</a>
<nav>
<ul>
<li><a href="/" aria-current="page">Home</a></li>
<li><a href="/docs/introduction/" >Docs</a></li>
<li><a href="https://github.com/meldorg/meld">GitHub</a></li>
</ul>
</nav>
</div>
</header>
<main>
<div class="container">
<div class="docs-layout">
<aside class="docs-sidebar">
<nav>
<h3>Documentation</h3>
<ul class="nav-list">
<li><a href="/docs/introduction/" >Introduction</a></li>
<li><a href="/docs/cli-usage/" >CLI Usage</a></li>
<li><a href="/docs/sdk-usage/" >SDK Usage</a></li>
<li><a href="/docs/variables/" >Variables</a></li>
<li><a href="/docs/error-handling/" >Error Handling</a></li>
<li><a href="/docs/grammar-reference/" >Grammar Reference</a></li>
</ul>
<h3>Directives</h3>
<ul class="nav-list">
<li><a href="/docs/directives/" aria-current="page">Overview</a></li>
<li><a href="/docs/directives/data/" >@data</a></li>
<li><a href="/docs/directives/define/" >@define</a></li>
<li><a href="/docs/directives/embed/" >@embed</a></li>
<li><a href="/docs/directives/import/" aria-current="page">@import</a></li>
<li><a href="/docs/directives/path/" >@path</a></li>
<li><a href="/docs/directives/run/" >@run</a></li>
<li><a href="/docs/directives/text/" >@text</a></li>
</ul>
</nav>
</aside>
<div class="docs-content">
<h1 id="%40import-directive" tabindex="-1">@import Directive</h1>
<p>The <code>@import</code> directive allows you to import variables and commands from other Meld files.</p>
<h2 id="syntax" tabindex="-1">Syntax</h2>
<p>Modern syntax:</p>
<pre><code class="language-meld">@import [path.meld] # Import all variables
@import [*] from [path.meld] # Import all variables (equivalent)
@import [var1, var2] from [path.meld] # Import specific variables
@import [var1 as alias1, var2] from [path.meld] # Import with aliases
</code></pre>
<p>Legacy syntax (also supported):</p>
<pre><code class="language-meld">@import path="path.meld" # Import all variables
@import path="path.meld" imports=[var1, var2] # Import specific variables
</code></pre>
<p>Where:</p>
<ul>
<li><code>path.meld</code> is the path to the Meld file to import</li>
<li><code>var1</code>, <code>var2</code> are variable names to import</li>
<li><code>alias1</code> is an alternative name to use for the imported variable</li>
</ul>
<h2 id="import-behavior" tabindex="-1">Import Behavior</h2>
<p>When you import a Meld file:</p>
<ul>
<li>All variables and commands defined in the imported file become available</li>
<li>Text content from the imported file is NOT included</li>
<li>Imports should be placed at the top of your file</li>
<li>Imported files can import other files (nesting is supported)</li>
<li>Circular imports are detected and will generate errors</li>
</ul>
<h2 id="supported-variable-types" tabindex="-1">Supported Variable Types</h2>
<p>The directive can import all types of variables:</p>
<ul>
<li>Text variables</li>
<li>Data variables</li>
<li>Path variables</li>
<li>Command variables</li>
</ul>
<h2 id="path-specification" tabindex="-1">Path Specification</h2>
<p>The path can be:</p>
<ul>
<li>An absolute path using <code>$HOMEPATH</code> or <code>$PROJECTPATH</code></li>
<li>A path variable: <code>@import [$utils]</code></li>
</ul>
<h2 id="selective-imports-and-aliases" tabindex="-1">Selective Imports and Aliases</h2>
<p>Specify selective imports using a comma-separated list:</p>
<pre><code class="language-meld">@import [var1, var2, var3] from [path.meld]
</code></pre>
<p>Import with aliases to avoid name conflicts:</p>
<pre><code class="language-meld">@import [var1 as myVar1, var2 as myVar2] from [path.meld]
</code></pre>
<p>Alternative alias syntax with colon:</p>
<pre><code class="language-meld">@import [var1:myVar1, var2:myVar2] from [path.meld]
</code></pre>
<h2 id="examples" tabindex="-1">Examples</h2>
<p>Basic import:</p>
<pre><code class="language-meld">@import ["$PROJECTPATH/utils.meld"]
</code></pre>
<p>Import with path variables:</p>
<pre><code class="language-meld">@path lib = "$PROJECTPATH/lib"
@import [$lib/utils.meld]
</code></pre>
<p>Selective import:</p>
<pre><code class="language-meld">@import [textVar, dataVar] from [$lib/utils.meld]
</code></pre>
<p>Import with aliases:</p>
<pre><code class="language-meld">@import [textVar as myText, dataVar as myData] from [$lib/utils.meld]
</code></pre>
<p>Using imported variables:</p>
<pre><code class="language-meld">@import ["$PROJECTPATH/utils.meld"]
@text message = `Hello, {{importedName}}!`
@run [$importedCommand({{param}})]
</code></pre>
<h2 id="error-handling" tabindex="-1">Error Handling</h2>
<p>The implementation handles various error scenarios:</p>
<ul>
<li>File not found errors</li>
<li>Circular import errors</li>
<li>Validation errors (syntax, path constraints)</li>
<li>Variable not found errors</li>
<li>Parsing errors in imported files</li>
</ul>
<h2 id="notes" tabindex="-1">Notes</h2>
<ul>
<li>Imported files must be valid Meld files</li>
<li>Missing import files will generate fatal errors</li>
<li>Imports should generally be placed at the top of your file</li>
<li>Imported files can have their own imports (nesting is supported)</li>
<li>Variables with the same name will be overwritten (last imported wins)</li>
<li>Circular imports are detected and will generate errors</li>
</ul>
</div>
</div>
</div>
</main>
<footer>
<div class="container">
<p>© 2025 meld - <a href="https://github.com/meldorg/meld">GitHub</a></p>
</div>
</footer>
</body>
</html>