@import Directive
The @import directive allows you to import variables and commands from other Meld files.
Syntax
Modern syntax:
@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
Legacy syntax (also supported):
@import path="path.meld" # Import all variables
@import path="path.meld" imports=[var1, var2] # Import specific variables
Where:
path.meldis the path to the Meld file to importvar1,var2are variable names to importalias1is an alternative name to use for the imported variable
Import Behavior
When you import a Meld file:
- All variables and commands defined in the imported file become available
- Text content from the imported file is NOT included
- Imports should be placed at the top of your file
- Imported files can import other files (nesting is supported)
- Circular imports are detected and will generate errors
Supported Variable Types
The directive can import all types of variables:
- Text variables
- Data variables
- Path variables
- Command variables
Path Specification
The path can be:
- An absolute path using
$HOMEPATHor$PROJECTPATH - A path variable:
@import [$utils]
Selective Imports and Aliases
Specify selective imports using a comma-separated list:
@import [var1, var2, var3] from [path.meld]
Import with aliases to avoid name conflicts:
@import [var1 as myVar1, var2 as myVar2] from [path.meld]
Alternative alias syntax with colon:
@import [var1:myVar1, var2:myVar2] from [path.meld]
Examples
Basic import:
@import ["$PROJECTPATH/utils.meld"]
Import with path variables:
@path lib = "$PROJECTPATH/lib"
@import [$lib/utils.meld]
Selective import:
@import [textVar, dataVar] from [$lib/utils.meld]
Import with aliases:
@import [textVar as myText, dataVar as myData] from [$lib/utils.meld]
Using imported variables:
@import ["$PROJECTPATH/utils.meld"]
@text message = `Hello, {{importedName}}!`
@run [$importedCommand({{param}})]
Error Handling
The implementation handles various error scenarios:
- File not found errors
- Circular import errors
- Validation errors (syntax, path constraints)
- Variable not found errors
- Parsing errors in imported files
Notes
- Imported files must be valid Meld files
- Missing import files will generate fatal errors
- Imports should generally be placed at the top of your file
- Imported files can have their own imports (nesting is supported)
- Variables with the same name will be overwritten (last imported wins)
- Circular imports are detected and will generate errors