📚 Biblioteca Padrão

Documentação completa de todas as funções e bibliotecas nativas da linguagem Sol.

🌐 Biblioteca Global (Base)

funções básicas disponíveis globalmente em qualquer script.

afirme (condição, [mensagem])

Verifica se uma condição é verdadeira. Se for falsa, lança um erro com a mensagem fornecida.

Parâmetros
  • condição: Qualquer - A expressão a ser testada.
  • mensagem: Texto (opcional) - Mensagem de erro caso a condição falhe.
Exemplo
afirme(10 > 5, "Erro impossível") -- Passa
afirme(falso, "Isso vai parar o programa") -- Erro

avise (mensagem)

Emite um aviso no console sem interromper o programa.

Parâmetros
  • mensagem: Texto - O aviso a ser exibido.
Exemplo
avise("Isso é apenas um aviso.")

carregue (código, [nome_chunk])

Carrega um trecho de código Sol (string) e retorna como função.

Parâmetros
  • código: Texto - O código fonte a ser compilado.
  • nome_chunk: Texto (opcional) - Nome para mensagens de erro.
Retorno

Função (se sucesso) ou nulo e mensagem de erro.

Exemplo
local f = carregue("retorne 10 + 20")
exiba(f()) -- 30

carregue_arquivo (caminho)

Carrega um arquivo Sol e retorna seu conteúdo como uma função executável.

Parâmetros
  • caminho: Texto - Caminho para o arquivo.
Retorno

Função (se sucesso) ou nulo e mensagem de erro.

Exemplo
local script = carregue_arquivo("meu_script.sol")
script() -- Executa o arquivo

chame_protegido (função, [args...])

Executa uma função em modo protegido (pcall). Se houver erro, retorna falso e a mensagem.

Parâmetros
  • função: Função - A função a ser chamada.
  • args: Variável - Argumentos para a função.
Retorno

Lógico (sucesso/falha) e resultados da função ou mensagem de erro.

Exemplo
local ok, erro = chame_protegido(function() error("Boom!") end)
se não ok então exiba("Erro capturado:", erro) fim

colete_lixo ([opção], [arg])

Interage com o Coletor de Lixo (Garbage Collector).

Parâmetros
  • opção: Texto - "collect", "count", "stop", "restart".
Exemplo
colete_lixo("collect") -- Força uma coleta completa

converta_para_número (valor, [base])

Tenta converter o valor para número.

Parâmetros
  • valor: Texto/Número - Valor a converter.
  • base: Inteiro (opcional) - Base numérica (2-36). Padrão 10.
Retorno

Número ou nulo se falhar.

Exemplo
local n = converta_para_número("123") -- 123
local hex = converta_para_número("FF", 16) -- 255

converta_para_texto (valor)

Converte qualquer valor para sua representação em texto.

Parâmetros
  • valor: Qualquer - Valor a converter.
Retorno

Texto.

Exemplo
local s = converta_para_texto(123) -- "123"

defina_metatabela (tabela, metatabela)

Define a metatabela de uma tabela.

Parâmetros
  • tabela: Tabela - A tabela alvo.
  • metatabela: Tabela/Nulo - A nova metatabela.
Retorno

A própria tabela.

Exemplo
defina_metatabela(obj, {__índice = Classe})

execute_arquivo (caminho)

Carrega e executa um arquivo Sol imediatamente.

Parâmetros
  • caminho: Texto - Caminho do arquivo.
Exemplo
execute_arquivo("config.sol")

exiba (valores...)

Mostra valores na saída Padrão (console).

Parâmetros
  • valores: Qualquer - Lista de valores para exibir.
Exemplo
exiba("Olá", "Mundo", 2026)

lance_erro (mensagem, [nível])

Interrompe a execução com uma mensagem de erro.

Parâmetros
  • mensagem: Texto - A mensagem de erro.
  • nível: Inteiro (opcional) - Nível da pilha onde ocorreu o erro.
Exemplo
lance_erro("Algo deu errado!")

obtenha_metatabela (valor)

Retorna a metatabela associada ao valor.

Parâmetros
  • valor: Qualquer - O valor para consultar.
