Com o lançamento novo Prisma novas funções foram adicionadas outras melhoradas ou modificadas.
Antes de continuar baixe a versão mais atual (1.0.99 ou superior)
Aqui quero mostrar algumas funções novas da biblioteca string:
1 – strbase64 = string.base64(‘string’)
Esta função converte uma cadeia de caracteres de decimal para base 64, ficando assim codificada e irreconhecível. Ela é muito útil para armazenar imagens em texto, pois elimina os caracteres especiais.
2 – str = string.dec_base64(‘strbase64’);
Faz o inverso, recebe uma string codificada em base64 e decodifica voltando ao estado original e legível.
3 – strhex = string.hex(‘string’);
Converte uma string em hexadecimal.
4 – str = string.dec_hex(‘strhex’);
Decodifica uma string hexadecimal.
5 – str_sem_espacos = string.apares(‘string_com_espacos’);
1 2 |
local s = ' testando... '; imprimaf(">>%s<<", s:apare() ); |
Saída: >>testando…<<
Obs.: imprimaf(“format”,…); é uma nova função (imprima formatado), é o mesmo que:
1 |
imprima( string.formate(">>%s<<", string.apare(s))); |
Obs.: Toda string é um objeto com métodos, então você pode usar s:apare(); ou string.apare(s);
Retira os espaços do início e do fim da string. (do meio não);
6 – tab = string.analise(‘string’, ‘sinais’);
Quebra uma string em tokens de acordo com os sinais do segundo parâmetro, retornando uma tabela com cada token.
Ex.:
1 2 3 4 5 6 |
local s = [[imprima("ola mundo em Prisma");]]; local tab = s:analise([['"();]]); para k , v em pares(tab) inicio imprima(k,v) fim |
Saída:
1 2 3 4 5 6 7 |
1 imprima 2 ( 3 " 4 ola mundo em Prisma 5 " 6 ) 7 ; |
Exemplos da base64 e hex:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
//Teste funções base64 e hexa na biblioteca string. local s = 'olá mundo em Prisma' local b = string.base64(s); local h = string.hex(s) imprima('Original:', s ); imprima('\nBase64:', b ); imprima('\nhexa:', h ); poe'\n-----------------------------------------------------\n'; imprima('Base64 decodificado:', string.dec_base64(b) ); poe''; imprima( 'Hex decodificado:', string.dec_hex(h)); es.escreva'\n\nENTER para sair '; leia(); |
Para usar com imagens, ou outros arquivos binários:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
//lendo a imagem local a = es.abra('img.jpg','leiturabin'); se a entao txt = a:leia'*t'; a:feche(); txt_b64 = string.base64(txt); //codificando local result = "img = '".. txt_b64 .. "'"; local b = es.abra('img.prisma','escrita');//gravando se b entao b:escreva(result); b:feche(); executearquivo('img.prisma');//executando img='....' se(img) entao //seu codigo aqui. fim senao erro'Erro ao abrir arquivo para escrita'; fim senao erro'Erro ao abrir arquivo'; fim |
Por enquanto é isso, até mais.
Att. Adalberto