--- 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 <jan.vrany@fit.cvut.cz>"
!
-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 <jan.vrany@fit.cvut.cz>"
+!
+
+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 <jan.vrany@fit.cvut.cz>"
! !
!CypressWriter class methodsFor:'documentation'!