Modules

Organize code with the module system.

Import Syntax

import "./path/to/module.unna" as alias;

Path Resolution

Import paths are relative to the importing file, similar to PHP's include or HTML's href.

Same Directory

// main.unna imports helper.unna in same folder
import "./helper.unna" as helper;

Parent Directory

// services/sales.unna imports from models/
import "../models/product.unna" as product;

Example Structure

project/
├── main.unna
├── models/
│   └── product.unna
├── services/
│   └── inventory.unna    // imports ../models/product.unna
└── utils/
    └── logger.unna

Using Imported Modules

Creating a Module

// utils/logger.unna
function logInfo(msg) {
    print("[INFO] " + msg);
}

function logError(msg) {
    print("[ERROR] " + msg);
}

Importing and Using

// main.unna
import "./utils/logger.unna" as log;

log.logInfo("Application started");
log.logError("Something went wrong");

Cross-Module Imports

Modules can import other modules:

// services/reporting.unna
import "../utils/logger.unna" as log;

function generateReport(title) {
    log.logInfo("Generating: " + title);
    return "=== " + title + " ===";
}

Exporting

All top-level functions and variables in a module are automatically exported.