操作
最適化 #1170
未完了form dslのoptionの引数の順序の統一
開始日:
2018-02-11
期日:
進捗率:
0%
プラグイン名:
説明
Gtk::FormDSL::Select
の持つ option
の引数が value, label
の順序になっている。
formの持つ他のウィジェットの引数は label, value
になっているため、統一したい
option(value, label = nil)
からoption(label = nil, value)
に変更する- 互換性の維持のために第一引数に symbol が与えられている場合は、何かしらの警告を出しつつメソッド内で順序を入れ替えて、変更前のものが動くようにする
toshi_a 初音 さんがほぼ7年前に更新
統一することには賛成ですが、たしかに互換性は必須ですから、難しいですね。 #1170-2 のとおり、値のclassを見てスワップすることはできないため、ルール自体に互換性のある変更をすることを思いつきました。二つ提案しますが、個人的にはどちらかといえばキーワード引数を推します。他に良い方法があるかな。
キーワード引数を利用¶
全てのウィジェットにキーワード引数としてlabelを追加します。valueでなくlabelをキーワード引数にするのは、labelが必須ではないからです。
キーワード引数を使えば、labelを受け取ることができない一部のウィジェットで引数のインデックスがずれていて気持ち悪いという問題を回避できます。実装が複雑になってしまいますが、引数の数を見て以前のような記述でも動くようにはできる気がします。
select :key, label: "選んでください" do
option :left, label: "左"
option :right, label: "右"
end
# inputなど、他のウィジェットもすべてoptionalな名前付き引数に対応させる
input :free_text, label: "あ"
新しいメソッドを定義する¶
optionメソッドの引数の順序を入れ替えた新しいメソッドを定義し、今後はそちらを利用することにします。
シンプルな実装で引数の順序を入れ替えられますが、selectとoptionというのはHTMLをオマージュしてこのような名前になっているため、option以外の良い名前がないという問題があります。
操作