[Pkg] Squeak3.11 Contributions: MethodAuthorship-mtf.13.mcz

squeak-dev-noreply at lists.squeakfoundation.org squeak-dev-noreply at lists.squeakfoundation.org
Sat Feb 7 22:59:48 UTC 2009


A new version of MethodAuthorship was added to project Squeak3.11 Contributions:
http://www.squeaksource.com/311/MethodAuthorship-mtf.13.mcz

==================== Summary ====================

Name: MethodAuthorship-mtf.13
Author: mtf
Time: 7 February 2009, 5:59:44 pm
UUID: e0c0a883-b327-4011-9940-d65ce28eb85e
Ancestors: MethodAuthorship-mtf.1, MethodAuthorship-mtf.12

saved with the package info named MethodAuthorship rather than Methodauthorship

=============== Diff against MethodAuthorship-mtf.1 ===============

Item was added:
+ ----- Method: MethodHistoryBrowser>>annotation (in category 'all') -----
+ annotation
+ 
+ 	^ ''.
+ !

Item was changed:
  ----- Method: MethodHistoryDatabase>>processRecord: (in category 'all') -----
  processRecord: rec
  
  	| col clsName sel cls |
  	cls := rec methodClass.
  	cls ifNil: [^ self].
  	clsName := cls asSymbol.
  	sel := rec methodSelector.
  	sel ifNil: [^ self].
  		dictionary at: clsName ifAbsent: [
  dictionary at: clsName put: IdentityDictionary new].
  	(dictionary at: clsName) at: sel ifAbsent: [(dictionary at: clsName) at: sel put: OrderedCollection new].
  
  	col := (dictionary at: clsName) at: sel.
+ 	col ifEmpty:  [col addFirst: rec]
+ 		ifNotEmpty: [(col first equals: rec) ifFalse: [col addFirst: rec]].
+ 	
+ 	"col detect: [:old | old equals: rec] ifNone: [
- 	col detect: [:old | old equals: rec] ifNone: [
  		col addFirst: rec
+ 	]."
- 	].
  !

Item was added:
+ ----- Method: TextDiffBuilder>>printPatchHTMLSequence:on: (in category '*methodauthorship') -----
+ printPatchHTMLSequence: seq on: aStream 
+ 	| attrs |
+ 	seq do: 
+ 		[:assoc | 
+ 			attrs _ self attributesOf: assoc key.
+ 			attrs do: [:attribute |
+ 				(attribute isMemberOf: TextColor) ifTrue: [
+ 					aStream nextPutAll: '<span style="color: '; nextPutAll: attribute color asHTMLColor; nextPutAll: '">'
+ 				].
+ 				((attribute isMemberOf: TextEmphasis) and: [attribute emphasisCode = 16]) ifTrue: [
+ 					aStream nextPutAll: '<STRIKE>'
+ 				].
+ 			].
+ 			aStream nextPutAll: assoc value; cr.
+ 			attrs reverseDo: [:attribute |
+ 				(attribute isMemberOf: TextColor) ifTrue: [
+ 					aStream nextPutAll: '</span>'
+ 				].
+ 				((attribute isMemberOf: TextEmphasis) and: [attribute emphasisCode = 16]) ifTrue: [
+ 					aStream nextPutAll: '</STRIKE>'
+ 				].
+ 			].
+ 		].!

Item was changed:
  Object subclass: #MethodHistoryDatabase
  	instanceVariableNames: 'dictionary'
+ 	classVariableNames: 'LiveLists Databases'
- 	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'MethodAuthorship'!

Item was added:
+ ----- Method: MethodHistoryDatabase class>>liveLists (in category 'all') -----
+ liveLists
+ 
+ 	^ LiveLists ifNil: [LiveLists := Dictionary new].
+ !

Item was added:
+ ----- Method: Authorship class>>example2 (in category 'as yet unclassified') -----
+ example2
+ 
+ 	| n i file |
+ 	n := Metaclass allInstances size.
+ 	i _ 0.
+ 	file := FileStream newFileNamed: 'etoysv4.list'.
+ 	'generating the list of existing methods...' displayProgressAt: Sensor cursorPoint from: 1 to: n during: [:bar |
+ 		Metaclass allInstancesDo: [:mc |
+ 			bar value: (i := i + 1).
+ 			mc theNonMetaClass selectors
+ 				do: [:eachSelector |
+ 					(#(DoIt DoItIn:) includes: eachSelector) ifFalse: [
+ 							file nextPutAll: mc theNonMetaClass name; space; nextPutAll: eachSelector; cr]].
+ 			mc  selectors
+ 				do: [:eachSelector |
+ 					(#(DoIt DoItIn:) includes: eachSelector) ifFalse: [
+ 							file nextPutAll: mc name; space; nextPutAll: eachSelector; cr]].
+ ]]!

Item was changed:
  ----- Method: Authorship>>agreedContributors (in category 'data') -----
  agreedContributors
  
  "This is a list of all Squeak contributors whom Yoshiki Ohshima contacted and get the favorable words, but have not returned a signed distribution agreement yet.
  
+ Nov 25th  2008
  ---
  
  initials         name"
  ^ #(
+ 'ac'               'Andrew Catton'
- 'jla'              'Jerry Archibald'
  'pad'		'Pierre-Andre Dreyfuss'
- 'r++'              'Gerardo Richarte'
  )!

Item was added:
+ ----- Method: Authorship>>allAuthors (in category 'filtering') -----
+ allAuthors
+ 	^ authorDictionary!

Item was changed:
  ----- Method: Authorship>>newContributors (in category 'data') -----
  newContributors
  
  "This is a list of all Squeak contributors who started after the relicensing effort was started and therefore know that the license is under MIT.
  
+ Nov 26th  2008
  ---
  
  initials         name"
  ^ #(
  'aw'               'Alessandro Warth'
  'be'			'Bernd Eckardt'
  'cjs'			'(from trac)'
+ 'eem'		'Eliot Emilio Miranda'
  'jf'			'Jan Fietz'
  'lg'               'Luke Gorrie'
  'jl'			'Jens Linke'
  'JSM'	   'John S Mcintosh'
  'thf'			'an Impara employee'
  'sjg'			'Simon Guest'
