Utilities

These are some of the smaller utilities and functionality that are usually globally available regardless of the Astra namespace:

Pretty Print

pprint function is a wrapper over print function that also lets you print tables as well as other values.

String Split

string.split splits a string according to the seperator provided and result into an array of chunks.

Dotenv

It is always a good idea to never include sensitive API keys within your server code. For these reasons we usually recommend using a .env file. Astra automatically loads them if they are present in the same folder into the environment, accessible through the os.getenv. You can also load your own file using the global Astra.dotenv_load function.

This is the load order of these files (They can overwrite the ones loaded previously):

  • .env
  • .env.production
  • .env.prod
  • .env.development
  • .env.dev
  • .env.test
  • .env.local

Regex

Astra has support for a very performant regex engine. The regex code is advised to be compiled once and reused multiple times to save up even more on performence. Example:

-- Create a new regex
local my_re = Astra.regex([[(?:index)?\.(html|lua|tera)$]])

-- Capture all of the hits as list of string lists (string[][])
pprint(my_re:captures([[
path/to/file.html
examples/templates/index.html
src/components/base.tera
]]))

-- Check for matches available
pprint(my_re:is_match("static/index.lua"))

-- Or replace matches
local content = "examples/templates/index.html"
local to_replace_with = ""
local number_of_replaces = 1 -- can omit it and not add it at all as argument
local new_string = my_re:replace(content, to_replace_with, number_of_replaces)
pprint(new_string)