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
// 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:String entries;
// ── Path: pure string operations (no filesystem access) ──────────────────────
Konsol:Print("=== Path:BaseName ===");
Path:BaseName("foo/bar/baz.ks", result);
Konsol:Print(result); // baz.ks
Konsol:Print("=== Path:DirName ===");
Path:DirName("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 / IsDir ===");
Path:Exists("27_os_path.ks", exists);
Konsol:Print(exists); // true
Path:IsFile("27_os_path.ks", isFile);
Konsol:Print(isFile); // true
Path:IsDir("27_os_path.ks", isDir);
Konsol:Print(isDir); // false
// ── OS: environment ──────────────────────────────────────────────────────────
Konsol:Print("=== OS:GetEnv / SetEnv ===");
OS:SetEnv("MINKS_TEST", "hello");
OS:GetEnv("MINKS_TEST", envVal);
Konsol:Print(envVal); // hello
OS:GetEnv("THIS_VAR_DOES_NOT_EXIST_XYZ", envVal);
Konsol:Print(envVal); // (empty string)
// ── OS: cwd ──────────────────────────────────────────────────────────────────
Konsol:Print("=== OS:Cwd ===");
OS:Cwd(cwd);
Konsol:Print(cwd); // some absolute path
// ── OS: MkDir / ListDir / Remove ─────────────────────────────────────────────
Konsol:Print("=== OS:MkDir / ListDir / Remove ===");
OS:MkDir("_minks_tmp_dir", ok);
Path:IsDir("_minks_tmp_dir", isDir);
Konsol:Print(isDir); // true
OS:ListDir(".", 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:MkDirs ===");
OS:MkDirs("_minks_a/b/c", ok);
Path:IsDir("_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");