SystemOrganization addCategory: #'OB-Regex'! !OBCodeBrowser methodsFor: '*ob-regex-commands' stamp: 'lr 1/28/2008 22:47'! cmdRegex ^ ORCmdRegexEnvironment allSubclasses! ! ORCommand subclass: #ORCmdRegexEnvironment instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'OB-Regex'! ORCmdRegexEnvironment subclass: #ORCmdCategoryRegexEnvironment instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'OB-Regex'! !ORCmdCategoryRegexEnvironment methodsFor: 'accessing' stamp: 'lr 1/28/2008 23:08'! label ^ 'category regex...'! ! !ORCmdCategoryRegexEnvironment methodsFor: 'execution' stamp: 'lr 1/28/2008 23:28'! search: aMatcher | categories parent | categories := Set new. parent := self environment. parent categories do: [ :category | (aMatcher matches: category) ifTrue: [ categories add: category ] ]. ^ CategoryEnvironment onEnvironment: parent categories: categories! ! ORCmdRegexEnvironment subclass: #ORCmdClassRegexEnvironment instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'OB-Regex'! !ORCmdClassRegexEnvironment methodsFor: 'accessing' stamp: 'lr 1/28/2008 23:00'! label ^ 'class regex...'! ! !ORCmdClassRegexEnvironment methodsFor: 'execution' stamp: 'lr 1/28/2008 23:13'! search: aMatcher | parent environment | parent := self environment. environment := ClassEnvironment onEnvironment: parent. parent classesDo: [ :class | aMatcher matchesIn: class name do: [ :each | environment addClass: class; addSearchString: each ] ]. ^ environment! ! ORCmdRegexEnvironment subclass: #ORCmdProtocolRegexEnvironment instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'OB-Regex'! !ORCmdProtocolRegexEnvironment methodsFor: 'accessing' stamp: 'lr 1/28/2008 23:01'! label ^ 'protocol regex...'! ! !ORCmdProtocolRegexEnvironment methodsFor: 'execution' stamp: 'lr 1/28/2008 23:14'! search: aMatcher | parent environment | parent := self environment. environment := SelectorEnvironment onEnvironment: parent. parent classesDo: [ :class | (parent protocolsFor: class) do: [ :protocol | (aMatcher matches: protocol) ifTrue: [ (parent selectorsFor: protocol in: class) do: [ :selector | environment addClass: class selector: selector ] ] ] ]. ^ environment! ! !ORCmdRegexEnvironment methodsFor: 'accessing' stamp: 'lr 1/28/2008 22:47'! cluster ^ #'open environment'! ! !ORCmdRegexEnvironment methodsFor: 'execution' stamp: 'lr 1/28/2008 23:00'! execute | expression matcher | expression := [ self request: 'Regular Expression' ] on: ORUICancellationError do: [ :err | ^ self ]. matcher := [ expression asRegex ] on: RegexError do: [ :err | ^ self inform: err messageText ]. self open: (self search: matcher)! ! !ORCmdRegexEnvironment methodsFor: 'accessing' stamp: 'lr 1/28/2008 22:25'! group ^ #regex! ! !ORCmdRegexEnvironment methodsFor: 'accessing' stamp: 'lr 1/28/2008 22:30'! matcher ^ (self request: 'Regular Expression') asRegex! ! !ORCmdRegexEnvironment methodsFor: 'execution' stamp: 'lr 1/28/2008 22:52'! search: aMatcher self subclassResponsibility! ! ORCmdRegexEnvironment subclass: #ORCmdSelectorRegexEnvironment instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'OB-Regex'! !ORCmdSelectorRegexEnvironment methodsFor: 'accessing' stamp: 'lr 1/28/2008 23:00'! label ^ 'selector regex...'! ! !ORCmdSelectorRegexEnvironment methodsFor: 'execution' stamp: 'lr 1/28/2008 23:16'! search: aMatcher | parent environment | parent := self environment. environment := SelectorEnvironment onEnvironment: parent. parent classesAndSelectorsDo: [ :class :selector | aMatcher matchesIn: selector do: [ :each | environment addClass: class selector: selector; addSearchString: each ] ]. ^ environment! ! ORCmdRegexEnvironment subclass: #ORCmdSourceRegexEnvironment instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'OB-Regex'! !ORCmdSourceRegexEnvironment methodsFor: 'accessing' stamp: 'lr 1/28/2008 23:01'! label ^ 'source regex...'! ! !ORCmdSourceRegexEnvironment methodsFor: 'execution' stamp: 'lr 1/28/2008 23:16'! search: aMatcher | parent environment | parent := self environment. environment := SelectorEnvironment onEnvironment: parent. parent classesAndSelectorsDo: [ :class :selector | aMatcher matchesIn: (class sourceCodeAt: selector) do: [ :each | environment addClass: class selector: selector; addSearchString: each ] ]. ^ environment! !