2011-12-24 3 views
6

検索して検索しました。Squeak smalltalkでクラス内の文字列を検索するには?パッケージ内ではいかがですか?

私はIRC

に行ってきましたが、質問は愚かではありません願っています。それがあった場合、Googleで検索する正しい文字列はまだ大いに評価されます

+0

私はfileOutについて知っています。しかし、よりよい方法が必要です – josinalvo

+0

実際の答えではありませんが、http://squeak.preeminent.org/tut2007/html/035B.htmlをご覧ください。コメントを残して、特定の方法を実際のこれらの送信者を探すことで簡単に見つけることができます。 –

答えて

1

文字列 '\'を含むDosFileDirectoryのすべてのメソッドを示す例です。

aString := '\\'. 
class := DosFileDirectory. 
methodsContainingString := class methodDictionary values select: [:method | 
    method hasLiteralSuchThat: [:lit | 
     (lit isString and: [lit isSymbol not]) and: 
      [lit = aString]]]. 
messageList := methodsContainingString collect: [ :e | MethodReference new setStandardClass: class methodSymbol: e selector ]. 

SystemNavigation new 
    browseMessageList: messageList 
    name: 'methods containing string'. 

、全体のパッケージを検索して、検索部分をラップする:リファクタリングエンジンと、このような質問に答える

package := PackageOrganizer default packageNamed: packageName ifAbsent: [ self error: 'package doesn't exist' ]. 
package classesAndMetaClasses do: [ :class | ... ] 
2

は非常に簡単です。

allCodeWithSlash := RBBrowserEnvironment new matches: '/' 

そこから、さらに可能範囲検索、例えば次のコードは、システム内の/のすべての出現を検索します

allCodeWithSlashInPackage := allCodeWithSlash forPackageNames: (Array with: 'Files') 

あなたはUIがロードされている場合は、これらの検索結果のいずれかにブラウザを開くことができます:

allCodeWithSlashInClass := allCodeWithSlash forClasses: (Array with: DosFileDirectory) 

またはパッケージ内部:クラス内部へ

allCodeWithSlashInPackage open 

OmniBrowserを使用する場合は、Refactoring scopeメニューを使用してコードを入力せずに、これらのスコープを構築およびナビゲートすることもできます。

関連する問題