funcao json.codvisual(obj, as_key)
local s = {} // We'll build the string as an array of strings to be concatenated.
local kind = kind_of(obj) // This is 'array' if it's an array or type(obj) otherwise.
n = 0
t = 0
se kind == 'array' entao
se as_key entao retorne falso, ('Não é possível codificar uma matriz como uma chave.') fim
// n = n + 1
s[#s + 1] = '[\n'
para i, val em ipares(obj) inicio
t = t + 1
se i > 1 entao s[#s + 1] = ', \n' fim
s[#s + 1] = json.codvisual(val)
fim
s[#s + 1] = '\n]'
senaose kind == 'tabela' entao
se as_key entao retorne falso, ('Não é possível codificar tabela como uma chave.') fim
s[#s + 1] = '{\n'
para k, v em pares(obj) inicio
se #s > 1 entao s[#s + 1] = ', \n' fim
s[#s + 1] = json.codvisual(k, verdadeiro)
s[#s + 1] = ' :'
s[#s + 1] = json.codvisual(v)
fim
s[#s + 1] = '\n}'
senaose kind == 'string' entao
retorne ' "' .. escape_str(obj) .. '"'
senaose kind == 'numero' entao
se as_key entao retorne '"' .. convstring(obj) .. '"' fim
retorne convstring(obj)
senaose kind == 'boolean' entao
retorne convstring(obj)
senaose kind == 'nulo' entao
retorne 'null'
senao
retorne falso, ('Tipo não compatível com json: ' .. kind .. '.')
fim
retorne tabela.concat(s)
fim
G = " "
funcao apare(s)
retorne (string.troque(s, "^%s*(.-)%s*$", "%1"))
fim
imprima(apare(G))
local td = inclua'guiterminal'
local term = inclua'terminal';
local cortitulo = 'vermelho';
funcao principal()
::_INICIO_LOOP_::
//dialogo de opção:
ret, m = td.escolha('Cores',' Escolha uma cor (use as setas):', {'azul','verde','preto','magenta'},12,3,19,45,cortitulo);
se ret entao
td.def_corfundo(m);
td.ative_corfundo();
fim
//mensagens
local txt = [[ Esta é uma mensagem multilinha!
Em Prisma os duplos colchetes
permitem a criação de strings
multilinhas
certo!!!
Você mudou a cor de fundo!
para: ]] .. m
//Ok
td.mensagem_ok("Teste", txt , 14,6,cortitulo);
//aviso:
td.mensagem_aviso('Aviso',txt,18,2,cortitulo);
//mensagem genérica (questão):
//com botões padrão: (Cancelar) (Não) (Sim)
ret,m = td.mensagem_questao("Teste","Deseja reverter a cor de fundo para Preto?",15,4, cortitulo);
se ret == 3 entao // 1=(Cancelar) 2=(Não) 3=(Sim);
td.def_corfundo('preto');
td.ative_corfundo();
fim
td.limpe_tudo();
//listagem, pode exibir um lista de clientes ou de arquivos em uma pasta:
ret, m = td.listagem('Clientes',' Nome Tel. End.', lista, 5,3, 19,48,'vermelho');
td.limpe_tudo();
se ret entao //omitindo posicao col x lin, o padrão é: 0 x 0;
td.mensagem_ok('Cliente','Você selecionou: ' .. m);
senao
td.mensagem_aviso('Anteção','Você não selecionou nenhum cliente');
fim
//com botões customizados: {"Sim","Não",num=2,cor='vermelho'} num = botão selecionado, cor = cor do botao selec.
ret,m = td.mensagem_questao("Teste","Sair do programa?",15,6, cortitulo,{"Sim","Não",num=2,cor='azul'});
se ret entao
se m == 'Sim' entao
td.def_corfundo'preto';
td.limpe_tudo();
term.defPadrao();
sis.saia(0);
senao
td.limpe_tudo();
vapara _INICIO_LOOP_;
fim
fim
retorne 0;
fim //fim principal
lista = {
'Marcos 3334546 rua A',
'Fernanda 5667777 rua B',
'João 2342342 rua C',
'Marcela 1231244 rua D'
}