Tea — a strongly typed scripting language
Tea
DocsPlaygroundExamplesReferenceCommunity
GitHub

Tea Language

A strongly typed scripting language for native tools.

© 2026 Tea Language.

Agent documentationContributingCommunityRepository

Language Runtime

Built-ins

Standard Library

std.argsstd.assertstd.audiostd.encodingstd.envstd.fsstd.hashstd.httpstd.netstd.jsonstd.mathstd.parsestd.pathstd.processstd.randomstd.raylibstd.regexstd.stringstd.timestd.url

Read as Markdown

Standard Library

std.path

Path manipulation utilities for working with file paths.

Exported functions

pub def asset(name: String) -> String

Resolve an asset independently of the working directory. Uses TEA_ASSET_ROOT in development, otherwise assets/ beside the executable. This is a path convenience, not a sandbox for untrusted filenames.

pub def join(parts: List[String]) -> String

Join path components into a single path.

Examples

var path = path.join(["usr", "local", "bin"])  # => "usr/local/bin"
pub def split(file_path: String) -> List[String]

Split a path into its components.

Examples

var parts = path.split("/usr/local/bin")  # => ["usr", "local", "bin"]
var parts = path.split("usr/local/")  # => ["usr", "local"]
pub def dirname(file_path: String) -> String

Get the directory part of a path.

Examples

var dir = path.dirname("/usr/local/bin/tea")  # => "/usr/local/bin"
var dir = path.dirname("/usr/local/")  # => "/usr/local"
var dir = path.dirname("file.txt")  # => ""
var dir = path.dirname("/")  # => "/"
pub def basename(file_path: String) -> String

Get the filename part of a path.

Examples

var name = path.basename("/usr/local/bin/tea")  # => "tea"
var name = path.basename("/usr/local/")  # => "local"
var name = path.basename("file.txt")  # => "file.txt"
var name = path.basename("/")  # => ""
pub def extension(file_path: String) -> String

Get the extension of a path.

Examples

var ext = path.extension("file.tea")  # => "tea"
var ext = path.extension("file.tar.gz")  # => "gz"
var ext = path.extension(".env")  # => ""
var ext = path.extension("file")  # => ""
pub def normalize(file_path: String) -> String

Normalize a path by resolving redundant separators and dot segments.

Examples

use path from "std.path"

@println(path.normalize("src/./old/../main.tea")) # src/main.tea on Unix
pub def absolute(file_path: String) -> String

Resolve a path to an absolute path using the current working directory.

pub def absolute_from(file_path: String, base_path: String) -> String

Resolve a path to an absolute path using an explicit base directory.

Examples

use path from "std.path"

const root = path.absolute(".")
@println(path.absolute_from("src/main.tea", root)) # Absolute path under root
pub def relative(target_path: String, base_path: String) -> String

Compute the relative path from a base location to a target.

Examples

use path from "std.path"

const root = path.absolute(".")
const target = path.join([root, "src", "main.tea"])
@println(path.relative(target, root)) # src/main.tea on Unix
pub def is_absolute(file_path: String) -> Bool

Return true when a path is absolute.

pub def separator() -> String

Return the platform-specific path separator.

pub def parent(file_path: String) -> String

Alias for dirname().

pub def stem(file_path: String) -> String

Return the file name without its final extension.

Examples

use path from "std.path"

@println(path.stem("reports/archive.tar.gz")) # archive.tar