Import/Export
Import
To import another script, use the import
statement:
import "std";
std.print("hello");
When importing, buzz will search the script in common places. With ?
being the library name:
./?.buzz
./?/main.buzz
./?/src/main.buzz
./?/src/?.buzz
/usr/share/buzz/?.buzz
/usr/share/buzz/?/main.buzz
/usr/share/buzz/?/src/main.buzz
/usr/share/buzz/?/src/?.buzz
/usr/local/share/buzz/?.buzz
/usr/local/share/buzz/?/main.buzz
/usr/local/share/buzz/?/src/main.buzz
/usr/local/share/buzz/?/src/?.buzz
$BUZZ_PATH/?.buzz
$BUZZ_PATH/?/main.buzz
$BUZZ_PATH/?/src/?.buzz
$BUZZ_PATH/?/src/main.buzz
When defining extern
functions, buzz will search the symbol in a dynamic library. It'll be searched in the same common places:
./?.so
./?/src/lib?.so
/usr/share/so/lib?.so
/usr/share/so/lib?/src/?.so
/usr/local/share/so/lib?.so
/usr/local/share/so/lib?/src/?.so
$BUZZ_PATH/lib?.so
$BUZZ_PATH/?/src/lib?.so
Alias
You can rename the imported namespace like so:
import "std" as standard;
| ...
standard.print("hello");
You can also erase the namespace:
import "std" as _;
| ...
print("hello");
Exporting
To export symbols, use the export
statement. If your script exports at least one symbol. You have to define a namespace for the script:
namespace hello;
| hello.buzz
fun sayHello() > void {
print("Hello world!");
}
| Make it visible when imported
export sayHello;
| main.buzz
import "hello";
fun main([str] args) > void {
hello.sayHello();
}
You can also put export
right before the declaration:
export fun sayHello() > void {
print("Hello world!");
};
Alias
You can export a declaration with another name.
| hello.buzz
fun sayHello() > void {
print("Hello world!");
}
export sayHello as hello;
| main.buzz
import "hello";
fun main([str] args) > void {
hello.hello();
}