Retorno

Tabela ou nulo.

Exemplo
local meta = obtenha_metatabela(obj)

obtenha_pares (tabela)

Iterador para percorrer todas as chaves e valores de uma tabela.

Parâmetros
  • tabela: Tabela - A tabela a iterar.
Exemplo
para k, v em obtenha_pares(tab) faça
    exiba(k, v)
fim

obtenha_pares_indexados (tabela)

Iterador para percorrer apenas índices numéricos sequenciais (array).

Parâmetros
  • tabela: Tabela - A tabela a iterar.
Exemplo
para i, v em obtenha_pares_indexados(lista) faça
    exiba(i, v)
fim

obtenha_tipo (valor)

Retorna o tipo do valor como string ("numero", "texto", "tabela", "funcao", "usuario", "filamento", "nulo").

Parâmetros
  • valor: Qualquer - O valor a inspecionar.
Retorno

Texto.

Exemplo
exiba(obtenha_tipo(10)) -- "numero"
exiba(obtenha_tipo("Olá")) -- "texto"

selecione (índice, ...)

Retorna todos os argumentos após o índice especificado. Se índice for "#", retorna o número total de argumentos.

Parâmetros
  • índice: Inteiro/Texto - Posição inicial ou "#".
  • ...: Variável - Argumentos.
Retorno

Múltiplos valores.

Exemplo
selecione(2, "a", "b", "c") -- Retorna "b", "c"
exiba(selecione("#", "a", "b", "c")) -- 3

➗ Matemática (math)

funções Matemáticas. Importe com local mat = importe("matematica").

arredonde_para_piso (x)

Arredonda um número para baixo (floor).

Parâmetros
  • x: Número - O valor a arredondar.
Retorno

Inteiro.

Exemplo
mat.arredonde_para_piso(3.9) -- 3

arredonde_para_teto (x)

Arredonda um número para cima (ceil).

Parâmetros
  • x: Número - O valor a arredondar.
Retorno

Inteiro.

Exemplo
mat.arredonde_para_teto(3.1) -- 4

converta_para_graus (rad)

Converte um ângulo de radianos para graus.

Parâmetros
  • rad: Número - ângulo em radianos.
Retorno

Número (graus).

Exemplo
local g = mat.converta_para_graus(mat.pi) -- 180

converta_para_inteiro (x)

Tenta converter um número ou string para um valor inteiro.

Parâmetros
  • x: Número/Texto - O valor a converter.
Retorno

Inteiro ou nulo.

Exemplo
local int = mat.converta_para_inteiro(3.0) -- 3

converta_para_radianos (graus)

Converte um ângulo de graus para radianos.

Parâmetros
  • graus: Número - Ângulo em graus.
Retorno

Número (radianos).

Exemplo
local rad = mat.converta_para_radianos(180) -- 3.14159...

defina_semente_aleatória (x)

Define a semente (seed) para o gerador de números pseudo-aleatórios.

Parâmetros
  • x: Inteiro - A semente.
Exemplo
mat.defina_semente_aleatória(os.tempo())

gere_aleatório ([m], [n])

Gera números pseudo-aleatórios.

Parâmetros
  • Sem argumentos: Retorna real no intervalo [0, 1).
  • m: Retorna inteiro no intervalo [1, m].
  • m, n: Retorna inteiro no intervalo [m, n].
Retorno

Número.

Exemplo
local dado = mat.gere_aleatório(1, 6)

obtenha_cosseno (rad)

Retorna o cosseno de um ângulo.

Parâmetros
  • rad: Número (radianos).
Retorno

Número.

obtenha_seno (rad)

Retorna o seno de um ângulo.

Parâmetros
  • rad: Número (radianos).
Retorno

Número.

obtenha_tangente (rad)

Retorna a tangente de um ângulo.

Parâmetros
  • rad: Número (radianos).
Retorno

Número.

obtenha_exponencial (x)

Calcula a exponencial e^x.

Parâmetros
  • x: Número.
Retorno

Número.

obtenha_logaritmo (x, [base])

Calcula o logaritmo de x.

