CypressClass.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 18 Sep 2012 13:49:14 +0000
changeset 20 cdf3ee8ceeaa
parent 17 d387df3d4e46
child 25 0ab1d8f0f793
permissions -rw-r--r--
- fixes
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/cypress' }"
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
CypressModel subclass:#CypressClass
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
	instanceVariableNames:'comment methods'
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
	classVariableNames:''
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	poolDictionaries:''
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	category:'Cypress-New-Model'
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
!
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
!CypressClass class methodsFor:'instance creation'!
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
fromClass: aClass
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
    "Returns a CypressPackage for given (real) class"
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
12
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    16
    ^self new initializeFromClass: aClass.
11
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
    "Created: / 10-09-2012 / 23:48:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
13
f90704544ca0 More refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    19
!
f90704544ca0 More refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    20
f90704544ca0 More refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    21
fromDirectory: directory
f90704544ca0 More refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    22
    "Reads a CypressClass from given directory"
f90704544ca0 More refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    23
f90704544ca0 More refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    24
    ^self new initializeFromDirectory: directory
f90704544ca0 More refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    25
f90704544ca0 More refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    26
    "Created: / 13-09-2012 / 15:34:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
11
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
! !
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
!CypressClass methodsFor:'accessing'!
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
17
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    31
category
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    32
    ^properties at:'category' ifAbsent:['* as yet unclassified *']
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    33
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    34
    "Created: / 18-09-2012 / 10:45:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    35
