guildai
(Garrett)
2020 年 6 月 30 日午後 6:55
1
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行?)が、確かに少し一貫性に欠けるとおっしゃる通りです。
sam
(Sam Saffron)
2020 年 7 月 1 日午前 6:11
3
現時点では設定できません。しかし、L12-L20 のように直接指定できるなら、なぜわざわざコンテキストが必要なのでしょうか?
これは 2 つの機能リクエストが 1 つになっているようですね おそらく、行を「ハイライト」表示し、その周囲にコンテキストを追加したいのでしょうか?2〜5 行の選択には役立ちそうですが、黄色で大きな領域が強調されると、視覚的にうるさくなりそうです。
guildai
(Garrett)
2020 年 7 月 1 日午後 12:31
4
この場合、読者にファイルへの変更の一系列を追って説明しています。どのケースでも文脈が重要であり、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行のみを強調表示対象 と仮定していることがわかります。行の範囲をサポートするように変更するのは最小限の作業で済みます(例えば、強調表示対象の行の配列を使用し、その所属を確認 する)。
sam
(Sam Saffron)
2020 年 7 月 2 日午前 1:03
5
もしかすると、これらのケースではこのようなアプローチが機能するかもしれません。ただし、これらは完全に外れ値である場合、GitHub と競合してしまうという問題があり、それは望ましくありません。
https://github.com/.../get-started/mnist_mlp.py?#L16-L18-context-3
あるいは、領域が4行以下の場合、最初からコンテキストを含めるという方法もあります。
guildai
(Garrett)
2020 年 7 月 2 日午後 1:21
6
個人的には、暗黙的な動作は避けたほうがいいと思います。すでに、5 行をハイライトする例を用意しています
これに対する回避策を実装しました。これは、ラップされた GitHub リンクの設定を含むラッパー div を探すテーマコンポーネントを使用します。このコンポーネントは、リンクがコード行に置換されたことを知るために DOM 変更イベントを待機し、その後 li.selected 状態を操作して選択を行います。このハックは取得される行を変更しないため、コンテキストを追加したり削除したりすることはできません。
おそらく、デフォルトを変更したり、コンポーネントをより賢くしようとしたりするよりも、動作を制御するための明示的なメソッドの方が良いでしょう。
設定を URL 自体に伝えることも可能ですが、それはリンクのセマンティックな意味を損なうことになります。ラップタグを使用できない場合、少なくとも onebox 固有の設定を除外したいと考えるでしょう。