Parâmetros
  • x: Número.
  • base: Número (opcional) - Padrão é e (log natural).
Retorno

Número.

obtenha_máximo (x, ...)

Retorna o maior valor entre os argumentos.

Parâmetros
  • x, ...: Números.
Retorno

Número.

obtenha_mínimo (x, ...)

Retorna o menor valor entre os argumentos.

Parâmetros
  • x, ...: Números.
Retorno

Número.

obtenha_raiz_quadrada (x)

Calcula a raiz quadrada de x.

Parâmetros
  • x: Número não-negativo.
Retorno

Número.

obtenha_valor_absoluto (x)

Retorna o valor absoluto (módulo) de x.

Parâmetros
  • x: Número.
Retorno

Número positivo.

frexp (x)

Decompõe x em mantissa e expoente (x = m * 2^e).

Parâmetros
  • x: Número.
Retorno

Número (mantissa) e Inteiro (expoente).

ldexp (m, e)

Recompõe um número a partir da mantissa e expoente (inverso de frexp).

Parâmetros
  • m: Número - Mantissa.
  • e: Inteiro - Expoente.
Retorno

Número (m * 2^e).

verifique_menor_que_sem_sinal (m, n)

Verifica se m < n tratando ambos como inteiros sem sinal.

Parâmetros
  • m, n: Inteiros.
Retorno

Booleano.

separe_fração_inteiro (x)

Separa a parte inteira e a parte fracionária de x.

Parâmetros
  • x: Número.
Retorno

Número (parte inteira) e Número (parte fracionária).

obtenha_resto_flutuante (x, y)

Retorna o resto da divisão de x por y (equivalente a fmod).

Parâmetros
  • x, y: Números.
Retorno

Número.

📘 Texto (texto)

Manipulação de strings. Métodos também disponíveis via : em strings. Importe com local txt = importe("texto").

combine (s, Padrão)

Busca a primeira ocorrência do Padrão na string e retorna as capturas (match).

Parâmetros
  • s: Texto - A string onde buscar.
  • Padrão: Texto - O Padrão Lua simplificado.
Retorno

Texto(s) capturado(s) ou nulo.

Exemplo
local dia, mes = txt.combine("Hoje é 13/01", "(%d+)/(%d+)") -- "13", "01"

combine_globalmente (s, Padrão)

Retorna um iterador para todas as ocorrências do Padrão no texto (gmatch).

Parâmetros
  • s: Texto - A string onde buscar.
  • Padrão: Texto - O Padrão a buscar repetidamente.
Retorno

Iterador (Função).

Exemplo
para palavra em txt.combine_globalmente("Oi mundo sol", "%a+") faça ... fim

converta_para_maiúscula (s)

Retorna uma cópia do texto com todas as letras em maiúsculo.

Parâmetros
  • s: Texto.
Retorno

Texto.

converta_para_minúscula (s)

Retorna uma cópia do texto com todas as letras em minúsculo.

Parâmetros
  • s: Texto.
Retorno

Texto.

crie_caractere (código...)

Retorna uma string composta pelos caracteres correspondentes aos códigos numéricos fornecidos.

Parâmetros
  • código...: Inteiros - Códigos ASCII/Byte.
Retorno

Texto.

Exemplo
txt.crie_caractere(65, 66, 67) -- "ABC"

desempacote (formato, string)

Extrai valores de uma string binária seguindo um formato (similar ao struct.unpack de C).

Parâmetros
  • formato: Texto - String de formato.
  • string: Texto - Dados binários.
Retorno

Múltiplos valores desempacotados.

empacote (formato, v1, v2...)

Empacota valores em uma string binária seguindo um formato (similar ao struct.pack de C).

Parâmetros
  • formato: Texto - String de formato.
  • v1, v2...: Valores a empacotar.
Retorno

Texto (Dados binários).

obtenha_tamanho_pacote (formato)

Retorna o tamanho em bytes que o formato de empacotamento ocupará.

Parâmetros
  • formato: Texto.
Retorno

Inteiro.

despeje (f)

Retorna a representação binária (bytecode) de uma função Sol.

Parâmetros
  • f: Função.
Retorno

