Inclusão de código fonte em postagens

1. Inclusão de código fonte em postagens

Paulo
paulo1205

(usa Ubuntu)

Enviado em 25/11/2014 - 18:44h

Prezados,

Abaixo eu misturo algumas sugestões com dúvidas.

Como eu participo sobretudo de comunidades do fórum voltadas a programação, acabo utilizando muito a tag [code], tanto para habilitar syntax highlighting quanto para permitir formatação com indentação e uso de strigs que, de outro modo, poderiam ser interpretadas pelo fórum como outras tags de formatação (por exemplo: [i], que costuma ser usado para indicar índice de arrays dentro de laços de repetição em C, mas poderia ser interpretado pelo fórum como tag de início de texto em itálicos).

Começo com uma dúvida: há como escolher a linguagem usada no syntax highlighting? Hoje, sempre que uso [code], a linguagem alvo é a de scripts do shell. Num fórum de C ou de Perl, aquelas regras não fazem tanto sentido e acabam tento muito pouca utilidade além de permitir a indentação. Às vezes até atrapalha.

A implementação atual tem alguns bugs. Um dos piores é interpretar a sequência “\0”, que é usada em C, Perl, Java e outras linguagens para designar o caráter nulo (byte com valor zero), de modo especial, substituindo-a com textos na forma “{TEXTO}”, “{TEXTO2}”, “{TEXTO3}” etc., ou coisas parecidas. Tenho o palpite de que isso poderia ser reflexo de que a barra invertida seguida de algum número poder ser interpretada como expressão de referência pregressa em alguns tipos de expressões regulares, e provavelmente o plugin que permite o highlighting usa expressões regulares e não está sabendo tratar a ocorrência de tais sequências no meio do código.

Outro problema ocorre principalmente com código em C. Quando ocorre algo como

#include <stdio.h> 


o texto compreendido entre os sinais de menor que ("<") e maior que (">"), que designa para o programa o nome de um arquivo de cabeçalhos que são parte do padrão, acaba sendo mal interpretado como se fosse uma tag HTML de abertura de bloco. Nem sempre isso causa problema visível (ver mais abaixo), mas o plugin (ou o próprio fórum, não sei) tenta compensar o suposto desequilíbrio de blocos inserindo uma inexistente tag HTML de fechamento (por exemplo: “</stdio.h>”), que fica visível no código fonte da página e também durante o carregamento da página, antes de o plugin começar a funcionar.

Existem casos patológicos do problema acima. Se o nome do cabeçalho incluir o caráter barra ("/") (o que acontece quando se usam cabeçalhos como “sys/types.h”, “arpa/inet.h” ou “netinet/ip.h”, por exemplo), o parser acha não apenas que se tem uma tag HTML de abertura, mas que ela tem erro de sintaxe, e tenta "corrigi-la" com uma transformação que simplesmente detona o código em C. Por exemplo, algo como “#include <sys/inet.h>” vira um absurdo “#include <sys inet.h="" >” e, nesse caso, a suposta tag de fechamento “</sys>” fica visível também no corpo da postagem.

Gostaria de propor, portanto, a possibilidade de escolher a linguagem usada no highlighting e também a melhoria de qualidade do parser usado em cada linguagem.


  


2. Re: Inclusão de código fonte em postagens

Fábio Berbert de Paula
fabio

(usa Debian)

Enviado em 25/11/2014 - 18:53h

Nosso highlighter possui algumas limitações sim. Se alguém tiver alguma sugestão de bom highlighter é só apresentar. Caso contrário, assim que a fila de prioridades permitir já jogo essa melhoria na todolist.

Vou checar o problema com o \0, isso ainda não havia sido reportado.




3. Re: Inclusão de código fonte em postagens

Paulo
paulo1205

(usa Ubuntu)

Enviado em 25/11/2014 - 21:19h

Hummm... O problema piorou. Como mostra o bloco que eu coloquei em highlight, acima, agora a falsa tag de fechamento está ficando sempre visível, mesmo para arquivos de cabeçalho com nomes simples.


4. Re: Inclusão de código fonte em postagens

Fábio Berbert de Paula
fabio

(usa Debian)

Enviado em 25/11/2014 - 21:24h

paulo1205 escreveu:

Hummm... O problema piorou. Como mostra o bloco que eu coloquei em highlight, acima, agora a falsa tag de fechamento está ficando sempre visível, mesmo para arquivos de cabeçalho com nomes simples.


Estranho, não mexi em nada. Mas esse recurso já está na minha lista, quando tiver novidades posto aqui.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts