ddonche/goblin-lang
0.46.24
1
0
docs reference
[[basename]]

Basename


basename returns the final name in a file or directory path.


Overview

Use basename when you only need the last part of a path:

path | "maps/caves/entrance.gbln"
name | path.basename()

:say(name)  /// entrance.gbln
path | "maps/caves/entrance.gbln"
name | path.basename()

:say(name)  /// entrance.gbln

For a directory path, basename returns the final directory name:

basename("maps/caves")  /// caves
basename("maps/caves")  /// caves


Method Style

Call basename as a method on a path string:

filename | "reports/june/orders.json".basename()

:say(filename)  /// orders.json
filename | "reports/june/orders.json".basename()

:say(filename)  /// orders.json

The equivalent free-call form is:

filename | basename("reports/june/orders.json")
filename | basename("reports/june/orders.json")

Both forms behave the same way.


File Extensions

basename keeps the file extension:

basename("portraits/captain.png")  /// captain.png
basename("portraits/captain.png")  /// captain.png

Use Stem when you want the final filename without its extension:

basename("portraits/captain.png")  /// captain.png
stem("portraits/captain.png")      /// captain
basename("portraits/captain.png")  /// captain.png
stem("portraits/captain.png")      /// captain

Use Ext when you only want the extension.


Paths Do Not Need to Exist

basename examines the path itself. It does not check the filesystem:

future_file | "exports/next-year/summary.txt"

future_file.basename()  /// summary.txt
future_file | "exports/next-year/summary.txt"

future_file.basename()  /// summary.txt

The result is available even when the file or directory has not been created.


Empty Results

basename returns an empty string when the path has no final name:

basename("")  /// ""
basename("/")  /// ""
basename("")  /// ""
basename("/")  /// ""


Signature

path.basename()
basename(path)
path.basename()
basename(path)

Argument Type Description
path string The file or directory path to examine.

basename returns the final name as a string.


Errors

basename requires one path:

basename()
/// error: R0301 wrong-arity
basename()
/// error: R0301 wrong-arity

The path must be a string:

basename(42)
/// error: T0205 type-mismatch
basename(42)
/// error: T0205 type-mismatch