Texto (bytecode) ou nulo.

encontre (s, Padrão, [ini], [simples])

Retorna a posição inicial e final da primeira ocorrência de um Padrão no texto.

Parâmetros
  • s: Texto - Onde buscar.
  • Padrão: Texto - O que buscar.
  • ini: Inteiro (opcional) - Onde começar.
  • simples: Booleano (opcional) - Se verdadeiro, desativa padrões regex.
Retorno

Inteiro (início), Inteiro (fim), ou nulo.

Exemplo
local i, j = txt.encontre("Olá Sol", "Sol") -- 5, 7

formate (formato, ...)

Retorna uma string formatada seguindo o estilo printf.

Parâmetros
  • formato: Texto - O formato.
  • ...: Valores a formatar.
Retorno

Texto.

Exemplo
txt.formate("Valor: %.2f", 10.567) -- "Valor: 10.57"

inverta (s)

Inverte a ordem dos caracteres da string.

Parâmetros
  • s: Texto.
Retorno

Texto.

obtenha_byte (s, [i], [j])

Retorna os códigos numéricos (ASCII/Unicode) dos caracteres da string.

Parâmetros
  • s: Texto.
  • i: Inteiro (opcional) - Início.
  • j: Inteiro (opcional) - Fim.
Retorno

Inteiros (múltiplos valores).

obtenha_comprimento (s)

Retorna o tamanho da string em bytes. O operador # faz o mesmo.

Parâmetros
  • s: Texto.
Retorno

Inteiro.

obtenha_subtexto (s, i, [j])

Extrai uma parte da string (substring) do índice i ao j.

Parâmetros
  • s: Texto.
  • i: Inteiro - Início.
  • j: Inteiro (opcional) - Fim (Padrão -1).
Retorno

Texto.

Exemplo
txt.obtenha_subtexto("Teste", 1, 3) -- "Tes"

repita (s, n)

Retorna uma string contendo n cópias de s concatenadas.

Parâmetros
  • s: Texto.
  • n: Inteiro.
Retorno

Texto.

Exemplo
txt.repita("Oi", 3) -- "OiOiOi"

substitua_globalmente (s, Padrão, repl, [n])

Substitui ocorrências do Padrão no texto por uma string de substituição (gsub).

Parâmetros
  • s: Texto.
  • Padrão: Texto.
  • repl: Texto/Tabela/Função - O substituto.
  • n: Inteiro (opcional) - Limite de substituições.
Retorno

Texto (resultado) e Inteiro (número de substituições).

Exemplo
txt.substitua_globalmente("Banana", "a", "o") -- "Bonono"

📊 Tabela (tabela)

Manipulação de tabelas. Importe com local tab = importe("tabela").

concatene (lista, [sep], [i], [j])

Concatena os elementos de uma lista em uma única string, separados por sep.

Parâmetros
  • lista: Tabela.
  • sep: Texto (opcional) - Separador.
  • i: Inteiro (opcional) - Início.
  • j: Inteiro (opcional) - Fim.
Retorno

Texto.

Exemplo
tab.concatene({"A", "B", "C"}, "-") -- "A-B-C"

crie (n, [v])

Cria uma tabela nova pré-alocada com n elementos.

Parâmetros
  • n: Inteiro - Capacidade da sequência.
  • v: Qualquer (opcional) - Valor inicial.
Retorno

Tabela.

desempacote (lista, [i], [j])

Retorna os elementos da tabela como valores soltos (argumentos).

