1: ================================================================================ 2: 3: Smalltalk.KSU defineClass: #ProgramManager 4: superclass: #{Core.Object} 5: indexedType: #none 6: private: false 7: instanceVariableNames: '' 8: classInstanceVariableNames: '' 9: imports: '' 10: category: 'KSU-System' 11: 12: ================================================================================ 13: 14: KSU.ProgramManager class 15: instanceVariableNames: '' 16: 17: ================================================================================ 18: 19: KSU.ProgramManager class method for 'accessing' 20: 21: bundle 22: "KSU.ProgramManager bundle." 23: 24: ^Store.Registry bundleNamed: #KSU 25: 26: ------------------------------------------------------------ 27: 28: KSU.ProgramManager class method for 'accessing' 29: 30: bundles 31: "KSU.ProgramManager bundles." 32: 33: ^self bundle allItems select: [:each | each isBundle] 34: 35: ------------------------------------------------------------ 36: 37: KSU.ProgramManager class method for 'accessing' 38: 39: classes 40: "KSU.ProgramManager classes." 41: 42: | aBundle | 43: aBundle := self bundle. 44: ^aBundle allClasses collect: [:each | each actual] 45: 46: ------------------------------------------------------------ 47: 48: KSU.ProgramManager class method for 'comments' 49: 50: commentString 51: "KSU.ProgramManager commentString." 52: 53: ^'Copyright 2008-2012 AOKI Atsushi in KSU (Kyoto Sangyo University). All Rights Reserved.' 54: 55: ------------------------------------------------------------ 56: 57: KSU.ProgramManager class method for 'documents' 58: 59: doclet 60: "KSU.ProgramManager doclet." 61: 62: | classCollection aDoclet toDirectory fromDirectory | 63: classCollection := self classes. 64: aDoclet := KSU.TextDoclet codePrint: classCollection. 65: fromDirectory := aDoclet instVarAt: (aDoclet class allInstVarNames indexOf: 'toDirectory'). 66: toDirectory := fromDirectory directory construct: 'doclet'. 67: toDirectory exists 68: ifTrue: 69: [toDirectory directoryContents do: [:each | (toDirectory construct: each) delete]. 70: toDirectory delete]. 71: fromDirectory renameTo: toDirectory. 72: JunURL browse: (toDirectory construct: 'index.html') asURI asString. 73: ^aDoclet 74: 75: ------------------------------------------------------------ 76: 77: KSU.ProgramManager class method for 'accessing' 78: 79: implementedMethods 80: "KSU.ProgramManager implementedMethods." 81: 82: | aCollection | 83: aCollection := OrderedCollection new. 84: self classes do: 85: [:aClass | 86: aClass selectors do: [:aSymbol | aCollection add: aClass -> aSymbol]. 87: aClass class selectors do: [:aSymbol | aCollection add: aClass class -> aSymbol]]. 88: ^aCollection 89: 90: ------------------------------------------------------------ 91: 92: KSU.ProgramManager class method for 'metrics' 93: 94: linesOfCode 95: "KSU.ProgramManager linesOfCode inspect." 96: 97: | linesOfCode aString | 98: linesOfCode := 0. 99: self classes do: 100: [:aClass | 101: aString := KSU.TextDoclet codePrintStringOf: aClass. 102: linesOfCode := linesOfCode + (aString select: [:each | each = Character cr]) size]. 103: ^linesOfCode 104: 105: ------------------------------------------------------------ 106: 107: KSU.ProgramManager class method for 'private' 108: 109: makeBackups: howMany forFilename: aFilename 110: 111: (howMany to: 1 by: -1) do: 112: [:n | 113: | anArray bakFilename | 114: anArray := Filename splitExtension: aFilename asString. 115: n <= 1 116: ifTrue: [bakFilename := aFilename] 117: ifFalse: 118: [bakFilename := (anArray first , (n - 1) printString , aFilename extension) 119: asFilename]. 120: bakFilename exists 121: ifTrue: 122: [| oldFilename | 123: oldFilename := (anArray first , n printString , aFilename extension) 124: asFilename. 125: bakFilename copyTo: oldFilename]] 126: 127: ------------------------------------------------------------ 128: 129: KSU.ProgramManager class method for 'accessing' 130: 131: namespace 132: "KSU.ProgramManager namespace." 133: 134: | aNameSpace | 135: aNameSpace := Smalltalk at: #KSU. 136: (aNameSpace isKindOf: NameSpace) ifFalse: [^nil]. 137: ^aNameSpace 138: 139: ------------------------------------------------------------ 140: 141: KSU.ProgramManager class method for 'accessing' 142: 143: packages 144: "KSU.ProgramManager packages." 145: 146: ^self bundle allItems select: [:each | each isPackage] 147: 148: ------------------------------------------------------------ 149: 150: KSU.ProgramManager class method for 'comments' 151: 152: propagateComment 153: "KSU.ProgramManager propagateComment." 154: 155: | aString | 156: aString := self commentString. 157: self classes do: [:aClass | aClass comment: aString]. 158: self bundle allItems do: [:each | each comment: aString]. 159: self namespace comment: aString 160: 161: ------------------------------------------------------------ 162: 163: KSU.ProgramManager class method for 'saving' 164: 165: save 166: "KSU.ProgramManager save." 167: 168: | aBundle dateString timeString aDirectory aFilename aFileManager | 169: aBundle := self bundle. 170: dateString := JunCalendarModel stringFromDate select: [:each | each isDigit]. 171: timeString := JunCalendarModel stringFromTime select: [:each | each isDigit]. 172: [(aDirectory := JunSystem homeDirectory construct: 'Desktop') exists ifFalse: [self error: String new]] 173: on: self errorSignal 174: do: [:exception | aDirectory := Filename defaultDirectory directory]. 175: aFilename := aDirectory construct: 'KSU_' , dateString , '_' , timeString , '.st'. 176: Cursor write showWhile: 177: [aFileManager := SourceCodeStream write: aFilename. 178: 179: [aBundle fileOutOn: aFileManager. 180: self writeClassInitializeOn: aFileManager. 181: self writeTimeStampOn: aFileManager] 182: ensure: [aFileManager close]] 183: 184: ------------------------------------------------------------ 185: 186: KSU.ProgramManager class method for 'private' 187: 188: writeClassInitializeOn: aFileManager 189: 190: (self classes select: [:aClass | aClass class selectors includes: #initialize]) do: 191: [:aClass | 192: | aStream | 193: aStream := aFileManager ensureOpen: aFileManager target. 194: aStream cr. 195: aStream cr. 196: aStream nextPutAll: '<initialize>'. 197: aStream 198: cr; 199: nextPutAll: '<class-id>'; 200: nextPutAll: aClass shortName; 201: nextPutAll: '</class-id>'; 202: cr. 203: aStream nextPutAll: '</initialize>'] 204: 205: ------------------------------------------------------------ 206: 207: KSU.ProgramManager class method for 'private' 208: 209: writeTimeStampOn: aFileManager 210: 211: | aStream | 212: aStream := aFileManager ensureOpen: aFileManager target. 213: aStream cr. 214: aStream cr. 215: aStream nextPutAll: '<do-it>'. 216: aStream cr. 217: JunSourceCodeSaver writeStampOn: aStream. 218: aStream cr. 219: aStream nextPutAll: '</do-it>' 220: 221: ================================================================================
This document was generated by KSU.TextDoclet on 2012/09/19 at 23:48:21.