jan@201: "{ Package: 'stx:goodies/builder/reports' }" jan@201: jan@201: "{ NameSpace: Builder }" jan@201: jan@201: ReportSourceInfo subclass:#ReportClassSourceInfo jan@201: instanceVariableNames:'klass' jan@201: classVariableNames:'' jan@201: poolDictionaries:'' jan@201: category:'Builder-Reports-Utils' jan@201: ! jan@201: jan@201: jan@265: !ReportClassSourceInfo methodsFor:'accessing'! jan@265: jan@265: pathNameAbsolute: aBoolean jan@265: "Return a path (as String) to file containing the source code. The file points to the jan@265: real source file. If `aBoolean` is true, then absolute path is returned, otherwise jan@265: realtive path to package root is returned." jan@265: jan@265: | sourceFile packageDir | jan@265: jan@265: sourceFile := klass classFilename notNil jan@265: ifTrue: [ klass classFilename ] jan@265: ifFalse: [ (Smalltalk fileNameForClass:klass) , '.st' ]. jan@265: packageDir := aBoolean jan@265: ifTrue:[ (Smalltalk getPackageDirectoryForPackage: package) pathName ] jan@265: ifFalse: [ package asString replaceAll: $: with: Filename separator; replaceAll: $/ with: Filename separator ]. jan@265: jan@265: ^ packageDir , Filename separator , sourceFile. jan@265: jan@265: " jan@265: (Builder::ReportSourceInfo forClass: Object inPackage: 'stx:libbasic') pathNameAbsolute: true jan@265: (Builder::ReportSourceInfo forClass: Object inPackage: 'stx:libbasic') pathNameAbsolute: false jan@265: " jan@265: jan@265: "Created: / 16-12-2014 / 10:25:20 / Jan Vrany " jan@265: ! ! jan@265: jan@201: !ReportClassSourceInfo methodsFor:'initialization'! jan@201: jan@201: initializeWithPackage:aSymbolOrString class:aClass jan@201: package := aSymbolOrString asSymbol. jan@201: klass := aClass theNonMetaclass. jan@201: self setup. jan@201: jan@201: "Created: / 29-07-2013 / 18:37:52 / Jan Vrany " jan@201: ! ! jan@201: jan@201: !ReportClassSourceInfo methodsFor:'utilities'! jan@201: jan@201: fileOutOn:aStream jan@201: | filter | jan@201: jan@201: "JV@2012-02-02: Do not fileout extensionVersion methods, that one is filed out jan@201: when extensions are filed out." jan@201: (klass inheritsFrom: ProjectDefinition) ifTrue:[ jan@201: filter := [:m| m package = package jan@201: and:[ (AbstractSourceCodeManager isExtensionsVersionMethodSelector:m selector) not jan@201: "m selector ~~ self nameOfVersionMethodForExtensions"] jan@201: ] jan@201: ] ifFalse:[ jan@201: filter := [:mth | mth package = package ]. jan@201: ]. jan@255: klass isLoaded ifFalse:[ klass autoload ]. jan@255: klass fileOutOn:aStream jan@255: withTimeStamp:false jan@255: withInitialize:true jan@255: withDefinition:true jan@255: methodFilter:filter. jan@201: jan@201: "Created: / 01-03-2013 / 17:51:10 / Jan Vrany " jan@255: "Modified: / 15-12-2014 / 11:27:02 / Jan Vrany " jan@201: ! jan@201: jan@201: validate jan@201: | file | jan@201: jan@201: file := (Smalltalk getPackageDirectoryForPackage: klass package) / ((Smalltalk fileNameForClass: klass) , '.st'). jan@201: ^ self validateAgainstReference: file jan@201: jan@201: "Modified: / 29-07-2013 / 14:54:35 / Jan Vrany " jan@201: ! ! jan@201: jan@201: !ReportClassSourceInfo class methodsFor:'documentation'! jan@201: jan@201: version jan@201: ^ '$Header$' jan@201: ! jan@201: jan@201: version_CVS jan@201: ^ '$Header$' jan@201: ! ! jan@201: