Contexto de línea para enlaces de GitHub en onebox

Si se especifica una sola línea para un enlace de GitHub, onebox muestra esa línea con su contexto:

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

Si se especifican varias líneas, onebox las muestra sin contexto:

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

Entiendo la razón de esta diferencia. Sin embargo, me gustaría mostrar el contexto para el rango de líneas. ¿Existe algún truco extraño para lograrlo?

Además, ¿hay alguna forma de configurar el número de líneas de contexto que se muestran?

Supongo que dependería de cuántas líneas estés especificando (¿5? ¿500?), pero estoy de acuerdo en que es un poco inconsistente.

Esto no es configurable en este momento. Sin embargo, me pregunto: ¿por qué molestarse con el contexto si simplemente puedes pedir L12-L20?

Esto es un poco como dos solicitudes de funcionalidad en una :slight_smile: Supongo que quieres que “resalte” las filas y luego agregue contexto a su alrededor. Supongo que esto puede ser útil para selecciones de 2 a 5 líneas, pero un bloque enorme en amarillo sería bastante llamativo.

En este caso, estoy guiando al lector a través de una serie de cambios en un archivo. El contexto es importante en cada caso, ya sea que esté resaltando una línea o varias.

El componente ya resalta una línea con contexto. El caso que tengo aquí busca aplicar ese mismo comportamiento con múltiples líneas.

Entiendo la lógica del esquema actual, pero creo que hay un argumento sólido para respaldar también los resaltados de varias líneas con contexto.

Si Onebox aún no es configurable más allá del enlace en sí, habría que hacerlo. ¿Quizás algo como esto?

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

No hay mucho de nuevo aquí, salvo configurar qué formatea y muestra el componente.

A primera vista, parece que esto sería un cambio solo en el backend. Considera las diferencias entre estas dos respuestas de onebox.json:

Como se podría esperar, una tiene contexto con una línea highlight y la otra no.

Si el backend fuera configurable por solicitud, se trataría de aplicar las reglas de formato existentes. Veo que la implementación asume una línea a resaltar. El cambio para admitir un rango de líneas es mínimo (por ejemplo, usar un array de líneas a resaltar y verificar la pertenencia).

Quizás algo como esto funcione para estos casos, si son 100% casos atípicos; el problema es que entra en conflicto con GitHub, lo cual no es ideal.

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

O tal vez incluso incluir el contexto por defecto si la región es de 4 líneas o menos.

Personalmente, evitaría el comportamiento implícito. Ya tengo un ejemplo que resalta cinco líneas :slight_smile:

Implementé una solución alternativa para esto, que utiliza un componente de tema que busca un div contenedor con la configuración para el enlace de GitHub encapsulado. El componente espera el evento de modificación del DOM para saber cuándo se reemplaza el enlace con líneas de código y luego trabaja en el estado li.selected para la selección. Este truco no modifica las líneas recuperadas, por lo que no puede agregar ni eliminar contexto.

Creo que quizás un método explícito para controlar el comportamiento es mejor que cambiar cualquiera de los valores predeterminados o intentar hacer que el componente sea más inteligente.

Transmitir la configuración/ajustes en la propia URL podría funcionar, pero socava el significado semántico del enlace. Si no es posible usar una etiqueta envolvente, supongo que al menos querrías eliminar la configuración específica de onebox.