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();
}
Last Updated:
Contributors: Benoit Giannangeli