!
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    36
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    37
classInstVarsAsString
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    38
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    39
    ^String streamContents:[:s|
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    40
        (properties at:'classinstvars' ifAbsent:[#()]) 
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    41
            do:[:each|s nextPutAll: each]
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    42
            separatedBy:[s space]
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    43
    ]
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    44
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    45
    "Created: / 18-09-2012 / 10:51:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    46
!
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    47
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    48
classVarsAsString
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    49
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    50
    ^String streamContents:[:s|
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    51
        (properties at:'classvars' ifAbsent:[#()]) 
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    52
            do:[:each|s nextPutAll: each]
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    53
            separatedBy:[s space]
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    54
    ]
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    55
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    56
    "Created: / 18-09-2012 / 10:51:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    57
!
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    58
14
d5b81c30785e - CypressWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    59
comment
d5b81c30785e - CypressWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    60
    ^ comment
d5b81c30785e - CypressWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    61
!
d5b81c30785e - CypressWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    62
d5b81c30785e - CypressWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    63
comment:something
d5b81c30785e - CypressWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    64
    comment := something.
d5b81c30785e - CypressWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    65
!
d5b81c30785e - CypressWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    66
17
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    67
fullClassName
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    68
    | ns |
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    69
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    70
    ns := properties at: 'namespace' ifAbsent:[nil].
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    71
    ^(ns notNil and:[ns ~= 'Smalltalk'])
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    72
        ifFalse:[properties at: 'name']
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    73
        ifTrue:[(properties at: 'name'), '::' , ns].
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    74
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    75
    "Created: / 18-09-2012 / 10:44:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    76
!
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    77
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    78
fullSuperName
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    79
    | ns |
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    80
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    81
    ns := properties at: 'superNamespace' ifAbsent:[nil].
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    82
    ^(ns notNil and:[ns ~= 'Smalltalk'])
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    83
        ifFalse:[properties at: 'super']
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    84
        ifTrue:[(properties at: 'super'), '::' , ns].
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    85
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    86
    "Created: / 18-09-2012 / 10:44:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    87
!
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    88
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    89
instVarsAsString
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    90
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    91
    ^String streamContents:[:s|
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    92
        (properties at:'instvars' ifAbsent:[#()]) 
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    93
            do:[:each|s nextPutAll: each]
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    94
            separatedBy:[s space]
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    95
    ]
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    96
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    97
    "Created: / 18-09-2012 / 10:50:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    98
!
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    99
11
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
methods
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
    methods isNil ifTrue:[
17
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   103
        methods := OrderedCollection new
11
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
    ].
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
    ^methods
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
    "Created: / 11-09-2012 / 00:03:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
17
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   108
!
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   109
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   110
name
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   111
    name isNil ifTrue:[
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   112
        properties notNil ifTrue:[
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   113
            name := properties at:'name' ifAbsent:[nil]
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   114
        ]
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   115
    ].
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   116
    ^name
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   117
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   118
    "Created: / 18-09-2012 / 11:02:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   119
!
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   120
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   121
poolsAsString
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   122
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   123
    ^String streamContents:[:s|
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   124
        (properties at:'pools' ifAbsent:[#()]) 
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   125
            do:[:each|s nextPutAll: each]
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   126
            separatedBy:[s space]
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   127
    ]
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   128
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   129
    "Created: / 18-09-2012 / 10:53:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   130
! !
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   131
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   132
!CypressClass methodsFor:'converting'!
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   133
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   134
asChange
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   135
    "superclass CypressModel says that I am responsible to implement this method"
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   136
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   137
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   138
    ^ClassDefinitionChange new
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   139
        className: self fullClassName;
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   140
        superClassName: self fullSuperName;
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   141
        category: self category;
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   142
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   143
        instanceVariableNames: self instVarsAsString;
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   144
        classVariableNames: self classVarsAsString;
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   145
        classInstanceVariableNames: self classInstVarsAsString;
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   146
        poolDictionaries: self poolsAsString;
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   147
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   148
        yourself.
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   149
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   150
    "Modified: / 18-09-2012 / 11:17:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
11
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
! !
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
!CypressClass methodsFor:'initialization'!
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
initializeFromClass: aClass
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
    name := aClass name.
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
    properties := Dictionary new.
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
    properties 
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
        at:'name'           put: aClass nameWithoutPrefix;
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
        at:'super'          put: aClass superclass nameWithoutPrefix;
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
        at:'namespace'      put: aClass nameSpace nameWithoutPrefix;
12
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   163
        at:'superNamespace' put: aClass nameSpace nameSpace name;
11
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
        at:'instvars'       put: aClass instVarNames;
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
        at:'classinstvars'  put: aClass class instVarNames;
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
        at:'classvars'      put: aClass classVarNames;
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
        at:'pools'          put: aClass sharedPoolNames;
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
        at:'category'       put: aClass category.
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
    aClass definitionSelector ~~ Object definitionSelector ifTrue:[
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
        properties
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
        at:'_stx_type'      put: aClass definitionSelector
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
    ].
17
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   177
    methods := OrderedCollection new.
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   178
    (Smalltalk at: name asSymbol) instAndClassMethodsDo:[:mthd|
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   179
        methods add: (CypressMethod fromMethod: mthd)
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   180
    ]
11
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
    "Created: / 10-09-2012 / 23:48:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   183
!
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   184
13
f90704544ca0 More refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   185
initializeFromDirectory: directory
f90704544ca0 More refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   186
    self readFrom: directory
f90704544ca0 More refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   187
f90704544ca0 More refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   188
    "Created: / 13-09-2012 / 15:35:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f90704544ca0 More refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   189
!
f90704544ca0 More refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   190
12
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   191
initializeWithMethods: aCollection
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   192
    methods := aCollection
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   193
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   194
    "Created: / 11-09-2012 / 11:15:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
11
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
! !
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
17
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   197
!CypressClass methodsFor:'private'!
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   198
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   199
changesInto:aChangeSet
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   200
    "superclass CypressModel says that I am responsible to implement this method"
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   201
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   202
    aChangeSet add: self asChange.
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   203
    self methods do:[:each|each changesInto: aChangeSet].
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   204
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   205
    "Modified: / 18-09-2012 / 10:58:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   206
! !
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   207
12
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   208
!CypressClass methodsFor:'reading & writing - private'!
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   209
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   210
writeMethodsTo:directory notice:copyrightNotice
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   211
     "Writes methods into given 'directory' with copyrightNotice in each file"
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   212
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   213
    | obsolete instDir classDir |
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   214
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   215
    instDir := directory / 'instance'.
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   216
    classDir := directory / 'class'.
11
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
12
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   218
    " collect possibly obsolete directories/files "
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   219
    obsolete := Set new.
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   220
    instDir exists ifTrue:[
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   221
        obsolete add: instDir.
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   222
        obsolete add: instDir directoryContentsAsFilenames
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   223
    ].
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   224
    classDir exists ifTrue:[
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   225
        obsolete add: classDir.
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   226
        obsolete add: classDir directoryContentsAsFilenames
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   227
    ].
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   228
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   229
    self methods do:[:cpsMthd|
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   230
        | dir dottedSel file  |
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   231
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   232
        dir := cpsMthd meta ifTrue:[classDir] ifFalse:[instDir].
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   233
        dir exists ifFalse:[ dir makeDirectory ].
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   234
        file := dir / ((dottedSel := cpsMthd selector copyReplaceAll:$: with: $.) , '.st').
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   235
        cpsMthd writeTo: file notice:copyrightNotice.
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   236
        obsolete := obsolete reject:[:each|
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   237
            each withoutSuffix baseName = dottedSel
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   238
        ].
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   239
    ].
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   240
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   241
    " wipe out obsolete directories / files  "
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   242
    obsolete do:[:each|
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   243
        each exists ifTrue:[ each recursiveRemove ]
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   244
    ].
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   245
ec118792047a - Package writing rewritten to use new model. Writes package according to recent spec.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   246
    "Created: / 11-09-2012 / 11:19:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
11
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
! !
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
!CypressClass class methodsFor:'documentation'!
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
version_SVN
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
    ^ '$Id::                                                                                                                        $'
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
! !