Parâmetros
  • lista: Tabela.
  • i: Inteiro (opcional) - Início (Padrão 1).
  • j: Inteiro (opcional) - Fim (Padrão #lista).
Retorno

Múltiplos valores.

Exemplo
exiba(tab.desempacote({10, 20})) -- 10    20

empacote (...)

Cria uma nova tabela contendo todos os argumentos e um campo 'n' com o total.

Parâmetros
  • ...: Valores a empacotar.
Retorno

Tabela (com campo n).

insira (lista, [pos], valor)

Insere um elemento na lista em uma posição específica, deslocando os outros.

Parâmetros
  • lista: Tabela.
  • pos: Inteiro (opcional) - Posição de inserção. Padrão: fim.
  • valor: Qualquer - Elemento a inserir.
Exemplo
tab.insira(t, 1, "Topo")

mova (a1, f, e, t, [a2])

Move elementos da tabela a1 para a tabela a2 (ou a mesma).

Parâmetros
  • a1: Tabela - Origem.
  • f: Inteiro - Índice inicial fonte.
  • e: Inteiro - Índice final fonte.
  • t: Inteiro - Índice inicial destino.
  • a2: Tabela (opcional) - Destino (Padrão a1).
Retorno

Tabela (a2).

ordene (lista, [comp])

Ordena os elementos de um array em ordem crescente ou usando uma função de comparação.

Parâmetros
  • lista: Tabela.
  • comp: Função (opcional) - Função que recebe (a,b) e retorna verdadeiro se a < b.
Exemplo
tab.ordene(t) -- Crescente
tab.ordene(t, function(a,b) retorne a > b fim) -- Decrescente

remova (lista, [pos])

Remove um elemento da lista na posição especificada.

Parâmetros
  • lista: Tabela.
  • pos: Inteiro (opcional) - Posição a remover. Padrão: último.
Retorno

Valor removido.

🖥️ Terminal (terminal)

Acesso a arquivos e terminal. Importe com local term = importe("terminal").

abra (arquivo, [modo])

Abre um arquivo. Modos: "r" (leitura), "w" (escrita), "a" (anexo).

local f = term.abra("dados.txt", "w")
f:escreva("Olá Arquivo")
f:feche()

abra_processo (prog, [modo])

Inicia um processo e retorna um handle de arquivo (popen).

crie_arquivo_temporário ()

Retorna um arquivo temporário aberto para leitura/escrita.

defina_entrada (arquivo)

Define o arquivo Padrão para leitura (stdin).

defina_saída (arquivo)

Define o arquivo Padrão para escrita (stdout).

despeje (arquivo)

Salva dados do buffer no arquivo.

escreva (...)

Escreve na saída Padrão.

feche ([arquivo])

Fecha o arquivo dado ou o Padrão.

itere_linhas ([arquivo])

Iterador que lê o arquivo linha por linha.

para linha em term.itere_linhas("texto.txt") faça ... fim

leia ([fmt])

Lê da entrada Padrão. Formatos: "a" (tudo), "l" (linha), "n" (número).

obtenha_tipo (obj)

Verifica se é um arquivo aberto ou fechado.

⚙️ Sistema Operacional (sistema_operacional)

Interação com o sistema operacional. Importe com local so = importe("sistema_operacional").

calcule_diferença_tempo (t2, t1)

Retorna a diferença em segundos entre dois tempos.

crie_pasta (caminho)

Cria um diretório (mkdir).

defina_localidade (locale, [categoria])

Define a localidade do programa (setlocale).

execute ([comando])

Executa um comando do sistema.

so.execute("dir")

gere_nome_temporário ()

Gera um nome de arquivo único.

obtenha_data ([formato], [tempo])

Retorna a data/hora formatada.

so.obtenha_data("%d/%m/%Y") -- "13/01/2026"

obtenha_relógio ()

Retorna o tempo de CPU usado pelo programa (clock).

obtenha_tempo ([tabela])

Retorna o timestamp atual (epoch) ou cria a partir de uma tabela.

obtenha_variável_ambiente (nome)

Lê uma variável de ambiente.

local path = so.obtenha_variável_ambiente("PATH")

remova (arquivo)

Apaga um arquivo.

renomeie (antigo, novo)

Renomeia um arquivo.

saia ([codigo])

Encerra o programa.

🧶 Corrotina (corrotina)

Programação cooperativa. Importe com local co = importe("corrotina").

ceda (valores...)

Suspende a execução da corrotina atual.

co.ceda("pausando")

crie (f)

Cria uma nova corrotina. Retorna uma thread.

local c = co.crie(function() exiba("oi") fim)

envolva (f)

Cria uma corrotina e retorna uma função para iniciá-la.

feche (co)

Fecha uma corrotina e libera recursos.

obtenha_estado (co)

Retorna o estado: "executando", "suspenso", "normal" ou "morto".

obtenha_executando ()

Retorna a corrotina atual e um booleano (se é a principal).

retome (co, [valores...])

Inicia ou continua a execução da corrotina.

co.retome(c)

verifique_pode_ceder ()

Verifica se a corrotina atual pode ceder (yield).

📦 Pacote (pacote)

Gerenciamento de módulos. Importe com local pac = importe("pacote").

busque_caminho (nome, caminho, [sep], [rep])

Procura por um arquivo em um caminho.

carregue_biblioteca (lib, func)

Carrega uma biblioteca C dinâmica (DLL/SO).

importe (modname)

Carrega um módulo. Função global Padrão.

local m = importe("meu_modulo")

🔤 UTF-8 (utf8)

Manipulação de strings UTF-8. Importe com local u8 = importe("utf8").

crie_caractere (códigos...)

Cria uma string UTF-8 a partir de code points.

itere_códigos (s, [lax])

Iterador sobre code points UTF-8.

para p, c em u8.itere_códigos("Ação") faça ... fim

obtenha_comprimento (s, [i], [j])

Retorna o número de caracteres UTF-8 (não bytes).

obtenha_deslocamento (s, n, [i])

Retorna o deslocamento em bytes de um caractere.

obtenha_ponto_código (s, [i], [j])

Retorna os code points da string.

Padrão_caractere

Padrão de string que combina com um caractere UTF-8.

🐞 Depuração (depuracao)

Ferramentas de depuração. Importe com local dep = importe("depuracao").

defina_gancho (thread, hook, mask, [count])

Define uma função de gancho (hook) para monitorar execução.

defina_local (thread, nível, n, valor)

Define o valor de uma variável local na pilha.

defina_metatabela (valor, tabela)

Define a metatabela de qualquer valor.

defina_valor_acima (f, up, valor)

Define o valor de um upvalue.

defina_valor_usuário (u, valor, [n])

Define o valor associado a um userdata.

entre_depuração ()

Entra em modo interativo de depuração.

id_valor_acima (f, n)

Retorna um ID único para o upvalue.

junte_valor_acima (f1, n1, f2, n2)

Faz um upvalue de f1 referenciar o mesmo valor de f2.

obtenha_gancho ([thread])

Retorna as configurações atuais do gancho.

obtenha_informação ([thread], f, [opções])

Retorna informações sobre uma função ou nível da pilha.

obtenha_local ([thread], nível, n)

Retorna o nome e valor de uma variável local.

obtenha_metatabela (valor)

Retorna a metatabela de qualquer valor.

obtenha_rastreio ([thread], [msg], [nível])

Retorna uma string com o stack trace.

obtenha_registro ()

Retorna a tabela de registro (Registry).

obtenha_valor_acima (f, up)

Retorna o nome e valor de um upvalue.

obtenha_valor_usuário (u, [n])

Retorna o valor associado a um userdata.

âš¡ Filamento (filamento)

Tarefas assíncronas com corrotinas gerenciadas. Importe com local fil = importe("filamento").

durma (ms)

Pausa a execução da tarefa atual por milissegundos.

fil.durma(1000)

inicie_loop ()

Inicia o loop de eventos para processar tarefas.

fil.inicie_loop()

tarefa (f)

Cria e agenda uma nova tarefa (corrotina gerenciada).

fil.tarefa(function() exiba("Assíncrono!") fim)

⚡ Paralelismo (paralelo)

Execução em threads do SO. Importe com local par = importe("paralelo").

canal ()

Cria um canal de comunicação entre threads.

local c = par.canal()

envie (canal, msg)

Envia uma mensagem (string) para o canal.

execute (script, [canal])

Inicia uma nova thread executando o script Sol.

par.execute("exiba('Nova Thread')", c)

receba (canal)

Bloqueia até receber uma mensagem do canal.

local msg = par.receba(c)

🧪 Teste (teste)

Framework de testes unitários. Importe com local t = importe("teste").

afirme (cond, [msg])

Afirma que a condição é verdadeira.

afirme_contem (tabela, valor)

Verifica se a tabela contém o valor.

afirme_diferente (a, b)

Verifica desigualdade.

afirme_erro (f)

Verifica se a função lança erro.

afirme_falso (v)

Verifica se é falso.

afirme_igual (a, b)

Verifica igualdade.

afirme_maior (a, b)

Verifica se a > b.

afirme_maior_igual (a, b)

Verifica se a >= b.

afirme_menor (a, b)

Verifica se a < b.

afirme_menor_igual (a, b)

Verifica se a <= b.

afirme_não_nulo (v)

Verifica se não é nulo (nil).

afirme_nulo (v)

Verifica se é nulo (nil).

afirme_sem_erro (f)

Verifica se a função executa sem erros.

afirme_tamanho (n, t)

Verifica o tamanho da tabela/string.

afirme_tipo (tipo, v)

Verifica o tipo do valor.

afirme_vazio (t)

Verifica se a tabela está vazia.

afirme_verdadeiro (v)

Verifica se é verdadeiro.

antes_de_cada (f)

Executa antes de cada caso de teste.

antes_de_todos (f)

Executa uma vez antes de todos os testes.

caso (nome, f)

Define um caso de teste.

depois_de_cada (f)

Executa após cada caso de teste.

depois_de_todos (f)

Executa uma vez após todos os testes.

descreva (desc)

Define a descrição do grupo de testes atual.

execute ()

Inicia a execução dos testes cronometrados.

falhe (msg)

Força uma falha no teste.

grupo (nome, f)

Define um grupo de testes.

pule (msg)

Pula o teste atual.

reinicie ()

Reinicia o estado dos testes.

relatorio ()

Exibe o relatório final dos testes.

📄 NDS (Notação de Dados Sol)

Biblioteca para serialização e deserialização de dados no formato Sol nativo.

O formato NDS é uma alternativa ao JSON que usa sintaxe Sol/Lua, tornando-o mais natural para desenvolvedores Sol.

Formato NDS: Similar a tabelas Sol, sem necessidade de retorne {}.
-- arquivo.nds
nome = "João"
idade = 30
endereco = {
    cidade = "São Paulo",
    cep = "01234-567"
}

nds.carregue (texto)

Converte uma string no formato NDS para uma tabela Sol.

Parâmetros
  • texto: Texto - Conteúdo NDS a ser parseado.
Retorno

Tabela ou (nulo, mensagem de erro).

Exemplo
local dados = nds.carregue([[
    nome = "Maria",
    ativo = verdadeiro
]])
exiba(dados.nome) -- "Maria"

nds.carregue_arquivo (caminho)

Lê um arquivo NDS e retorna seu conteúdo como tabela.

Parâmetros
  • caminho: Texto - Caminho para o arquivo .nds.
Retorno

Tabela ou (nulo, mensagem de erro).

Exemplo
local config = nds.carregue_arquivo("config.nds")
exiba(config.servidor)

nds.converta (tabela)

Converte uma tabela Sol para string no formato NDS.

Parâmetros
  • tabela: Tabela - A tabela a serializar.
Retorno

Texto no formato NDS.

Exemplo
local dados = {nome = "João", idade = 25}
local texto = nds.converta(dados)
exiba(texto)
-- {
--     nome = "João",
--     idade = 25
-- }

nds.salve (caminho, tabela)

Salva uma tabela em um arquivo no formato NDS.

Parâmetros
  • caminho: Texto - Caminho do arquivo de destino.
  • tabela: Tabela - Dados a salvar.
Retorno

verdadeiro ou (falso, mensagem de erro).

Exemplo
local dados = {usuario = "admin", nivel = 10}
nds.salve("usuario.nds", dados)

nds.converta_arquivo (tabela)

Converte uma tabela para string no formato de arquivo NDS (sem o wrapper de tabela).

Parâmetros
  • tabela: Tabela - A tabela a serializar.
Retorno

Texto pronto para salvar em arquivo .nds.

Exemplo
local dados = {nome = "João", idade = 25}
local conteudo = nds.converta_arquivo(dados)
-- nome = "João"
--
-- idade = 25
```