+ 'kph'		'Keith Hodges'
  'kks'            'kks'
  'meta-auto'	'generated code'
  'programmatic'     'generated code'
+ 'wbk'		'Bryce Kampjes'
  )!

Item was added:
+ ----- Method: MethodHistoryDatabase class>>databases (in category 'all') -----
+ databases
+ 
+ 	^ Databases ifNil: [Databases := Dictionary new].
+ !

Item was changed:
  ----- Method: Authorship class>>initialize (in category 'as yet unclassified') -----
  initialize
  	| n i eachClass |
  	super initialize.
  	n := Metaclass allInstances size.
  	AllMethods := OrderedCollection new.
  	i _ 0.
  	'Collecting method information...' displayProgressAt: Sensor cursorPoint from: 1 to: n during: [:bar |
  		Metaclass allInstancesDo: [:mc |
  			bar value: (i := i + 1).
  			(eachClass := mc)  selectors
  				do: [:eachSelector |
  					(#(DoIt DoItIn:) includes: eachSelector) ifFalse: [
  						AllMethods
  							add: (MethodHistoryChangeRecord new  class: eachClass name selector: eachSelector stamp:  (eachClass compiledMethodAt: eachSelector) timeStamp text: '' sourceFile: '(current)')]].
  			(eachClass := mc theNonMetaClass) selectors
  				do: [:eachSelector |
  					(#(DoIt DoItIn:) includes: eachSelector) ifFalse: [
  						AllMethods
  							add: (MethodHistoryChangeRecord new  class: eachClass name selector: eachSelector stamp:  (eachClass compiledMethodAt: eachSelector) timeStamp text: '' sourceFile: '(current)')]]]].
  !

Item was added:
+ ----- Method: MethodHistoryDatabase class>>at:put: (in category 'all') -----
+ at: aVersionName put: aDatabase
+ 
+ 	^ self databases at: aVersionName put: aDatabase.
+ !

Item was changed:
  ----- Method: Authorship>>missingSignatories (in category 'data') -----
  missingSignatories
  "This is a list of all Squeak contributors who have not returned a signed distribution agreement.
  
+ Nov 25th  2008
- Aug 21st  2008
- 
  ---
  
  initials         name"
  ^ #(
  'abc'              '?'
  'afr'              'Alejandro Reimondo'
  'ag'               'Andreas Gerdes'
  'AK'               'Anoulak Kictiraz'
  'ak'               'Anoulak Kictiraz'
  'AM'               'Aibek Musaev'
  'am'               'Aibek Musaev'
  'ASF'              'Adam Franco'
  'bmk'              'Brian Keefer'
  'cE'               'Christian Eitner'
  'cm'               'Cesare Marilungo?'
  'dik'		'Denis Kudriashov'
  'djm'              'Douglas McPherson'
  'dls'              'Darryl Smith'
  'dns'              'David N. Smith'
  'drs'              'Dean Swan'
  'dwh'              'Dwight Hughes'
  'edt'              '?'
  'eldeh'            'Lars Dornheim'
  'EP'               '?'
  'EW'               'Etan Wexler'
  'ff'               'Felix Franz'
  'gg'               'Giovanni Giorgi'
  'GL'               'Greg Lewin?'
  'GVG'              'Greg Gritton'
  'gwc'              'Geoff Corey'
  'H.Hachisuka'      'Hitoshi Hachisuka'
  'hg'               'Henrik Gedenryd'
  'hh'               'Helge Horch'
  'HJH'              'Hannes Hirzel'
- 'hk'		'Harald Kopp'
  'IT'               'Ian Trudel'
  'jbc'              'Jay Casler'
  'JDD'              'John David Duncan'
  'jdl'              'Jose Laiolo'
  'jet'              'John Tobler'
  'jj'               '?'
  'JLM'              'Jason McVay'
  'jlm'              'Jason McVay'
  'JO'               'Jonas Oehrn'
  'jwh'              'Jim Heyne'
  'JZH'              'John (Zhijiang) Han'
+ 'HK'              'Hunter Kelly'
  'Kafka'            'Pablo Malavolta'
- 'kph'		'Keith Hodges'
  'los'              'Lothar Schenk'
  'mkd'              'Michael Donegan'
  'MM'               'Maarten Maartensz'
  'mm'               '?'
  'mmo'               'Marica Odagaki'
  'msk'              'Michael Klein'
  'mtf'		'Matthew Fulmer'
  'mx'               'Maximialiano Taborda'
  'NDCC'             '?'
  'mn'               'Mats Nygren'
  'nm'		'Nicolas Melin'
  'PH'               'Phil Hudson'
  'pmm'              'Philippe Marschall?'
  'RAH'              'Richard A. Harmon'
  'RB'               'Roland Bertuli'
  'RCS'              'Russell Swan'
  'rej'		'Ralph Johnson'
  'RJ'               'Ranjan Bagchi'
  'rjf'              'Ricardo J. Ferreira'
  'rlf'              'Ricardo J. Ferreira'
  'rmf'              'Robert Fure'
  'RMF'              'Robert Fure'
  'rop'              'Russell Penney'
  'rp'              '?'
  'rpj'              'Robert P. Jarvis'
  'RvL'              'Reinier van Loon'
  'sac'              'Scott Crosby'
  'SIM'              'Stewart MacLean'
  'sjc'              'Sean Charles'
  'sk'               'Stefan Kersten'
  'slr'              'Steve Rees'
  'squeak'           'Henrik Gedenryd'
  'TBP'              'Brian Payne'
  'Tbp'              'Brian Payne'
  'TEM'              'Tom Morgan'
  'tm'               '?'
- 'tonyg'		'Tony Garnock-Jones'
  'to'               '?'
  'tp'               '?'
  'umur'             'Umur Ozkul'
  'UO'             'Umur Ozkul'
  'wb'               'Wayne Braun'
  'wbk'		'Bryce Kampjes'
  'wdc'              'Bill Cattey'
  'YE'               '?'
  'zL'               'Lantz Rowland'
  'mvl'		'Martin v. Lowis'
  'pf'		'Petr Fischer'
  'JPF'		'?'
  'ktt'		'?'
  'ndCollectionsTests-Unordered'		'?'
  'kb'		'Ken Bryant'
  'ge'		'?'
+ 'ee'		'Evelyn Eastmond'
+ 'EE'		'Evelyn Eastmond'
+ 'tis'		'Tamara Stern'
+ 'TIS'		'Tamara Stern'
+ 'DaveF'		'Dave Feinburg'
+ 'NB'		'Nick Bushak'
+ 'DS'		'?'
+ 'bss'		'Brian Silverman'
+ 'jens'	'Jens Monig'
+ 'dh'		'Darris Hupp'
+ 'avl'		'?'
+ 'JTN'		'?'
+ 'eo'		'?'
+ 'sc'		'?'
+ 'DSF'	'Dave Feinburg'
+ 'LY'		'?'
+ 'qvl'		'?'
+ 'as'		'?'
+ 'RG'		'?'
+ 'AC'		'Andy Chung'
+ 'swr'		'?'
+ 'e'		'?'
  )!

Item was added:
+ ----- Method: String>>asHtmlNOBR (in category '*methodauthorship') -----
+ asHtmlNOBR
+ 	"Do the basic character conversion for HTML.  Leave all original return 
+ 	and tabs in place, so can conver back by simply removing bracked 
+ 	things. 4/4/96 tk"
+ 	| temp |
+ 	temp _ self copyReplaceAll: '&' with: '&amp;'.
+ 	HtmlEntities keysAndValuesDo:
+ 		[:entity :char |
+ 		char = $& ifFalse:
+ 			[temp _ temp copyReplaceAll: char asString with: '&' , entity , ';']].
+ 	temp _ temp copyReplaceAll: '	' with: '&nbsp;&nbsp;&nbsp;&nbsp;'.
+ 	^ temp
+ 
+ "
+ 	'A<&>B' asHtml
+ "!

Item was added:
+ ----- Method: MethodHistoryDatabase>>processLiveListNamed: (in category 'all') -----
+ processLiveListNamed: aFileName
+ 
+ 	| file |
+ 	file := FileStream readOnlyFileNamed: aFileName.
+ 	file wantsLineEndConversion: true.
+ 	file linesDo: [:line |
+ 		self processLiveMethod: line
+ 	].
+ 	file close.
+ !

Item was added:
+ ----- Method: Browser>>openHistoryEditing: (in category '*methodauthorship') -----
+ openHistoryEditing: editString
+ 	"Create a pluggable version of all the views for a Browser, including views and controllers."
+ 	| window hSepFrac switchHeight mySingletonList nextOffsets |
+ 
+ 	window _ (SystemWindow labelled: 'later') model: self.
+ 	hSepFrac _ 0.30.
+ 	switchHeight _ 25.
+ 	mySingletonList _ PluggableListMorph on: self list: #historySingleton
+ 			selected: #indexIsOne changeSelected: #indexIsOne:
+ 			menu: #systemCatSingletonMenu: keystroke: #systemCatSingletonKey:from:.
+  	mySingletonList enableDragNDrop: Preferences browseWithDragNDrop.
+ 	mySingletonList hideScrollBarsIndefinitely.
+ 	window 
+ 		addMorph: mySingletonList
+ 		fullFrame: (
+ 			LayoutFrame 
+ 				fractions: (0 at 0 corner: 1 at 0) 
+ 				offsets: (0 at 0  corner: 0 at switchHeight)
+ 		).	
+ 
+ 	self 
+ 		addClassAndSwitchesTo: window 
+ 		at: (0 at 0 corner: 0.5 at hSepFrac)
+ 		plus: switchHeight.
+ 
+ 	nextOffsets _ 0 at switchHeight corner: 0 at 0.
+ 
+ 	window 
+ 		addMorph: self buildMorphicMessageList
+ 		fullFrame: (
+ 			LayoutFrame 
+ 				fractions: (0.5 at 0 corner: 1 at hSepFrac) 
+ 				offsets: nextOffsets
+ 		).	
+ 
+ 	self 
+ 		addLowerPanesTo: window 
+ 		at: (0 at hSepFrac corner: 1 at 1) 
+ 		with: editString.
+ 
+ 	window setUpdatablePanesFrom: #( classList messageCategoryList messageList).
+ 	^ window!

Item was added:
+ ----- Method: MethodHistoryDatabase>>processLiveMethod: (in category 'all') -----
+ processLiveMethod: aString
+ 
+ 	| strs meta cls meth |
+ 	strs := aString substrings.
+ 	meta := strs size = 3.
+ 	cls := strs first, (meta ifTrue: [' class'] ifFalse: ['']).
+ 	meth := strs last.
+ 	(self live at: cls asSymbol ifAbsentPut: [IdentitySet new]) add: meth asSymbol.
+ !

Item was added:
+ ----- Method: TextDiffBuilder>>buildHTMLDisplayPatch (in category '*methodauthorship') -----
+ buildHTMLDisplayPatch
+ 	^String streamContents:[:stream|
+ 		self printPatchHTMLSequence: self buildPatchSequence on: stream.
+ 	]!

Item was added:
+ ----- Method: MethodHistoryDatabase class>>named: (in category 'all') -----
+ named: aVersionName
+ 
+ 	^ self databases at: aVersionName ifAbsent: [nil].
+ !

Item was added:
+ ----- Method: MethodHistoryBrowser>>historySingleton (in category 'all') -----
+ historySingleton
+ 
+ 	^ Array with: 'Historical all classes'!

Item was added:
+ ----- Method: MethodHistoryBrowser>>defaultBrowserTitle (in category 'all') -----
+ defaultBrowserTitle
+ 	^ 'Full History Browser'!

Item was changed:
  ----- Method: MethodHistoryDatabase>>readFile:encodingName: (in category 'all') -----
  readFile: aFilename encodingName: encodingName
  
  	| c |
+ 	"Transcript show: 'reading... ', aFilename; cr."
- 	Transcript show: 'reading... ', aFilename; cr.
  	c := self processChangesFile: aFilename encoding: encodingName.
  	self processChangesList: c.
  !

Item was added:
+ ----- Method: PseudoClass>>definitionST80: (in category '*methodauthorship') -----
+ definitionST80: aBoolean
+ 
+ 	^ ''.
+ !

Item was changed:
  Object subclass: #Authorship
  	instanceVariableNames: 'missingDictionary authorDictionary notAccounted database historicalMissingDictionary historicalAuthorDictionary historicalNotAccounted'
  	classVariableNames: 'AllMethods'
  	poolDictionaries: ''
  	category: 'MethodAuthorship'!
  
+ !Authorship commentStamp: 'yo 10/13/2008 21:37' prior: 0!
- !Authorship commentStamp: 'yo 9/19/2008 13:03' prior: 0!
  To use this class along with the MethodHistoryDatabase, get the necessary files and put them some directories under the image directory, and evaluate the following in a workspace:
  
  m := MethodHistoryDatabase new.
  MethodHistoryChangeList ignoreNonExsiting: false.
  m readFile: 'SqueakV1.sources' encodingName: 'mac-roman'.
  d := FileDirectory default directoryNamed: 'history-updates'.
  #('PreBeta' 'Sqk20Beta') do: [:v |
  	m readFilesIn: d updateFile: 'updates.list' versionName: v.].
  
  m readFile: 'SqueakV2.sources' encodingName: 'mac-roman'.
  #('Squeak2.0' 'Squeak2.1' 'Squeak2.2beta' 'Squeak2.2' 'Squeak2.3' 'Squeak2.4' 'Squeak2.5test' 'Squeak2.5' 'Squeak2.6alpha' 'Squeak2.6' 'Squeak2.7alpha' 'Squeak2.7' 'Squeak2.8alpha' 'Squeak2.8' 'Squeak2.9alpha') do: [:v |
  	m readFilesIn: d updateFile: 'updates.list' versionName: v.].
  
  m readFile: 'SqueakV3.sources' encodingName: 'mac-roman'.
  #('Squeak3.0' 'Squeak3.1alpha' 'Squeak3.1beta' 'Squeak3.2alpha' 'Squeak3.2gamma' 'Squeak3.2' 'Squeak3.2.1' 'Squeak3.4alpha' 'Squeak3.4beta' 'Squeak3.4gamma' 'Squeak3.5alpha' 'Squeak3.5beta' 'Squeak3.5gamma' 'Squeak3.6alpha' 'Squeak3.6beta' 'Squeak3.6gamma' 'Squeak3.6') do: [:v |
  	m readFilesIn: d updateFile: 'updates.list' versionName: v.].
  
  d := FileDirectory default directoryNamed: 'squeak.org-updates'.
  #('Squeak3.7alpha' 'Squeak3.7beta' 'Squeak3.7gamma' 'Squeak3.7' 'Squeak3.8alpha' 'Squeak3.8beta' 'Squeak3.8gamma') do: [:v |
  	m readFilesIn: d updateFile: 'SqCupdates.list' versionName: v.].
  
  d := FileDirectory default directoryNamed: 'squeakland.org-updates'.
  #('Squeakland 3.1.3905' 'Squeakland 3.1.4295' 'Squeakland 3.2.4913' 'Squeakland 3.8.5976' 'Squeakland05' 'Squeakland 3.8-05') do: [:v |
  	m readFilesIn: d updateFile: 'updates.list' versionName: v.].
  
  d := FileDirectory default directoryNamed: 'olpc-updates'.
  #('OLPC1.0' 'OLPC2.0') do: [:v |
  	m readFilesIn: d updateFile: 'updates.list' versionName: v.].
  
  d := FileDirectory default directoryNamed: 'etoys-updates'.
  #('etoys2.1' 'etoys2.2' 'etoys2.3') do: [:v |
  	m readFilesIn: d updateFile: 'updates.list' versionName: v.].
  
  m readFile: 'EtoysV3.sources' encodingName: 'utf-8'.
+ #('etoys3.0' 'etoys3.1' 'etoys3.2') do: [:v |
- #('etoys3.0') do: [:v |
  	m readFilesIn: d updateFile: 'updates.list' versionName: v.].
- 
- b := MethodHistoryBrowser new.
- b database: m.
- MethodHistoryBrowser openBrowserView: (b openEditString: nil) label: 'foo'.
- 
- Authorship initialize.
- authors := Authorship new.
- authors database: m.
- missing := authors missingAuthorsWithMethods.
- returned := authors returnedAuthorsWithMethods.
- notAccounted := authors notAccounted.
- historicalMissing := authors historicalMissingAuthorsWithMethods.
- historicalNotAccounted := authors historicalNotAccounted.
- 
- f _ FileStream newFileNamed: 'currentMissing.html'.
- m writeDictWithVersion: missing toHTMLFileNameOn: f title: 'Agreement Missing in Etoys 3.0' explanationFileName: 'missingExplanation.txt'.
- f close.
- 
- Or for the mainstream image, create appropriate .changes files by doing updates and then:
- 
- m := MethodHistoryDatabase new.
- MethodHistoryChangeList ignoreNonExsiting: false.
- m readFile: 'SqueakV1.sources' encodingName: 'mac-roman'.
- d := FileDirectory default directoryNamed: 'history-updates'.
- #('PreBeta' 'Sqk20Beta') do: [:v |
- 	m readFilesIn: d updateFile: 'updates.list' versionName: v.].
- 
- m readFile: 'SqueakV2.sources' encodingName: 'mac-roman'.
- #('Squeak2.0' 'Squeak2.1' 'Squeak2.2beta' 'Squeak2.2' 'Squeak2.3' 'Squeak2.4' 'Squeak2.5test' 'Squeak2.5' 'Squeak2.6alpha' 'Squeak2.6' 'Squeak2.7alpha' 'Squeak2.7' 'Squeak2.8alpha' 'Squeak2.8' 'Squeak2.9alpha') do: [:v |
- 	m readFilesIn: d updateFile: 'updates.list' versionName: v.].
- 
- m readFile: 'SqueakV3.sources' encodingName: 'mac-roman'.
- #('Squeak3.0' 'Squeak3.1alpha' 'Squeak3.1beta' 'Squeak3.2alpha' 'Squeak3.2gamma' 'Squeak3.2' 'Squeak3.2.1' 'Squeak3.4alpha' 'Squeak3.4beta' 'Squeak3.4gamma' 'Squeak3.5alpha' 'Squeak3.5beta' 'Squeak3.5gamma' 'Squeak3.6alpha' 'Squeak3.6beta' 'Squeak3.6gamma' 'Squeak3.6') do: [:v |
- 	m readFilesIn: d updateFile: 'updates.list' versionName: v.].
- 
- d := FileDirectory default directoryNamed: 'squeak.org-updates'.
- #('Squeak3.7alpha' 'Squeak3.7beta' 'Squeak3.7gamma' 'Squeak3.7' 'Squeak3.8alpha' 'Squeak3.8beta' 'Squeak3.8gamma') do: [:v |
- 	m readFilesIn: d updateFile: 'SqCupdates.list' versionName: v.].
- 
- m readFile: 'Squeak3.9b-7053.changes' encodingName: 'utf-8'.
- m readFile: 'SqueakV39.sources' encodingName: 'utf-8'.
- m readFile: 'Squeak39g-7056+3102-7179.changes' encodingName: 'utf-8'.
  
  b := MethodHistoryBrowser new.
  b database: m.
  MethodHistoryBrowser openBrowserView: (b openEditString: nil) label: 'foo'.
  
  Authorship initialize.
  authors := Authorship new.
  authors database: m.
  missing := authors missingAuthorsWithMethods.
  returned := authors returnedAuthorsWithMethods.
  notAccounted := authors notAccounted.
  historicalMissing := authors historicalMissingAuthorsWithMethods.
  historicalNotAccounted := authors historicalNotAccounted.
  
+ f _ FileStream newFileNamed: 'currentMissing.html'.
+ m writeDictWithVersion: missing toHTMLFileNameOn: f title: 'Agreement Missing in Etoys 3.0' explanationFileName: 'missingExplanation.txt'.
+ f close.
+ 
+ Or for the mainstream image, create appropriate .changes files by doing updates and then:
+ 
+ m := MethodHistoryDatabase new.
+ MethodHistoryChangeList ignoreNonExsiting: false.
+ m readFile: 'SqueakV1.sources' encodingName: 'mac-roman'.
+ d := FileDirectory default directoryNamed: 'history-updates'.
+ #('PreBeta' 'Sqk20Beta') do: [:v |
+ 	m readFilesIn: d updateFile: 'updates.list' versionName: v.].
+ 
+ m readFile: 'SqueakV2.sources' encodingName: 'mac-roman'.
+ #('Squeak2.0' 'Squeak2.1' 'Squeak2.2beta' 'Squeak2.2' 'Squeak2.3' 'Squeak2.4' 'Squeak2.5test' 'Squeak2.5' 'Squeak2.6alpha' 'Squeak2.6' 'Squeak2.7alpha' 'Squeak2.7' 'Squeak2.8alpha' 'Squeak2.8' 'Squeak2.9alpha') do: [:v |
+ 	m readFilesIn: d updateFile: 'updates.list' versionName: v.].
+ 
+ m readFile: 'SqueakV3.sources' encodingName: 'mac-roman'.
+ #('Squeak3.0' 'Squeak3.1alpha' 'Squeak3.1beta' 'Squeak3.2alpha' 'Squeak3.2gamma' 'Squeak3.2' 'Squeak3.2.1' 'Squeak3.4alpha' 'Squeak3.4beta' 'Squeak3.4gamma' 'Squeak3.5alpha' 'Squeak3.5beta' 'Squeak3.5gamma' 'Squeak3.6alpha' 'Squeak3.6beta' 'Squeak3.6gamma' 'Squeak3.6') do: [:v |
+ 	m readFilesIn: d updateFile: 'updates.list' versionName: v.].
+ 
+ d := FileDirectory default directoryNamed: 'squeak.org-updates'.
+ #('Squeak3.7alpha' 'Squeak3.7beta' 'Squeak3.7gamma' 'Squeak3.7' 'Squeak3.8alpha' 'Squeak3.8beta' 'Squeak3.8gamma') do: [:v |
+ 	m readFilesIn: d updateFile: 'SqCupdates.list' versionName: v.].
+ 
+ m readFile: 'Squeak3.9b-7053.changes' encodingName: 'utf-8'.
+ m readFile: 'SqueakV39.sources' encodingName: 'utf-8'.
+ m readFile: 'Squeak39g-7056+3102-7179.changes' encodingName: 'utf-8'.
+ 
+ b := MethodHistoryBrowser new.
+ b database: m.
+ MethodHistoryBrowser openBrowserView: (b openEditString: nil) label: 'foo'.
+ 
+ Authorship initialize.
+ authors := Authorship new.
+ authors database: m.
+ missing := authors missingAuthorsWithMethods.
+ returned := authors returnedAuthorsWithMethods.
+ notAccounted := authors notAccounted.
+ historicalMissing := authors historicalMissingAuthorsWithMethods.
+ historicalNotAccounted := authors historicalNotAccounted.
+ 
  
  f _ FileStream newFileNamed: 'currentMissing.html'.
  m writeDictWithVersion: missing toHTMLFileNameOn: f title: 'Agreement Missing in Etoys 3.0' explanationFileName: 'missingExplanation.txt'.
  f close.
  
  m writeDict: missing toFileName: 'missing.txt'.!

Item was added:
+ ----- Method: MethodHistoryDatabase class>>liveListAt:putFromFileName: (in category 'all') -----
+ liveListAt: dataName putFromFileName: fileName
+ 
+ 	| file strs meta cls meth dic |
+ 	dic := IdentityDictionary new.
+ 	file := FileStream readOnlyFileNamed: fileName.
+ 	file wantsLineEndConversion: true.
+ 	file contentsOfEntireFile linesDo: [:line |
+ 		strs := line substrings.
+ 		meta := strs size = 3.
+ 		cls := strs first, (meta ifTrue: [' class'] ifFalse: ['']).
+ 		meth := strs last.
+ 		(dic at: cls asSymbol ifAbsentPut: [IdentitySet new]) add: meth asSymbol.
+ 	].
+ 	file close.
+ 	self liveLists at: dataName put: dic.
+ !

Item was changed:
  ----- Method: Authorship>>returnedSignatories (in category 'data') -----
  returnedSignatories
  
  "This is a list of all Squeak contributors who have returned a signed distribution agreement.
  
+ Nov 25th  2008
- Aug 21st  2008
- 
  ---
  
  initials         name"
  ^ #(
  'AB'               'Alexandre Bergel'
  'ab'               'Avi Bryant or Alexandre Bergel'
- 'ac'               'Andrew Catton'
  'ACG'              'Andrew C. Greenberg'
  'acg'              'Andrew C. Greenberg'
  'ack'              'Alan Kay'
  'ads'              'Adam Spitz'
  'AFi'              'Alain Fischer'
  'ajh'              'Anthony Hannan'
  'aka'              'Mark Guzdial'
  'al'               'Adrian Lienhard or Alexander Lazarevic'
  'aoy'              'Andres Otaduy'
  'apb'              'Andrew P. Black'
  'apl'              'Alain Plantec'
  'ar'               'Andreas Raab'
  '???'               'Andreas Raab'
  'asm'              'Alejandro Magistrello'
  'avi'              'Avi Bryant'
  'ba'			'Bob Arning'
  'bf'               'Bert Freudenberg'
  'BEO'              'Bruce O''Neel '
+ 'beo'              'Bruce O''Neel '
  'BG'               'Boris Gaertner'
  'bg'               'Boris Gaertner'
  'bh'               'Bob Hartwig'
  'BJP'              'Bijan Parsia'
  'BJP
  9/9/1998'              'Bijan Parsia'
  'bk'              'Bolot Kerimbaev'
  'bkv'              'Brent Vukmer'
  'bob'			'Bob Arning'
  'bolot'            'Bolot Kerimbaev'
  'bootstrap'        'Pavel Krivanek'
  'BP'               'Brent Pinkney'
  'bp'               'Brent Pinkney or Bernhard Pieber'
  'brp'              'Brent Pinkney'
  'brp`'              'Brent Pinkney'
  'btr'              'Brian Rice'
  'bvs'              'Ben Schroeder'
  'cbc'              'Chris Cunningham'
  'ccn'              'Chris Norton'
  'ccn+ceg'          'Chris Norton and Carl Gundel'
  'ceg'       'Carl Gundel'
  'CdG'              'Cees de Groot'
  'cds'              'C. David Shaffer'
  'chronograph'               'Tetsuya Hayashi'
  'cmm'              'Chris Muller'
  'crl'              'Craig Latta'
  'cwp'              'Colin Putney'
  'daf'              'Dave Faught'
  'dao'              'danil osipchuk'
  'das'              'David A Smith'
  'DAS'              'David A Smith'
  'dc'               'Damien Cassou'
  'dd'               'Dominique Dutoit'
  'de'               'Scott Wallace'
  'dew'              'Doug Way'
  'DF'               'Diego Fernandez'
  'dgd'              'Diego Gomez Deck'
  'dhhi'             'Dan Ingalls'
  'di'               'Dan Ingalls'
  'di
  '               'Dan Ingalls'
  '6/5/97'               'Dan Ingalls'
  '6/6/97'               'Dan Ingalls'
  '6/7/97'               'Dan Ingalls'
  '6/8/97'               'Dan Ingalls'
  '6/9/97'               'Dan Ingalls'
  '6/10/97'               'Dan Ingalls'
  '6/11/97'               'Dan Ingalls'
  '6/13/97'               'Dan Ingalls'
  '6/18/97'               'Dan Ingalls'
  'djp'              'David J. Pennell'
  'DM'               'Duane Maxwell'
  'dm'               'Duane Maxwell/EntryPoint'
  'DSM'              'Duane Maxwell'
  'DSM
  10/15/1999'              'Duane Maxwell'
  'drm'              'Delbert Murphy'
  'dtl'              'Dave Lewis'
  'dv'              'Daniel Vainsencher'
  'dvf'              'Daniel Vainsencher'
  'dvf
  6/10/2000'              'Daniel Vainsencher'
  'eat'              'Eric Arseneau Tremblay'
  'edc'              'Edgar DeCleene or Marcus Denker'
  'efc'              'Eddie Cottongim'
  'efo'              'Emilio Oca'
  'em'               'Ernest Micklei?'
  'emm'              'Ernest Micklei'
  'es'               'Enrico Spinielli'
  'fbs'              'Frank Shearar'
  'FBS'              'Frank Shearar'
  'fbs'              'Frank Shearar'
  'fc'               'Frank Caggiano'
  'fcs'              'Frank Sergeant'
  'fm'               'Florin Mateoc'
  'gh'               'Goran Krampe (nee Hultgren)'
  'gk'               'Goran Krampe (nee Hultgren)'
  'gm'               'German Morales'
  'go'               'Georg Gollmann'
  'gsa'              'German Arduino'
  'HEG'              'Henrik Ekenberg'
  'HilaireFernandes' 'Hilaire Fernandes'
  'hk'               'Herbert Konig'
  'hmm'              'Hans-Martin Mosner'
  'hpt'              'Hernan Tylim'
  'huma'             'Lyndon Tremblay'
  'ich.'             'Yuji Ichikawa'
  'ikp'              'Ian Piumarta'
  'jaf'              'Jan Fietz'
  'jam'              'Javier Musa'
  'jb'              'Jim Benson'
  'jcg'              'Joshua Gargus'
  'jdf'              'David Farber'
  'jdr'              'Javier Diaz-Reinoso'
  'je'               'Joern Eyrich'
  'je77'             'Jochen Rick'
  'JF'               'Julian Fitzell'
  'jf'               'Julian Fitzell'
  'jhm'              'John Maloney'
  'jm'              'John Maloney'
  'jm
  '              'John Maloney'
+ 'jla'              'Jerry Archibald'
  'jlb'              'Jim Benson'
  'jmb'              'Hans Baveco'
  'JMM'              'John McIntosh'
  'JMV'              'Juan Manuel Vuletich'
  'jmv'              'Juan Manuel Vuletich'
  'jon'              'Jon Hylands'
  'JP'               'Joseph Pelrine'
  'jp'               'Joseph Pelrine'
  'jrm'              'John-Reed Maffeo'
  'jrp'              'John Pierce'
  'jsp'              'Jeff Pierce'
  'JW'               'Jesse Welton'
  'jws'			'John Sarkela'
  'JWS'		'John Sarkela'
  'ka'               'Kazuhiro Abe'
  'kfr'              'Karl Ramberg'
  'KLC'              'Ken Causey'
  'klc'              'Ken Causey'
  'KR'               'korakurider'
  'KTT'              'Kurt Thams'
  'kwl'              'Klaus D. Witzel'
  'ky'               'Koji Yokokawa'
  'laza'             'Alexander Lazarevic'
  'LB'               'Leo Burd'
  'LC'               'Leandro Caniglia'
  'lc'               'Leandro Caniglia'
  'LEG'              'Gerald Leeb'
  'len'              'Luciano Esteban Notarfrancesco'
  'lr'               'Lukas Renggli'
  'lrs'              'Lorenzo Schiavina'
  'ls'               'Lex Spoon'
  'LS'               'Lex Spoon'
  'm3r'              'Maurice Rabb'
  'MAL'              'Michael Latta'
  'mas'              'Mark Schwenk'
  'm'                'Marcus Denker'
  'MD'               'Marcus Denker'
  'md'               'Marcus Denker'
  'md\'              'Marcus Denker'
  'mdr'              'Mike Rutenberg'
  'mga'              'Markus Galli'
  'miki'             'Mikael Kindborg'
  'mikki'            'Mikael Kindborg'
  'mir'              'Michael Rueger'
  'mist'             'Michal Starke'
  'MJG'              'Mark Guzdial'
  'mjg'              'Mark Guzdial'
  'mjg
  8/31/1998'              'Mark Guzdial'
  'mjg
  9/9/1998'              'Mark Guzdial'
  'mjg
  9/23/1998'              'Mark Guzdial'
  'mjr'              'Mike Roberts'
  'mjt'              'Mike Thomas'
  'mk'               'Matej Kosik'
  'mlr'              'Michael Rueger'
  'MPW'              'Marcel Weiher'
  'mpw'              'Marcel Weiher'
  'mrm'              'Martin McClure'
  'MPH'              'Michael Hewner'
- 'ms'               'math'
  'MU'               'Masashi Umezawa'
  'mu'               'Masashi Umezawa'
  'mw'               'Martin Wirblat'
  'nb'               'Naala Brewer'
  'nice'             'Nicolas Cellier'
  'nk'               'Ned Konz'
  'nop'              'Jay Carlson'
  'Noury'            'Noury Bouraqadi'
  'NS'               'Nathanael Schaerli'
  'panda'            'Michael Rueger'
  'PHK'              'Peter Keeler'
  'pk'               'Pavel Krivanek'
  'pm'               'Patrick Mauritz'
  'pnm'              'Paul McDonough'
  'pnm
  8/23/2000'              'Paul McDonough'
  'RAA'              'Bob Arning'
  'RAA
  3/28/2000'              'Bob Arning'
+ 'r++'              'Gerardo Richarte'
  'raa'              'Bob Arning'
  'raok'             'Richard A. O''Keefe'
  'rbb'              'Brian Brown'
  'rca'              'Russell Allen'
  'reThink'          'Paul McDonough'
  'rew'              'Roger Whitney'
  'rhi'              'Robert Hirschfeld'
  'rh'              'Robert Hirschfeld'
  'Rik'              'Rik Fischer SmOOdy'
  'rk'               'Ram Krishnan'
  'rkris'               'Ram Krishnan'
  'RJT'              'Ron Teitelbaum'
  'RM'			'Rick McGeer'
  'rr'               'Romain Robbes'
  'rw'               'Roel Wuyts'
  'rw'              'Robert Withers'
  'rww'              'Robert Withers'
  'sbw'              'Stephan B. Wessels'
  'SD'               'Stephane Ducasse'
  'sd'               'Stephane Ducasse'
  'stephaneducassse'               'Stephane Ducasse'
  'sge'              'Steve Elkins'
  'shrink'           'Pavel Krivanek'
  'slg'              'Steve Gilbert'
  'sm'               'Simon Michael'
  'sma'              'Stefan Matthias Aust'
  'sn'               'Suslov Nikolay'
  'spfa'             'Stephane Rollandin'
  'sps'              'Steven Swerling'
  'sqr'              'Andres Valloud'
  'SqR'              'Andres Valloud'
  'SqR!!!!'            'Andres Valloud'
  'SqR!!!!!!!!'         'Andres Valloud'
  'sr'               'Stephan Rudlof'
  'ssa'              'Sam S. Adams'
  'Sames'            'Samuel S. Shuster'
  'SSS'              'Samuel S. Shuster'
  'st'               'Samuel Tardieu'
  'stephaneducasse'  'Stephane Ducasse'
  'stp'              'Stephen Travis Pope'
  'sumim'            'Masato Sumi'
  'svp'              'Stephen Vincent Pair'
  'sw'               'Scott Wallace'
  'sws'              'Scott Wallace'
  'T2'               'Toshiyuki Takeda'
  'tak'              'Takashi Yamamiya'
  'tao'              'Tim Olson'
  'tb'               'Todd Blanchard or Torsten Bergman'
  'TBn'              'Torsten Bergmann'
  'tbn'              'Torsten Bergmann'
  'tetha'            'Tetsuya Hayashi'
  'tfei'             'The Fourth Estate, Inc.'
  'th'               'Torge Husfeldt'
  'ti'               'Tobias Isenberg'
  'TJ'               'TJ Leone'
  'tk'               'Ted Kaehler'
  'tk
  9/13/97'               'Ted Kaehler'
  'tk
  12/6/2004'               'Ted Kaehler'
  'tk
  11/29/2004'               'Ted Kaehler'
  'tk
  11/26/2004'               'Ted Kaehler'
  'tk'               'Thomas Kowark'
  'tlk'              'Tom Koenig'
  'TN'               'korakurider'
+ 'tonyg'		'Tony Garnock-Jones'
  'TPR'              'Tim Rowledge'
  'tpr'              'Tim Rowledge'
  'TAG'              'Travis Griggs'
  'TRee'             'Trygve Reenskaug'
  'ts'          'Shortsleeved'
  'Tsutomu'          'Tsutomu Hiroshima'
  'tween'            'Andy Tween'
  'vb'               'Vassili Bykov'
  'vbdew'               'Vassili Bykov and Doug Way'
  'vj'               'Vladimir Janousek'
  'wiz'              'Jerome Peace'
  'wod'              'Bill Dargel'
  'ykoubo'           'Koji Yokokawa'
  'yo'               'Yoshiki Ohshima'
  'ward'             'Ward Cunningham'
  'zz'               'Serge Stinckwich'
  )!

