CypressWriter.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 18 Sep 2012 13:49:14 +0000
changeset 20 cdf3ee8ceeaa
parent 16 75ff9255068a
permissions -rw-r--r--
- fixes

"{ Package: 'stx:goodies/cypress' }"

CypressAbstractWriter subclass:#CypressWriter
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	category:'Cypress-New-Reader & Writer'
!

!CypressWriter class methodsFor:'documentation'!

documentation
"
    An entry point to write a package in Cypress format.
    Example:

    (CypressWriter onDirectory:'~/Projects/SmalltalkX/repositories/git/cypress/implementations/smalltalkx/packages');
        write: #'stx:goodies/cypress'.

    [author:]
        Jan Vrany <jan.vrany@fit.cvut.cz>

    [instance variables:]

    [class variables:]

    [see also:]
        'Cypress spec' - https://github.com/CampSmalltalk/Cypress/wiki

"
! !

!CypressWriter methodsFor:'writing-model'!

writeClass: cclass as: name to: directory

    | clsdir |

    clsdir := directory / name.
    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 / 22:18:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

writeMethod: cmethod as: name to: directory
    | mthfile |

    mthfile := directory / name.

    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 / 22:21:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

writePackage: cpackage as: name to: directory

    | pkgdir |

    notice isNil ifTrue:[ notice := cpackage definition legalCopyright ].
    pkgdir := directory / name.
    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 / 22:17:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!CypressWriter class methodsFor:'documentation'!

version_SVN
    ^ '$Id::                                                                                                                        $'
! !