Path

The Path: module provides pure string-based path manipulation plus filesystem queries. All methods follow the ByRef convention.


Call Effect
Path:Join(a, b, outVar) Joined path with native separator → outVar
Path:DirName(p, outVar) / Path:DirectoryName(p, outVar) Parent directory ("." if none) → outVar
Path:BaseName(p, outVar) / Path:FileName(p, outVar) Filename including extension → outVar
Path:Stem(p, outVar) Filename without extension → outVar
Path:Extension(p, outVar) Extension with dot, e.g. ".ks"outVar
Path:Exists(p, outVar) true if path exists → outVar
Path:IsFile(p, outVar) true if regular file → outVar
Path:IsDir(p, outVar) / Path:IsDirectory(p, outVar) true if directory → outVar
Path:Absolute(p, outVar) Absolute path string → outVar
Var:String result;
Path:Join("src", "main.ks", result);
Konsol:Print(result);           // src/main.ks  (or src\main.ks on Windows)

Path:Extension("readme.md", result);
Konsol:Print(result);           // .md

Path:Stem("readme.md", result);
Konsol:Print(result);           // readme

Path:DirName("src/main.ks", result);
Konsol:Print(result);           // src

Var:Boolean exists;
Path:Exists("script.ks", exists);
Konsol:Print(exists);           // true or false

Path:Absolute(".", result);
Konsol:Print(result);           // full path of current directory

Examples

// 27_os_path.ks - OS and Path modules

Var:String result;
Var:Boolean exists;
Var:Boolean isFile;
Var:Boolean isDir;
Var:String envVal;
Var:String cwd;
Var:Boolean ok;
Var:Number sz;
List:New entries:String;

// ── Path: pure string operations (no filesystem access) ──────────────────────
Konsol:Print("=== Path:FileName ===");
Path:FileName("foo/bar/baz.ks", result);
Konsol:Print(result);         // baz.ks

Konsol:Print("=== Path:DirectoryName ===");
Path:DirectoryName("foo/bar/baz.ks", result);
Konsol:Print(result);         // foo/bar

Konsol:Print("=== Path:Stem ===");
Path:Stem("foo/bar/baz.ks", result);
Konsol:Print(result);         // baz

Konsol:Print("=== Path:Extension ===");
Path:Extension("foo/bar/baz.ks", result);
Konsol:Print(result);         // .ks

Konsol:Print("=== Path:Join ===");
Path:Join("foo/bar", "baz.ks", result);
Konsol:Print(result);         // foo/bar/baz.ks  (separator is platform-native)

// ── Path: filesystem queries ─────────────────────────────────────────────────
Konsol:Print("=== Path:Exists / IsFile / IsDirectory ===");
Path:Exists("27_os_path.ks", exists);
Konsol:Print(exists);         // true
Path:IsFile("27_os_path.ks", isFile);
Konsol:Print(isFile);         // true
Path:IsDirectory("27_os_path.ks", isDir);
Konsol:Print(isDir);          // false

// ── OS: environment ──────────────────────────────────────────────────────────
Konsol:Print("=== OS:GetEnvironment / SetEnvironment ===");
OS:SetEnvironment("MINKS_TEST", "hello");
OS:GetEnvironment("MINKS_TEST", envVal);
Konsol:Print(envVal);         // hello

OS:GetEnvironment("THIS_VAR_DOES_NOT_EXIST_XYZ", envVal);
Konsol:Print(envVal);         // (empty string)

// ── OS: cwd ──────────────────────────────────────────────────────────────────
Konsol:Print("=== OS:CurrentDirectory ===");
OS:CurrentDirectory(cwd);
Konsol:Print(cwd);            // some absolute path

// ── OS: MkDir / ListDir / Remove ─────────────────────────────────────────────
Konsol:Print("=== OS:MakeDirectory / ListDir / Remove ===");
OS:MakeDirectory("_minks_tmp_dir", ok);
Path:IsDirectory("_minks_tmp_dir", isDir);
Konsol:Print(isDir);          // true

OS:ListDirectory(".", entries);
List:Size(entries, sz);
Konsol:Print(sz);             // >= 1

OS:Remove("_minks_tmp_dir", ok);
Path:Exists("_minks_tmp_dir", exists);
Konsol:Print(exists);         // false

// ── OS: MkDirs ───────────────────────────────────────────────────────────────
Konsol:Print("=== OS:MakeDirectories ===");
OS:MakeDirectories("_minks_a/b/c", ok);
Path:IsDirectory("_minks_a/b/c", isDir);
Konsol:Print(isDir);          // true
OS:Remove("_minks_a/b/c", ok);
OS:Remove("_minks_a/b", ok);
OS:Remove("_minks_a", ok);

Konsol:Print("done");