Linienkontext für GitHub-Links in Onebox

Wenn für einen GitHub-Link nur eine einzelne Zeile angegeben wird, zeigt Onebox diese Zeile mit Kontext an:

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

Wenn mehrere Zeilen angegeben werden, zeigt Onebox diese ohne Kontext an:

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

Ich verstehe die Logik dahinter. Allerdings möchte ich auch für einen Zeilenbereich Kontext anzeigen lassen. Gibt es dafür einen speziellen Trick?

Gibt es zudem eine Möglichkeit, die Anzahl der angezeigten Kontextzeilen zu konfigurieren?

Ich vermute, das hängt davon ab, wie viele Zeilen Sie angeben (5? 500?), aber ich stimme zu, dass es etwas inkonsistent ist.

Das ist im Moment nicht konfigurierbar. Ich frage mich jedoch, warum man sich mit Kontext beschäftigen sollte, wenn man einfach L12-L20 anfordern kann?

Das sind sozusagen zwei Feature-Anfragen in einem :slight_smile: Ich vermute, du möchtest, dass die Zeilen „hervorgehoben

In diesem Fall führe ich den Leser durch eine Reihe von Änderungen an einer Datei. Der Kontext ist in jedem Fall wichtig, egal ob ich eine Zeile oder viele hervorhebe.

Die Komponente hebt bereits eine Zeile mit Kontext hervor. Der hier vorliegende Fall möchte, dass dieses gleiche Verhalten auch auf mehrere Zeilen angewendet wird.

Ich erkenne die Sinnhaftigkeit des aktuellen Schemas, halte aber auch die Unterstützung von mehrzeiligen Hervorhebungen mit Kontext für gut begründet.

Wenn Onebox nicht bereits über den Link hinaus konfigurierbar ist, müsste es dies werden. Vielleicht so etwas wie:

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

Es gibt hier nicht viel Neues außer der Konfiguration dessen, was die Komponente formatiert und anzeigt.

Auf den ersten Blick scheint dies eine Änderung nur auf der Backend-Seite zu sein. Betrachten Sie die Unterschiede zwischen diesen beiden onebox.json-Antworten:

Wie man erwarten würde, enthält die eine Antwort einen Kontext mit einer hervorgehobenen Zeile, die andere nicht.

Wenn das Backend pro Anfrage konfigurierbar wäre, ginge es darum, die bestehenden Formatierungsregeln anzuwenden. Ich sehe, dass die Implementierung von einer zu hervorhebenden Zeile ausgeht. Die Änderung zur Unterstützung eines Zeilenbereichs ist minimal (z. B. Verwendung eines Arrays von zu hervorhebenden Zeilen und Prüfung auf Mitgliedschaft).

Vielleicht funktioniert etwas wie das in diesen Fällen, wenn es sich zu 100 % um Ausreißer handelt. Das Problem ist, dass es mit GitHub kollidiert, was nicht ideal ist.

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

Oder vielleicht einfach den Kontext standardmäßig einbeziehen, wenn der Bereich vier Zeilen oder weniger umfasst.

Persönlich würde ich implizites Verhalten vermeiden. Ich habe bereits ein Beispiel, das fünf Zeilen hervorhebt :slight_smile:

Ich habe einen Workaround dafür implementiert, der eine Theme-Komponente verwendet, die nach einem Wrapper-div sucht, das die Konfiguration für den eingebetteten GitHub-Link enthält. Die Komponente wartet auf das DOM-Modified-Event, um zu wissen, wann der Link durch Codezeilen ersetzt wird, und arbeitet dann mit dem Zustand li.selected zur Auswahl. Dieser Hack ändert nicht die abgerufenen Zeilen, sodass er keinen Kontext hinzufügen oder entfernen kann.

Ich denke, eine explizite Methode zur Steuerung des Verhaltens ist besser als die Änderung von Standardwerten oder der Versuch, die Komponente intelligenter zu machen.

Die Konfiguration/Einstellungen direkt in der URL zu übermitteln, könnte funktionieren, untergräbt aber die semantische Bedeutung des Links. Wenn die Verwendung eines umschließenden Tags keine Option ist, würde ich zumindest annehmen, dass Sie die onebox-spezifische Konfiguration entfernen möchten.