CypressClass.st
author Jan Vrany <jan.vrany@labware.com>
Wed, 08 Jul 2020 11:26:45 +0100
changeset 29 443911ff729a
parent 25 0ab1d8f0f793
permissions -rw-r--r--
Move some extensions to stx:libcompat
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
25
0ab1d8f0f793 Implemented utility method #readPackageForm:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
     3
"{ NameSpace: Smalltalk }"
0ab1d8f0f793 Implemented utility method #readPackageForm:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
     4
11
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
CypressModel subclass:#CypressClass
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	instanceVariableNames:'comment methods'
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	category:'Cypress-New-Model'
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
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
!CypressClass class methodsFor:'instance creation'!
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
fromClass: aClass
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
    "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
    17
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
    18
    ^self new initializeFromClass: aClass.
11
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
    "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
    21
!
f90704544ca0 More refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    22
f90704544ca0 More refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    23
fromDirectory: directory
f90704544ca0 More refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    24
    "Reads a CypressClass from given 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
    ^self new initializeFromDirectory: directory
f90704544ca0 More refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    27
f90704544ca0 More refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    28
    "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
    29
! !
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
!CypressClass methodsFor:'accessing'!
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
17
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    33
category
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    34
    ^properties at:'category' ifAbsent:['* as yet unclassified *']
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
    "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
    37