Item was added:
+ ----- Method: MethodHistoryDatabase class>>remove: (in category 'all') -----
+ remove: aVersionName
+ 
+ 	^ self databases removeKey: aVersionName ifAbsent: [nil].!

Item was added:
+ ----- Method: MethodHistoryBrowser>>messageList (in category 'all') -----
+ messageList
+ 	"Answer an Array of the message selectors of the currently selected message category, provided that the messageCategoryListIndex is in proper range.  Otherwise, answer an empty Array  If messageCategoryListIndex is found to be larger than the number of categories (it happens!!), it is reset to zero."
+ 	| class |
+ 	class := self selectedClass.
+ 	^ (database at: class name ) keys asSortedCollection
+ !

Item was added:
+ ----- Method: Browser>>openHistoryString: (in category '*methodauthorship') -----
+ openHistoryString: aString
+ 	"Create a pluggable version of all the views for a Browser, including views and controllers.  The top list view is of the currently selected system class category--a single item list."
+ 	| systemCategoryListView classListView messageCategoryListView messageListView browserCodeView topView switchView y annotationPane underPane optionalButtonsView |
+ 
+ 	Smalltalk isMorphic ifTrue: [^ self openHistoryEditing: aString].
+ 
+ 	topView _ (StandardSystemView new) model: self.
+ 	topView borderWidth: 1.
+ 		"label and minSize taken care of by caller"
+ 
+ 	systemCategoryListView _ PluggableListView on: self
+ 		list: #systemCategorySingleton
+ 		selected: #indexIsOne 
+ 		changeSelected: #indexIsOne:
+ 		menu: #systemCatSingletonMenu:
+ 		keystroke: #systemCatSingletonKey:from:.
+ 	systemCategoryListView window: (0 @ 0 extent: 200 @ 12).
+ 	topView addSubView: systemCategoryListView.
+ 
+ 	classListView _ PluggableListView on: self
+ 		list: #classList
+ 		selected: #classListIndex
+ 		changeSelected: #classListIndex:
+ 		menu: #classListMenu:shifted:
+ 		keystroke: #classListKey:from:.
+ 	classListView window: (0 @ 0 extent: 67 @ 62).
+ 	topView addSubView: classListView below: systemCategoryListView.
+ 
+ 	messageCategoryListView _ PluggableListView on: self
+ 		list: #messageCategoryList
+ 		selected: #messageCategoryListIndex
+ 		changeSelected: #messageCategoryListIndex:
+ 		menu: #messageCategoryMenu:.
+ 	messageCategoryListView controller terminateDuringSelect: true.
+ 	messageCategoryListView window: (0 @ 0 extent: 66 @ 70).
+ 	topView addSubView: messageCategoryListView toRightOf: classListView.
+ 
+ 	switchView _ self buildInstanceClassSwitchView.
+ 	switchView 
+ 		window: switchView window 
+ 		viewport: (classListView viewport bottomLeft 
+ 					corner: messageCategoryListView viewport bottomLeft).
+ 	switchView borderWidth: 1.
+ 	topView addSubView: switchView below: classListView.
+ 
+ 	messageListView _ PluggableListView on: self
+ 		list: #messageList
+ 		selected: #messageListIndex
+ 		changeSelected: #messageListIndex:
+ 		menu: #messageListMenu:shifted:
+ 		keystroke: #messageListKey:from:.
+ 	messageListView menuTitleSelector: #messageListSelectorTitle.
+ 	messageListView window: (0 @ 0 extent: 67 @ 70).
+ 	topView addSubView: messageListView toRightOf: messageCategoryListView.
+ 
+ 	 self wantsAnnotationPane
+ 		ifTrue:
+ 			[annotationPane _ PluggableTextView on: self
+ 				text: #annotation accept: nil
+ 				readSelection: nil menu: nil.
+ 			annotationPane window: (0 at 0 extent: 200 at self optionalAnnotationHeight).
+ 			topView addSubView: annotationPane below: switchView.
+ 			y _ 110 - 12 - self optionalAnnotationHeight.
+ 			underPane _ annotationPane]
+ 		ifFalse:
+ 			[y _ 110 - 12.
+ 			underPane _ switchView].
+ 
+ 	self wantsOptionalButtons ifTrue:
+ 		[optionalButtonsView _ self buildOptionalButtonsView.
+ 		optionalButtonsView borderWidth: 1.
+ 		topView addSubView: optionalButtonsView below: underPane.
+ 		underPane _ optionalButtonsView.
+ 		y _ y - self optionalButtonHeight].
+ 
+ 	browserCodeView _ MvcTextEditor default on: self 
+ 			text: #contents accept: #contents:notifying:
+ 			readSelection: #contentsSelection menu: #codePaneMenu:shifted:.
+ 	browserCodeView window: (0 at 0 extent: 200 at y).
+ 	topView addSubView: browserCodeView below: underPane.
+ 	aString ifNotNil: [browserCodeView editString: aString.
+ 			browserCodeView hasUnacceptedEdits: true].
+ 	topView setUpdatablePanesFrom: #(classList messageCategoryList messageList).
+ 	^ topView!

Item was changed:
  ----- Method: MethodHistoryChangeList>>scanCategory:class:meta:stamp: (in category 'all') -----
  scanCategory: category class: class meta: meta stamp: stamp
  	| method sel |
  	self ignoreNonExisting ifTrue: [Smalltalk at: class ifAbsent: [^ self]].
  	[
  	method _ file nextChunk.
  	file skipStyleChunk.
  	method size > 0]						"done when double terminators"
  		whileTrue:
  		[sel _ Parser new parseSelector: method.
  		self addItem: (MethodHistoryChangeRecord new class: (class, (meta ifTrue: [' class'] ifFalse: [''])) asSymbol selector: sel stamp: stamp text: method asString sourceFile: file localName)
  			text: 'method: ' , class , (meta ifTrue: [' class '] ifFalse: [' '])
  				, sel
  				, (stamp isEmpty ifTrue: [''] ifFalse: ['; ' , stamp])]!

Item was added:
+ ----- Method: TextDiffBuilder class>>buildHTMLPatchFrom:to: (in category '*methodauthorship') -----
+ buildHTMLPatchFrom: srcString to: dstString
+ 	^(self from: srcString to: dstString) buildHTMLDisplayPatch!



More information about the Packages mailing list