local s = [[
//comentário de linha única
--comentário de linha única estilo Lua funciona em Prisma
funcao soma(a,b)
retorne a+b;
fim
imprima('olá mundo.');
imprima(soma(1,2) );
]]
--[[
Comentário
multilinha
estilo Lua
também funciona em Prisma
]]
local color = inclua'colorize';
local tab = color.colorize(s);
local str = '<pre>';
para i,v em ipares(tab) inicio
str = str .. v;
fim
str = str .. '\n</pre>';
//agora só fazer algo com a str html, usar em cgi web, por exemplo.
//esta área de código foi feita usando a lib colorize.pris a partir do programa minidoc
//um gerador de documentação, muito básico e simples, mas que funciona, feito em Prisma-1.0.107
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
local s = [[ //comentário de linha única --comentário de linha única estilo Lua funciona em Prisma funcao soma(a,b) retorne a+b; fim imprima('olá mundo.'); imprima(soma(1,2) ); ]] --[[ Comentário multilinha estilo Lua também funciona em Prisma ]] local color = inclua'colorize'; local tab = color.colorize(s); local str = '<pre>'; para i,v em ipares(tab) inicio str = str .. v; fim str = str .. '\n</pre>'; //agora só fazer algo com a str html, usar em cgi web, por exemplo. //esta área de código foi feita usando a lib colorize.pris a partir do programa minidoc //um gerador de documentação, muito básico e simples, mas que funciona, feito em Prisma-1.0.107
Função hl.colorize(txt, list) - recebe uma string txt e retorna uma string com destaque palavras em html de acordo com as configurações da tabela list.
Função hl.colorize_md(txt, list) - mesma função, praticamente, mas com escape para caracteres markdown.
*A saída pode ser lida por um leitor de pdf compatível, como o okular, por exemplo.Função hl.colorize_str(txt, list) - coloriza o fonte Prisma e já retorna uma string preparada para embutir no html.
Para customizar as definições da área de código (como cor da fonte, cor de fundo, tamanho etc.) veja o exemplo acima, a tabela hl.lista_prisma e modifique o quanto quiser!
Obs.: A string retornada já está preparada com a tag <pre> com contagem de números de linhas e highlighting.
local cl = inclua'colorize';
local s = [[
imprima("olá mundo");
para i=1, 10 inicio
imprima(i);
fim
]]
local txt = cl.colorize_str(s);
txt = '<html><head><title>Teste colorize</title></head><body>\n<h1>Teste colorize</h1>\n' .. txt .. '</body></html>\n';
local a, err = es.abra('teste_colorize.html', 'escrita');
se nao a entao erro(err); fim
a:escreva(txt);
a:feche();
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
local cl = inclua'colorize'; local s = [[ imprima("olá mundo"); para i=1, 10 inicio imprima(i); fim ]] local txt = cl.colorize_str(s); txt = '<html><head><title>Teste colorize</title></head><body>\n<h1>Teste colorize</h1>\n' .. txt .. '</body></html>\n'; local a, err = es.abra('teste_colorize.html', 'escrita'); se nao a entao erro(err); fim a:escreva(txt); a:feche();
(tabela) - variável tabela com as definições de estilo para a colorização dos fontes Prisma.
Obs.: é possível alterar os valores desta tabela e customizar o estilo de seu highlighting. basta analisar e modificar aquilo que quiser nela.
hl.lista_prisma = { //estilo padrão da área código:
// pad 2, cor texto: preto, cor fundo: branco; tamanho fonte: 16pixels
//altura linha: 16px; borda de 1px cor: #d5d5d5; rolagem: auto; altura máxima 400px;
area_codigo = {estilo=' padding:2; font-size: 16px; line-height: 16px; border: 1px solid #d5d5d5; overflow: auto; max-height: 400px; ';
num_linhas = {
cor_letra = 'black'; //na contagem de linhas essa cor é o padrão dos números.
cor_letra_par = 'black';
cor_fundo = '#ffffff'; //padrão cor de fundo (branco); (impar);
cor_fundo_par = '#ddd'; //cor par, alternância de cores (impar, par);
};
};
comentario={
['//']='color:green';
['/*'] = 'color:green';
['--'] = 'color:grey';
['--[[']='color:grey';
};
strings = {
['"'] = 'color:blue'; //strings
['\''] = 'color:blue'; //strings
['[['] = 'color:blue';//string mult linha
};
numeros = {
estilo='color:red';
};
simbolos = {
estilo='font-weight:bold;';
'[',']','{','}','(',')', '+','-','/','*','%','>','<','=','.',';','#','?',':',
'^','~','&','|','\\'
};
comandos = { estilo='font-weight:bold;color:#b50546'; //defina o estilo html aqui.{
"e", "quebre", "inicio", "início", "senao", "senão", "senaose","senãose",
"fim", "falso", "para", "funcao","função", "vapara", "se",
"em", "local", "nulo", "nao","não", "ou", "repita",
"retorne", "entao","então", "verdadeiro", "ate","até", "enquanto",
"..", "...", "==", ">=", "<=", "<>","<<", ">>", "::", "<eof>",
"<numero>", "<nome>", "<string>","este", "vapara"
};
base = { estilo='color:#b50546';
"erro", "compile", "convnumero", "cod",
"string", "pchame", "U", "V", "convstring",
"mat", "S", "T", "N", "_VERSAO",
"proximo", "F", "B", "_INFO", "contador",
"corotina", "tabela", "tipo", "modulo", "carregue",
"prismadir", "imprimaf", "Tab", "executestring", "Bool",
"args", "igual", "executearquivo", "debug", "defmetatabela",
"poe", "desempacote", "bit32", "escolha", "inclua",
"tente", "leia", "Num", "ipares", "obt",
"coletelixo", "Thre", "pares", "Func", "obtmetatabela",
"car", "sis", "es", "carreguearquivo", "pacote",
"_G", "imprima", "def", "Classe", "xpchame",
"Udat", "utf8", "Val", "selecione", "Str",
"tamanho"
};
es={ estilo='color:#b50546';
"tipo", "saida", "erro", "escreva",
"abra", "linhas", "leia", "tmparquivo", "feche",
"leitura", "escrita", "entrada", "pabra", "esvazie"
};
mat={ estilo='color:#b50546';
"log", "log10", "arcoseno", "pi",
"exp", "senoh", "separe", "minimo", "arredondeabaixo",
"arredonde", "arcotangente", "aleatorio", "seno", "arcocosseno",
"frexp", "absoluto", "arredondeacima", "arcotangente2", "corte",
"raiz", "tangenteh", "maximo", "xaleatorio", "cossenoh",
"raizquad", "ldexp", "elevado", "infinito", "hipot",
"emGrau", "raizcubica", "tangente", "cosseno", "cmodulo",
"xrandonico", "randonico", "emRadianos"
};
sis={ estilo='color:#b50546';
"durma", "execute", "tamanho", "obtvarambiente",
"data", "tempo", "defvarambiente", "diftempo", "saia",
"nome", "nome_arquivo", "deflocal", "nometmp", "relogio",
"renomeie", "caminho_absoluto", "remova", "delvarambiente"
};
string={ estilo='color:#b50546';
"separe", "capte", "inverta", "car",
"cod", "base64", "substring", "minuscula", "byte",
"tamanho", "hex", "dec_hex", "corte", "compile",
"procure", "entrecar", "formate", "junte", "apare",
"maiuscula", "troque", "dec_base64", "sub", "nconcat",
"analise"
};
tabela={ estilo='color:red';
"empacote", "ordene", "maxn", "concat",
"insira", "remova", "desempacote"
};
corotina={ estilo='color:#b50546';
"estado", "exec", "yield", "wrap",
"executando", "crie"
};
utf8 = { estilo='color:#b50546';
"largindex", "offset", "ncasecmp", "tamanho",
"remova", "fold", "titulo", "insira", "cod",
"inverta", "troque", "corte", "maiuscula", "cods",
"separe", "charpattern", "capte", "procure", "larg",
"proximo", "carpos", "car", "escape", "pontocod",
"minuscula", "byte"
};
bit32={ estilo='color:#b50546';
"rrotate", "bou", "bteste", "arshift",
"be", "lrotate", "lshift", "bnao", "rshift",
"bxou", "extract", "replace"
};
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
hl.lista_prisma = { //estilo padrão da área código:
// pad 2, cor texto: preto, cor fundo: branco; tamanho fonte: 16pixels
//altura linha: 16px; borda de 1px cor: #d5d5d5; rolagem: auto; altura máxima 400px;
area_codigo = {estilo=' padding:2; font-size: 16px; line-height: 16px; border: 1px solid #d5d5d5; overflow: auto; max-height: 400px; ';
num_linhas = {
cor_letra = 'black'; //na contagem de linhas essa cor é o padrão dos números.
cor_letra_par = 'black';
cor_fundo = '#ffffff'; //padrão cor de fundo (branco); (impar);
cor_fundo_par = '#ddd'; //cor par, alternância de cores (impar, par);
};
};
comentario={
['//']='color:green';
['/*'] = 'color:green';
['--'] = 'color:grey';
['--[[']='color:grey';
};
strings = {
['"'] = 'color:blue'; //strings
['\''] = 'color:blue'; //strings
['[['] = 'color:blue';//string mult linha
};
numeros = {
estilo='color:red';
};
simbolos = {
estilo='font-weight:bold;';
'[',']','{','}','(',')', '+','-','/','*','%','>','<','=','.',';','#','?',':',
'^','~','&','|','\\'
};
comandos = { estilo='font-weight:bold;color:#b50546'; //defina o estilo html aqui.{
"e", "quebre", "inicio", "início", "senao", "senão", "senaose","senãose",
"fim", "falso", "para", "funcao","função", "vapara", "se",
"em", "local", "nulo", "nao","não", "ou", "repita",
"retorne", "entao","então", "verdadeiro", "ate","até", "enquanto",
"..", "...", "==", ">=", "<=", "<>","<<", ">>", "::", "<eof>",
"<numero>", "<nome>", "<string>","este", "vapara"
};
base = { estilo='color:#b50546';
"erro", "compile", "convnumero", "cod",
"string", "pchame", "U", "V", "convstring",
"mat", "S", "T", "N", "_VERSAO",
"proximo", "F", "B", "_INFO", "contador",
"corotina", "tabela", "tipo", "modulo", "carregue",
"prismadir", "imprimaf", "Tab", "executestring", "Bool",
"args", "igual", "executearquivo", "debug", "defmetatabela",
"poe", "desempacote", "bit32", "escolha", "inclua",
"tente", "leia", "Num", "ipares", "obt",
"coletelixo", "Thre", "pares", "Func", "obtmetatabela",
"car", "sis", "es", "carreguearquivo", "pacote",
"_G", "imprima", "def", "Classe", "xpchame",
"Udat", "utf8", "Val", "selecione", "Str",
"tamanho"
};
es={ estilo='color:#b50546';
"tipo", "saida", "erro", "escreva",
"abra", "linhas", "leia", "tmparquivo", "feche",
"leitura", "escrita", "entrada", "pabra", "esvazie"
};
mat={ estilo='color:#b50546';
"log", "log10", "arcoseno", "pi",
"exp", "senoh", "separe", "minimo", "arredondeabaixo",
"arredonde", "arcotangente", "aleatorio", "seno", "arcocosseno",
"frexp", "absoluto", "arredondeacima", "arcotangente2", "corte",
"raiz", "tangenteh", "maximo", "xaleatorio", "cossenoh",
"raizquad", "ldexp", "elevado", "infinito", "hipot",
"emGrau", "raizcubica", "tangente", "cosseno", "cmodulo",
"xrandonico", "randonico", "emRadianos"
};
sis={ estilo='color:#b50546';
"durma", "execute", "tamanho", "obtvarambiente",
"data", "tempo", "defvarambiente", "diftempo", "saia",
"nome", "nome_arquivo", "deflocal", "nometmp", "relogio",
"renomeie", "caminho_absoluto", "remova", "delvarambiente"
};
string={ estilo='color:#b50546';
"separe", "capte", "inverta", "car",
"cod", "base64", "substring", "minuscula", "byte",
"tamanho", "hex", "dec_hex", "corte", "compile",
"procure", "entrecar", "formate", "junte", "apare",
"maiuscula", "troque", "dec_base64", "sub", "nconcat",
"analise"
};
tabela={ estilo='color:red';
"empacote", "ordene", "maxn", "concat",
"insira", "remova", "desempacote"
};
corotina={ estilo='color:#b50546';
"estado", "exec", "yield", "wrap",
"executando", "crie"
};
utf8 = { estilo='color:#b50546';
"largindex", "offset", "ncasecmp", "tamanho",
"remova", "fold", "titulo", "insira", "cod",
"inverta", "troque", "corte", "maiuscula", "cods",
"separe", "charpattern", "capte", "procure", "larg",
"proximo", "carpos", "car", "escape", "pontocod",
"minuscula", "byte"
};
bit32={ estilo='color:#b50546';
"rrotate", "bou", "bteste", "arshift",
"be", "lrotate", "lshift", "bnao", "rshift",
"bxou", "extract", "replace"
};
}