CypressClassStructure.st
author jv
Mon, 03 Sep 2012 11:09:18 +0000
changeset 8 5d48f4894483
parent 6 65414b4bbe93
permissions -rw-r--r--
- CypressPackageReader comment/format in: #readClassStructureFromEntry: - CypressPackageStructure added: #asChangeSet - CypressClassStructure changed: #changesOn: - CypressMethodStructure changed: #changesOn: #classStructure: - stx_goodies_cypress changed: #classNamesAndAttributes #extensionMethodNames #preRequisites - extensions ...
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
8a5b7afa28ff - First shot
jv
parents:
diff changeset
     1
"{ Package: 'stx:goodies/cypress' }"
8a5b7afa28ff - First shot
jv
parents:
diff changeset
     2
8a5b7afa28ff - First shot
jv
parents:
diff changeset
     3
CypressStructure subclass:#CypressClassStructure
8a5b7afa28ff - First shot
jv
parents:
diff changeset
     4
	instanceVariableNames:'instanceMethods classMethods comment isClassExtension'
8a5b7afa28ff - First shot
jv
parents:
diff changeset
     5
	classVariableNames:''
8a5b7afa28ff - First shot
jv
parents:
diff changeset
     6
	poolDictionaries:''
8a5b7afa28ff - First shot
jv
parents:
diff changeset
     7
	category:'Cypress-Structure'
8a5b7afa28ff - First shot
jv
parents:
diff changeset
     8
!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
     9
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    10
CypressClassStructure comment:'Main comment stating the purpose of this class and relevant relationship to other classes.

Possible useful expressions for doIt or printIt.

Structure:
 instVar1		type -- comment about the purpose of instVar1
 instVar2		type -- comment about the purpose of instVar2

Any further useful comments about the general approach of this implementation.'
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    11
!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    12
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    13
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    14
!CypressClassStructure class methodsFor:'instance creation'!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    15
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    16
fromClassDefinition: classDefinition
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    17
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    18
	^self new
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    19
		fromClassDefinition: classDefinition;
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    20
		yourself
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    21
! !
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    22
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    23
!CypressClassStructure methodsFor:'accessing'!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    24
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    25
category
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    26
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    27
	^self packageStructure packageName
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    28
!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    29
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    30
classInstanceVariableNames
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    31
	^self properties at: 'classinstvars' ifAbsent: ['']
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    32
!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    33
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    34
classInstanceVariableNames: aString
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    35
	^self properties at: 'classinstvars' put: aString
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    36
!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    37
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    38
classMethods
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    39
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    40
	classMethods ifNil: [ classMethods := Dictionary new ].
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    41
	^classMethods
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    42
!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    43
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    44
className
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    45
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    46
	^self name
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    47
!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    48
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    49
comment
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    50
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    51
	comment ifNil: [ comment := '' ].
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    52
	^comment
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    53
!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    54
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    55
comment: aString
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    56
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    57
	comment := aString
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    58
!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    59
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    60
instanceMethods
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    61
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    62
	instanceMethods ifNil: [ instanceMethods := Dictionary new ].
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    63
	^instanceMethods
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    64
!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    65
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    66
instanceVariableNames
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    67
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    68
	^self properties at: 'instvars' ifAbsent: ['']
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    69
!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    70
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    71
instanceVariableNames: aString
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    72
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    73
	^self properties at: 'instvars' put: aString
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    74
!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    75
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    76
isClassExtension
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    77
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    78
        isClassExtension ifNil: [ isClassExtension := true ].
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    79
        ^isClassExtension
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    80
!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    81
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    82
isClassExtension: aBoolean
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    83
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    84
	isClassExtension := aBoolean
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    85
!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    86
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    87
name
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    88
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    89
	^self properties at: 'name'
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    90
!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    91
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    92
name: aString
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    93
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    94
	self properties at: 'name' put: aString
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    95
!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    96
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    97
properties: classPropertiesDict
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    98
	properties _ classPropertiesDict
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    99
!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   100
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   101
superclassName
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   102
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   103
	^self properties at: 'super'
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   104
!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   105
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   106
superclassName: aString
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   107
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   108
	^self properties at: 'super' put: aString
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   109
! !
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   110
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   111
!CypressClassStructure methodsFor:'converting'!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   112
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   113
asCypressClassDefinition
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   114
	self isClassExtension ifTrue: [ ^nil ].
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   115
	^CypressClassDefinition
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   116
		name: self className
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   117
		superclassName: self superclassName
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   118
		category: self category 
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   119
		instVarNames: self instanceVariableNames
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   120
		classInstVarNames: self classInstanceVariableNames
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   121
		comment: self comment
