Libraries are a mechanism to reuse and share Snapi code. Snapi includes a large set of Built-in libraries but as a developer you can also create your own libraries of Snapi code.
Libraries can be created and stored as files and then loaded from other Snapi scripts as needed.
For example, assume a file at
github://demo-org/demo-repository/package1.snapi with the following contents:
multiply_by_two(v: int) = v * 2
multiply_by_four(v: int) = v * 4
Then this can be used by any other Snapi script as follows:
x = Library.Load("github://demo-org/demo-repository/package1.snapi")
x.multiply_by_two(2) + x.multiply_by_four(2) // Result is 12
Note that the name
multiply_by_four are the program declarations defined in the script. Refer to the section on Program declarations for additional details on how to define program declarations.
Creating a library
To create a library, create a Snapi script with at least one program declaration.
Libraries can be stored in publicly accessible HTTP URLs (using GET), or on public GitHub repositories.
Program declarations are made available as functions when the library is imported.
Using a library
To use a library, do
Library.Load as shown in the example above. The location can be either:
- a public unathenticated HTTP URL (accessed using HTTP GET);
- or a public GitHub repository. For GitHub, the syntax to use in
github://<user or organization name>/<repository name>(assumes default branch) or
github://<user or organization name>/<repository>[<branch>]to specify a particular branch.
let x = Library.Load("github://demo-org/demo-repository/path/package1.snapi[test]")
... this loads the file at
/path/package1.snapi in branch
test for the GitHub org
demo-org in repository
demo-repository. The result is a library with each of the program declarations available to use.