diff -r f90704544ca0 -r d5b81c30785e CypressWriter.st --- a/CypressWriter.st Thu Sep 13 14:58:01 2012 +0000 +++ b/CypressWriter.st Mon Sep 17 18:05:30 2012 +0000 @@ -1,7 +1,7 @@ "{ Package: 'stx:goodies/cypress' }" -Object subclass:#CypressWriter - instanceVariableNames:'repository' +CypressAbstractWriter subclass:#CypressWriter + instanceVariableNames:'' classVariableNames:'' poolDictionaries:'' category:'Cypress-New-Reader & Writer' @@ -14,8 +14,7 @@ An entry point to write a package in Cypress format. Example: - CypressWriter new - repository: '~/Projects/SmalltalkX/repositories/git/cypress/implementations/smalltalkx/packages'; + (CypressWriter onDirectory:'~/Projects/SmalltalkX/repositories/git/cypress/implementations/smalltalkx/packages'); write: #'stx:goodies/cypress'. [author:] @@ -26,18 +25,61 @@ [class variables:] [see also:] + 'Cypress spec' - https://github.com/CampSmalltalk/Cypress/wiki " ! ! -!CypressWriter methodsFor:'accessing'! +!CypressWriter methodsFor:'writing-model'! + +writeClass: cclass to: directory + + | clsdir | -repository - ^ repository + clsdir := directory / (self directoryNameForClass: cclass). + clsdir exists ifFalse:[ clsdir recursiveMakeDirectory ]. + + self + writeProperties: cclass properties to: clsdir; + writeComment: cclass comment to: clsdir; + writeMethods: cclass methods to: clsdir + + "Created: / 17-09-2012 / 18:34:52 / Jan Vrany " ! -repository:aStringOrFilename - repository := aStringOrFilename. +writeMethod: cmethod to: directory + | mthfile | + + mthfile := directory / (self fileNameForMethod: cmethod). + + self writeProperties: cmethod properties to: directory. + + mthfile writingFileDo:[:s| + s nextPut:$"; cr. + s nextPutAll: 'notice: '; nextPutAll: notice; cr. + s nextPutAll: 'category: '; nextPutAll: cmethod category ? '* as yet unclassified *'; cr. + s nextPut:$"; cr. + s nextPutAll: cmethod source. + ]. + + "Created: / 17-09-2012 / 18:35:30 / Jan Vrany " +! + +writePackage: cpackage to: directory + + | pkgdir | + + notice isNil ifTrue:[ notice := cpackage definition legalCopyright ]. + pkgdir := repository directory / (self directoryNameForPackage: cpackage). + pkgdir exists ifFalse:[ pkgdir recursiveMakeDirectory ]. + + self + writeProperties: cpackage properties to: pkgdir; + writeComment: cpackage comment to: pkgdir; + writeClasses: cpackage classes to: pkgdir; + writeExtensions: cpackage extensions to: pkgdir. + + "Created: / 17-09-2012 / 17:44:16 / Jan Vrany " ! ! !CypressWriter class methodsFor:'documentation'!