6
65414b4bbe93 - CypressStructure
jv
parents: 4
diff changeset
   122
!
65414b4bbe93 - CypressStructure
jv
parents: 4
diff changeset
   123
65414b4bbe93 - CypressStructure
jv
parents: 4
diff changeset
   124
changesOn:aStream
65414b4bbe93 - CypressStructure
jv
parents: 4
diff changeset
   125
    | def |
65414b4bbe93 - CypressStructure
jv
parents: 4
diff changeset
   126
65414b4bbe93 - CypressStructure
jv
parents: 4
diff changeset
   127
    isClassExtension ifFalse:[
65414b4bbe93 - CypressStructure
jv
parents: 4
diff changeset
   128
        def := ClassDefinitionChange new.
65414b4bbe93 - CypressStructure
jv
parents: 4
diff changeset
   129
        def superClassName: (properties at: #super).
65414b4bbe93 - CypressStructure
jv
parents: 4
diff changeset
   130
        def className: (properties at: #name).
65414b4bbe93 - CypressStructure
jv
parents: 4
diff changeset
   131
        def instanceVariableNames: (String streamContents:[:s|((properties at: #instvars ifAbsent:[#()])) do:[:i|s nextPutAll:i; space]]).
65414b4bbe93 - CypressStructure
jv
parents: 4
diff changeset
   132
        def classInstanceVariableNames: (String streamContents:[:s|((properties at: #classinstvars ifAbsent:[#()]) ) do:[:i|s nextPutAll:i; space]]).
65414b4bbe93 - CypressStructure
jv
parents: 4
diff changeset
   133
        def classVariableNames: (String streamContents:[:s|((properties at: #classvars ifAbsent:[#()] ) ) do:[:i|s nextPutAll:i; space]]).
8
5d48f4894483 - CypressPackageReader
jv
parents: 6
diff changeset
   134
        def package: packageStructure name asSymbol.
5d48f4894483 - CypressPackageReader
jv
parents: 6
diff changeset
   135
        def category: (properties at: #category).
6
65414b4bbe93 - CypressStructure
jv
parents: 4
diff changeset
   136
        aStream nextPut: def.
65414b4bbe93 - CypressStructure
jv
parents: 4
diff changeset
   137
    ].
65414b4bbe93 - CypressStructure
jv
parents: 4
diff changeset
   138
65414b4bbe93 - CypressStructure
jv
parents: 4
diff changeset
   139
    instanceMethods ? #() do:[:each|each changesOn: aStream].
65414b4bbe93 - CypressStructure
jv
parents: 4
diff changeset
   140
    classMethods ? #()  do:[:each|each changesOn: aStream].
65414b4bbe93 - CypressStructure
jv
parents: 4
diff changeset
   141
8
5d48f4894483 - CypressPackageReader
jv
parents: 6
diff changeset
   142
    "Modified: / 03-09-2012 / 11:59:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   143
! !
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   144
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   145
!CypressClassStructure methodsFor:'initialization'!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   146
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   147
fromClassDefinition: classDefinition
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   148
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   149
	self isClassExtension: false.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   150
	self name: classDefinition name.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   151
	self comment: classDefinition comment.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   152
  	self superclassName: classDefinition superclassName.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   153
	self instanceVariableNames: classDefinition instVarNames.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   154
	self classInstanceVariableNames: classDefinition classInstVarNames.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   155
!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   156
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   157
fromJs: jsObject
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   158
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   159
	properties := jsObject at: 'properties.json'.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   160
	(jsObject at: 'class' ifAbsent: [#()]) do: [:jsMethodObject |  | methodNameParts |
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   161
		methodNameParts := self splitMethodNameFor: jsMethodObject.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   162
		(self classMethodNamed: (methodNameParts at: 1)) 
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   163
			packageStructure: self packageStructure;
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   164
			classStructure: self;
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   165
			isMetaclass: true;
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   166
			fromJs: jsMethodObject named: methodNameParts ].
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   167
	(jsObject at: 'instance' ifAbsent: [#()]) do: [:jsMethodObject |  | methodNameParts |
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   168
		methodNameParts := self splitMethodNameFor: jsMethodObject.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   169
		(self instanceMethodNamed: (methodNameParts at: 1)) 
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   170
			packageStructure: self packageStructure;
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   171
			classStructure: self;
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   172
			fromJs: jsMethodObject named: methodNameParts ].	
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   173
	comment := jsObject at: 'README.md' ifAbsent: ['']
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   174
! !
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   175
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   176
!CypressClassStructure methodsFor:'private'!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   177
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   178
splitMethodName: methodName
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   179
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   180
	| ext  |
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   181
	ext := '.json'.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   182
	(   '*' , ext match: methodName)
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   183
		ifFalse: [
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   184
			ext := '.st'.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   185
			('*' , ext match: methodName)
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   186
				ifFalse: [ self error: 'invalid structure element: ', methodName ] ].
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   187
	^{methodName copyFrom: 1 to: (methodName size - ext size). ext}
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   188
!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   189
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   190
splitMethodNameFor: jsMethodObject
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   191
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   192
	^self splitMethodName: (jsMethodObject at: 'name')
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   193
! !
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   194
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   195
!CypressClassStructure methodsFor:'querying'!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   196
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   197
classMethodNamed: methodName
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   198
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   199
	^self classMethods 
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   200
		at: methodName 
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   201
		ifAbsent: [ self classMethods at: methodName put: (CypressMethodStructure new name: methodName) ]
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   202
!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   203
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   204
instanceMethodNamed: methodName
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   205
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   206
	^self instanceMethods 
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   207
		at: methodName 
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   208
		ifAbsent: [ self instanceMethods at: methodName put: (CypressMethodStructure new name: methodName) ]
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   209
! !
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   210
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   211
!CypressClassStructure methodsFor:'writing'!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   212
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   213
writeJsonOn: aStream  indent: startIndent
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   214
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   215
        | indent methods |
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   216
        indent := startIndent.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   217
        aStream 
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   218
                tab: indent;
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   219
                nextPutAll: '{';
4
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 1
diff changeset
   220
                cr.
1
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   221
        indent := indent + 1.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   222
        aStream
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   223
                tab: indent;
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   224
                nextPutAll: '"name"';
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   225
                nextPutAll: ' : ';
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   226
                nextPutAll: '"', self name, (self isClassExtension ifTrue: [ '.extension' ] ifFalse: [ '.class' ]), '",';
4
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 1
diff changeset
   227
                cr.
1
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   228
        aStream
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   229
                tab: indent;
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   230
                nextPutAll: '"instance" : [';
4
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 1
diff changeset
   231
                cr;
1
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   232
                yourself.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   233
        methods := self instanceMethods values asArray asSortedCollection: [:a :b | a selector <= b selector].
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   234
        1 to: methods size do: [:index | | methodStructure | 
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   235
                methodStructure := methods at: index.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   236
                methodStructure writeJsonOn: aStream indent: indent + 1.
4
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 1
diff changeset
   237
                index < methods size ifTrue: [ aStream nextPutAll: ','; cr ]].
1
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   238
        aStream
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   239
                tab: indent;
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   240
                nextPutAll: '],';
4
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 1
diff changeset
   241
                cr;
1
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   242
                yourself.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   243
        aStream
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   244
                tab: indent;
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   245
                nextPutAll: '"class" : [';
4
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 1
diff changeset
   246
                cr;
1
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   247
                yourself.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   248
        methods := self classMethods values asArray asSortedCollection: [:a :b | a selector <= b selector].
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   249
        1 to: methods size do: [:index | | methodStructure | 
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   250
                methodStructure := methods at: index.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   251
                methodStructure writeJsonOn: aStream indent: indent + 1.
4
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 1
diff changeset
   252
                index < methods size ifTrue: [ aStream nextPutAll: ','; cr ]].
1
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   253
        aStream
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   254
                tab: indent;
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   255
                nextPutAll: ']'.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   256
        self isClassExtension
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   257
                ifFalse: [ 
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   258
                        aStream
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   259
                                nextPutAll: ',';
4
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 1
diff changeset
   260
                                cr;
1
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   261
                                tab: indent;
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   262
                                nextPutAll: '"README.md" : ';
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   263
                                yourself.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   264
                        self comment writeCypressJsonOn: aStream forHtml: true indent: indent ].
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   265
        aStream
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   266
                nextPutAll: ',';
4
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 1
diff changeset
   267
                cr;
1
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   268
                tab: indent;
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   269
                nextPutAll: '"properties.json" : ';
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   270
                yourself.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   271
        self properties writeCypressJsonOn: aStream forHtml: true indent: indent.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   272
        indent := indent - 1.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   273
        aStream
4
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 1
diff changeset
   274
                cr;
1
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   275
                tab: indent;
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   276
                nextPutAll: ' }'
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   277
4
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 1
diff changeset
   278
    "Modified: / 30-08-2012 / 14:50:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   279
! !
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   280
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   281
!CypressClassStructure class methodsFor:'documentation'!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   282
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   283
version_SVN
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   284
    ^ '$Id::                                                                                                                        $'
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   285
! !