プロジェクト

全般

プロフィール

バグ #1012

cascadeのtypo

あひる 家鴨約2ヶ月前に追加. 約2ヶ月前に更新.

ステータス:
新規
優先度:
通常
担当者:
対象バージョン:
開始日:
2017-03-28
期日:
進捗率:

0%

プラグイン名:
再現手順:

説明

cascade を cuscade と typo しています。
影響範囲は広く、 cuscaded 及び cuscadable を合わせて 18ファイル46箇所に使用されており、ファイル名にも適用されています。
typoの修正自体は用意ですが、それによる影響がどのように出るかわからないため、修正したくてもできない状態です。

どのような修正にするか、修正した場合に何を持って問題がないとするかなどに関する情報が欲しいです。

履歴

#1 toshi_a 初音約2ヶ月前に更新

  • 担当者toshi_a 初音 にセット
  • 対象バージョン3.5 から 3.6 に変更

3.5.5 (b0329959) の状態でgrepして見つかったものを一応置いておきます。

core/plugin/gui/widget.rb
43:18: self.class.cuscaded.delete(slug)

core/plugin/gui/timeline.rb
4:61:require File.expand_path File.join(File.dirname(FILE), 'cuscadable')
11:24: include Plugin::GUI::Cuscadable

core/plugin/gui/test/test_cuscadable.rb
8:56:require File.expand_path(File.dirname(FILE) + '/../cuscadable')
11:19:class TC_PluginGUICuscadable < Test::Unit::TestCase
15:28: include Plugin::GUI::Cuscadable
20:5: cuscadable = @klass.instance(:slug, "name")
21:25: assert_equal(:slug, cuscadable.slug)
22:26: assert_equal("name", cuscadable.name)

core/plugin/gui/tab_child_widget.rb
4:61:require File.expand_path File.join(File.dirname(FILE), 'cuscadable')
11:24: include Plugin::GUI::Cuscadable

core/plugin/gui/window.rb
4:61:require File.expand_path File.join(File.dirname(FILE), 'cuscadable')
10:24: include Plugin::GUI::Cuscadable

core/plugin/gui/pane.rb
4:61:require File.expand_path File.join(File.dirname(FILE), 'cuscadable')
12:24: include Plugin::GUI::Cuscadable

core/plugin/gui/tab_toolbar.rb
4:61:require File.expand_path File.join(File.dirname(FILE), 'cuscadable')
12:24: include Plugin::GUI::Cuscadable

core/plugin/gui/cuscadable.rb
4:21:module Plugin::GUI::Cuscadable
12:19: alias new_cuscadable new
15:15: new_cuscadable(slug, name, plugin) end }
16:28: klass.extend ExtendedCuscadable end end
29:25: values = self.class.cuscaded.values
37:25: values = self.class.cuscaded.values
43:18: module ExtendedCuscadable
55:28: return instance if cuscaded.has_key? slug end
57:10: if cuscaded.has_key? slug
58:22: imaginally = cuscaded[slug]
72:7: cuscaded[tab.slug] ||= tab
80:9: def cuscaded
81:8: @cuscaded ||= {} # slug => instance
90:8: @cuscaded.has_key?(slug) end

core/plugin/gui/cluster.rb
4:61:require File.expand_path File.join(File.dirname(FILE), 'cuscadable')
12:24: include Plugin::GUI::Cuscadable

core/plugin/gui/tab.rb
5:61:require File.expand_path File.join(File.dirname(FILE), 'cuscadable')
14:24: include Plugin::GUI::Cuscadable

core/plugin/gui/postbox.rb
4:61:require File.expand_path File.join(File.dirname(FILE), 'cuscadable')
14:24: include Plugin::GUI::Cuscadable

core/plugin/gui/gui.rb
111:41: [(set || {}).merge(Plugin::GUI::Tab.cuscaded)]

core/plugin/gui/fragment.rb
3:61:require File.expand_path File.join(File.dirname(FILE), 'cuscadable')
13:24: include Plugin::GUI::Cuscadable

core/plugin/console/console.rb
12:25: if Plugin::GUI::Tab.cuscaded.has_key?(:console)

core/plugin/gtk/gtk.rb
570:6: # cuscadable に対応するGtkオブジェクトを返す
572:6: # [cuscadable] ウィンドウ、ペイン、タブ、タイムライン等
575:16: def widgetof(cuscadable)
576:17: type_strict cuscadable => :slug
577:35: result = @slug_dictionary.get(cuscadable)
46 matches
15 files contained matches
287 files searched
909975 bytes searched
0.025355 seconds

cuscadableは、GUIプラグインの内部で使っているmix-inで、殆どのGUIプラグインが提供する仮想ウィジェットがincludeしています。

モジュール名、ファイル名については、見たところ変更しても問題ないと思われます。
このモジュールはカスタムGUIウィジェットを実装するのに必須ですが、現在のmikutterではそれはできないので、利用することはないはずです。
ファイル名も、mikutterプラグインが miquire を呼ぶことはないので、変更しても影響はありません。

一方で、このモジュールが提供しているメソッドは影響を受ける可能性があります。具体的には source:core/plugin/gui/cuscadable.rb 80行目で定義されているcuscadedメソッドですが、先に書いたようにこのモジュールはほぼすべてのGUIウィジェットで利用されているため、サードパーティプラグインがこのメソッドを呼ぶことは出来ます。したがって、このメソッドだけはdeprecateとして残しておく必要がありそうです。

ぱっと見た感じだとそれだけで行けそうですね。ささっとやってしまおうかなと思います。
この変更は互換性を誤って破壊するリスクがあるため、developブランチへの適用としようと思います。

他の形式にエクスポート: Atom PDF