Contexto de linha para links do GitHub em onebox

Se uma única linha for especificada para um link do GitHub, o onebox exibe essa linha com contexto:

https://github.com/guildai/guildai/blob/master/examples/get-started/mnist_mlp.py#L16

Se várias linhas forem especificadas, o onebox as exibe sem contexto:

https://github.com/guildai/guildai/blob/master/examples/get-started/mnist_mlp.py#L16-L18

Entendo a lógica por trás dessa diferença. No entanto, gostaria de exibir contexto para o intervalo de linhas. Existe algum truque estranho para isso?

Além disso, há uma maneira de configurar o número de linhas de contexto exibidas?

Suponho que dependa de quantas linhas você está especificando (5? 500?), mas concordo que é um pouco inconsistente.

Isso não é configurável no momento. Mas me pergunto, por que se preocupar com o contexto se você pode simplesmente pedir L12-L20?

Isso é meio que duas solicitações de recurso em uma :slight_smile: Imagino que você queira “destacar” as linhas e depois adicionar contexto ao redor delas? Imagino que isso possa ser útil para seleções de 2 a 5 linhas, mas um grande bloco em amarelo seria bastante chamativo.

Neste caso, estou guiando o leitor por uma série de alterações em um arquivo. O contexto é importante em cada situação, seja eu destacando uma linha ou várias.

O componente já destaca uma linha com contexto. O caso que tenho aqui gostaria que o mesmo comportamento fosse aplicado a múltiplas linhas.

Vejo a lógica do esquema atual, mas acho que há um argumento sólido para suportar destaques de múltiplas linhas com contexto também.

Se o Onebox ainda não for configurável além do próprio link, precisará ser. Talvez algo assim?

<span
  data-onebox-highlight="true"
  data-onebox-context="5"
  >https://github.com/.../get-started/mnist_mlp.py#L16-L18</span>

Não há muito de novo aqui além de configurar o que o componente formata e exibe.

De forma ingênua, parece que isso seria uma alteração apenas no backend. Considere as diferenças entre essas duas respostas do onebox.json:

Como se poderia esperar, um tem contexto com uma linha de highlight e o outro não.

Se o backend fosse configurável por solicitação, seria uma questão de aplicar as regras de formatação existentes. Vejo que a implementação assume uma linha para destacar. A alteração para suportar um intervalo de linhas é mínima (por exemplo, usar um array de linhas para destacar e verificar a pertinência).

Talvez algo assim funcione para esses casos, se forem 100% outliers. O problema é que isso entra em conflito com o GitHub, o que não é ideal.

https://github.com/.../get-started/mnist_mlp.py?#L16-L18-context-3

Ou talvez apenas incluir o contexto por padrão se a região tiver 4 linhas ou menos.

Pessoalmente, eu evitaria comportamento implícito. Já tenho um exemplo que destaca cinco linhas :slight_smile:

Implementei uma solução alternativa para isso, que usa um componente de tema que procura por uma div wrapper contendo a configuração para o link do GitHub envolvido. O componente aguarda o evento de modificação do DOM para saber quando o link é substituído por linhas de código e, em seguida, trabalha no estado li.selected para selecionar. Essa “gambiarra” não altera as linhas recuperadas, então não pode adicionar/remover contexto.

Acho que talvez um método explícito para controlar o comportamento seja melhor do que alterar qualquer um dos padrões ou tentar tornar o componente mais inteligente.

Passar a configuração/ajustes na própria URL poderia funcionar, mas isso mina o significado semântico do link. Se o uso de uma tag wrapper não for uma opção, presumo que você queira, pelo menos, remover a configuração específica de onebox.