!
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
classInstVarsAsString
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    40
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    41
    ^String streamContents:[:s|
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    42
        (properties at:'classinstvars' ifAbsent:[#()]) 
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    43
            do:[:each|s nextPutAll: each]
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    44
            separatedBy:[s space]
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    45
    ]
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
    "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
    48
!
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
classVarsAsString
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    51
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    52
    ^String streamContents:[:s|
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    53
        (properties at:'classvars' ifAbsent:[#()]) 
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    54
            do:[:each|s nextPutAll: each]
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    55
            separatedBy:[s space]
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    56
    ]
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
    "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
    59
!
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    60
14
d5b81c30785e - CypressWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    61
comment
d5b81c30785e - CypressWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    62
    ^ comment
d5b81c30785e - CypressWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    63
!
d5b81c30785e - CypressWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    64
d5b81c30785e - CypressWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    65
comment:something
d5b81c30785e - CypressWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    66
    comment := something.
d5b81c30785e - CypressWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    67
!
d5b81c30785e - CypressWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    68
17
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    69
fullClassName
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    70
    | ns |
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    71
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    72
    ns := properties at: 'namespace' ifAbsent:[nil].
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    73
    ^(ns notNil and:[ns ~= 'Smalltalk'])
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    74
        ifFalse:[properties at: 'name']
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    75
        ifTrue:[(properties at: 'name'), '::' , ns].
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
    "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
    78
!
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    79
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    80
fullSuperName
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    81
    | ns |
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    82
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    83
    ns := properties at: 'superNamespace' ifAbsent:[nil].
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    84
    ^(ns notNil and:[ns ~= 'Smalltalk'])
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    85
        ifFalse:[properties at: 'super']
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    86
        ifTrue:[(properties at: 'super'), '::' , ns].
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
    "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
    89
!
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
instVarsAsString
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    92
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    93
    ^String streamContents:[:s|
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    94
        (properties at:'instvars' ifAbsent:[#()]) 
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    95
            do:[:each|s nextPutAll: each]
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    96
            separatedBy:[s space]
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    97
    ]
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
    "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
   100
!
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   101
11
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
methods
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
    methods isNil ifTrue:[
17
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   105
        methods := OrderedCollection new
11
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
    ^methods
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
    "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
   110
!
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   111
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   112
name
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   113
    name isNil ifTrue:[
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   114
        properties notNil ifTrue:[
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   115
            name := properties at:'name' ifAbsent:[nil]
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   116
        ]
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
    ^name
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
    "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
   121
!
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
poolsAsString
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   124
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   125
    ^String streamContents:[:s|
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   126
        (properties at:'pools' ifAbsent:[#()]) 
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   127
            do:[:each|s nextPutAll: each]
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   128
            separatedBy:[s space]
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   129
    ]
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
    "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
   132
! !
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
!CypressClass methodsFor:'converting'!
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   135
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   136
asChange
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   137
    "superclass CypressModel says that I am responsible to implement this method"
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   138
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   139
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   140
    ^ClassDefinitionChange new
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   141
        className: self fullClassName;
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   142
        superClassName: self fullSuperName;
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   143
        category: self category;
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   144
25
0ab1d8f0f793 Implemented utility method #readPackageForm:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   145
        instanceVariableString: self instVarsAsString;
0ab1d8f0f793 Implemented utility method #readPackageForm:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   146
        classVariableString: self classVarsAsString;
0ab1d8f0f793 Implemented utility method #readPackageForm:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   147
        classInstanceVariableString: self classInstVarsAsString;
17
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   148
        poolDictionaries: self poolsAsString;
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
        yourself.
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   151
25
0ab1d8f0f793 Implemented utility method #readPackageForm:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   152
    "Modified: / 05-10-2015 / 18:19: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
   153
! !
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
!CypressClass methodsFor:'initialization'!
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
initializeFromClass: aClass
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
    name := aClass name.
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
    properties := Dictionary new.
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
    properties 
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
        at:'name'           put: aClass nameWithoutPrefix;
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
        at:'super'          put: aClass superclass nameWithoutPrefix;
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
        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
   165
        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
   166
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
        at:'instvars'       put: aClass instVarNames;
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
        at:'classinstvars'  put: aClass class instVarNames;
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
        at:'classvars'      put: aClass classVarNames;
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
        at:'pools'          put: aClass sharedPoolNames;
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
        at:'category'       put: aClass category.
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
    aClass definitionSelector ~~ Object definitionSelector ifTrue:[
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
        properties
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
        at:'_stx_type'      put: aClass definitionSelector
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
    ].
17
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   179
    methods := OrderedCollection new.
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   180
    (Smalltalk at: name asSymbol) instAndClassMethodsDo:[:mthd|
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   181
        methods add: (CypressMethod fromMethod: mthd)
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   182
    ]
11
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
    "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
   185
!
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
   186
13
f90704544ca0 More refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   187
initializeFromDirectory: directory
f90704544ca0 More refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   188
    self readFrom: directory
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
    "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
   191
!
f90704544ca0 More refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   192
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
   193
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
   194
    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
   195
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
   196
    "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
   197
! !
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
17
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   199
!CypressClass methodsFor:'private'!
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   200
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   201
changesInto:aChangeSet
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   202
    "superclass CypressModel says that I am responsible to implement this method"
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   203
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   204
    aChangeSet add: self asChange.
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   205
    self methods do:[:each|each changesInto: aChangeSet].
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
    "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
   208
! !
d387df3d4e46 - CypressAbstractReaderWriter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   209
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
   210
!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
   211
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
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
   213
     "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
   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
    | 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
   216
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
   217
    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
   218
    classDir := directory / 'class'.
11
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
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
   220
    " 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
   221
    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
   222
    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
   223
        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
   224
        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
   225
    ].
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
    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
   227
        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
   228
        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
   229
    ].
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
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
    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
   232
        | 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
   233
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
        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
   235
        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
   236
        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
   237
        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
   238
        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
   239
            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
   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
    ].
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
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
    " 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
   244
    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
   245
        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
   246
    ].
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
   247
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
   248
    "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
   249
! !
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
!CypressClass class methodsFor:'documentation'!
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
version_SVN
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
    ^ '$Id::                                                                                                                        $'
333528cd629a - Cypress refactoring - towards a lot simpler code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   255
! !
25
0ab1d8f0f793 Implemented utility method #readPackageForm:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   256