Onebox 内の GitHub リンクに対する行コンテキスト

GitHub リンクに単一行を指定すると、onebox はその行をコンテキスト付きで表示します。

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

複数行を指定すると、onebox はそれらをコンテキストなしで表示します。

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

この違いの根拠は理解できます。ただし、行範囲についてもコンテキストを表示したいと考えています。これを実現する何か特別なトリックはありますか?

また、表示するコンテキスト行数を設定することはできますか?

指定する行数によると思います(5行?500行?)が、確かに少し一貫性に欠けるとおっしゃる通りです。

現時点では設定できません。しかし、L12-L20 のように直接指定できるなら、なぜわざわざコンテキストが必要なのでしょうか?

これは 2 つの機能リクエストが 1 つになっているようですね :slight_smile: おそらく、行を「ハイライト」表示し、その周囲にコンテキストを追加したいのでしょうか?2〜5 行の選択には役立ちそうですが、黄色で大きな領域が強調されると、視覚的にうるさくなりそうです。

この場合、読者にファイルへの変更の一系列を追って説明しています。どのケースでも文脈が重要であり、1行を強調表示する場合でも、複数行を強調表示する場合でも同様です。

現在のコンポーネントは、文脈付きで1行を強調表示する機能を既に備えています。私がここで扱っているケースは、この同じ動作を複数行にも適用したいという要望です。

現在の方式の合理性は理解できますが、文脈付きの複数行強調表示をサポートする十分な根拠があると考えます。

Onebox がリンク自体以外の設定をまだ可能にしていない場合、それを可能にする必要があります。例えば、以下のような形式はいかがでしょうか?

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

ここで新しい点は、コンポーネントがどのようにフォーマットし表示するかを設定する点だけです。

単純に考えれば、これはバックエンド側のみの変更で済みそうです。以下の2つの onebox.json レスポンスの違いを考えてみてください。

予想通り、一方には highlight 行を含む文脈があり、他方にはありません。

もし バックエンド がリクエストごとに設定可能であれば、既存のフォーマット規則を適用するだけです。現在の実装では、1行のみを強調表示対象 と仮定していることがわかります。行の範囲をサポートするように変更するのは最小限の作業で済みます(例えば、強調表示対象の行の配列を使用し、その所属を確認する)。

もしかすると、これらのケースではこのようなアプローチが機能するかもしれません。ただし、これらは完全に外れ値である場合、GitHub と競合してしまうという問題があり、それは望ましくありません。

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

あるいは、領域が4行以下の場合、最初からコンテキストを含めるという方法もあります。

個人的には、暗黙的な動作は避けたほうがいいと思います。すでに、5 行をハイライトする例を用意しています :slight_smile:

これに対する回避策を実装しました。これは、ラップされた GitHub リンクの設定を含むラッパー div を探すテーマコンポーネントを使用します。このコンポーネントは、リンクがコード行に置換されたことを知るために DOM 変更イベントを待機し、その後 li.selected 状態を操作して選択を行います。このハックは取得される行を変更しないため、コンテキストを追加したり削除したりすることはできません。

おそらく、デフォルトを変更したり、コンポーネントをより賢くしようとしたりするよりも、動作を制御するための明示的なメソッドの方が良いでしょう。

設定を URL 自体に伝えることも可能ですが、それはリンクのセマンティックな意味を損なうことになります。ラップタグを使用できない場合、少なくとも onebox 固有の設定を除外したいと考えるでしょう。