Realce de sintaxe dinâmico


O realce de sintaxe dinâmico é o realce do código que o utilizador pode alterar. Só há um sítio onde isto acontece: o editor online.

Note

Os fragmentos de código, as iterações e coisas do género são estáticos, porque o utilizador não pode alterar o código à medida que escreve. Se quiseres saber mais sobre como tratamos o realce de sintaxe estático, consulta a documentação sobre realce de sintaxe estático.

Implementação

O realce de sintaxe dinâmico é feito com a biblioteca CodeMirror.

Quando adicionas suporte para a tua linguagem, há três opções:

  1. A linguagem é suportada nativamente pelo CodeMirror (ou seja, aparece na lista de linguagens suportadas). Se for o caso, passa à secção Ativar a linguagem.
  2. A linguagem é suportada através de um plugin do CodeMirror já existente. Se for o caso, passa à secção Usar um plugin existente.
  3. A linguagem não é suportada. Nesse caso, há três opções:
    1. Escrever um plugin do CodeMirror de raiz, como descrito na secção Criar um novo plugin.
    2. A sintaxe da tua linguagem é (muito) parecida com a de outra linguagem (por exemplo, a sintaxe do Unison é parecida com a do Haskell); nesse caso, podes considerar usar o realce de sintaxe dessa linguagem para a tua. Consulta a secção Ativar a linguagem para mais informações.
    3. Não ter realce de sintaxe dinâmico.

Ativar a linguagem

Para ativar o suporte do CodeMirror para a tua linguagem, cria um tópico no fórum. Nós (o Exercism) criamos então um Pull Request que ativa o suporte do CodeMirror para a tua linguagem no site.

Usar um plugin existente

Para usar um plugin existente, este tem de estar publicado no NPM.

Se o plugin não estiver publicado no NPM, tens várias hipóteses:

  1. Perguntar ao autor do plugin se quer publicá-lo no NPM.
  2. Fazer um fork do repositório e publicá-lo tu próprio.
  3. Pedir-nos (ao Exercism) para fazermos um fork do repositório e publicá-lo nós. Para isso, abre um tópico no fórum a pedi-lo.
Note

O passo seguinte é ativar a linguagem.

Criar um novo plugin

Estes são os passos para começar:

  1. Verifica na nossa lista de repositórios se já existe um codemirror-lang-..., para garantir que ainda não existe nenhum.
  2. Cria um novo tópico no fórum do Exercism a dizer-nos para que linguagem gostarias de criar um plugin do CodeMirror.
  3. Assim que for criado um repositório de plugin do CodeMirror para ti, implementa a gramática para o teu track.
Note

Para te ajudar a começar, o repositório criado para ti contém uma gramática de exemplo mínima que podes usar como base e ajustar.

Temos uma comunidade incrivelmente simpática e prestável, que terá todo o gosto em ajudar-te ao longo deste trabalho! Se ficares bloqueado, cria um novo tópico no fórum do Exercism ou abre novas issues em exercism/exercism, conforme for necessário 🙂

Depois, tens de publicar o plugin no NPM. O passo seguinte é ativar a linguagem.

Usar outra linguagem

A sintaxe da tua linguagem é (muito) parecida com a de outra linguagem; nesse caso, podes considerar usar o realce de sintaxe dessa linguagem para a tua. Para isso, configura o track com o plugin do CodeMirror da outra linguagem. Consulta a secção Ativar a linguagem para mais informações.