Project

General

Profile

Actions

バグ #1012

open

cascadeのtypo

Added by あひる 家鴨 over 7 years ago. Updated almost 7 years ago.

Status:
新規
Priority:
通常
Target version:
-
プラグイン名:
ブランチ:
クラッシュする:

Description

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

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

Actions #1

Updated by toshi_a 初音 over 7 years ago

  • Assignee set to toshi_a 初音
  • Target version changed from 3.5 to 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ブランチへの適用としようと思います。

Actions #2

Updated by toshi_a 初音 almost 7 years ago

  • Target version deleted (3.6)
Actions

Also available in: Atom PDF