extensions.st
author jv
Fri, 31 Aug 2012 18:32:17 +0000
changeset 6 65414b4bbe93
parent 5 0fd3156a3a9f
child 8 5d48f4894483
permissions -rw-r--r--
- CypressStructure added: #asChangeSet #asChangeSetOn: #changesInto: #changesOn: - CypressPackageStructure added: #changesInto: #changesOn: changed: #fromPackage: - CypressClassStructure added: #changesInto: #changesOn: - CypressMethodStructure added: #changesInto: #changesOn: #fromJs: - CypressPackageReader added: #asChangeSet changed: #readClassStructureFromEntry: #readExtensionClassStructureFromEntry: #readPackageStructure - 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
2
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
     3
!Array methodsFor:'*Cypress-Structure'!
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
     4
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
     5
asCypressPropertyObject
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
     6
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
     7
	^self collect: [:each | each asCypressPropertyObject ]
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
     8
! !
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
     9
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    10
!Array methodsFor:'*Cypress-Structure'!
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    11
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    12
writeCypressJsonOn: aStream forHtml: forHtml indent: startIndent
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    13
4
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 3
diff changeset
    14
        | indent |
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 3
diff changeset
    15
        aStream 
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 3
diff changeset
    16
                nextPutAll: '[';
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 3
diff changeset
    17
                cr.
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 3
diff changeset
    18
        indent := startIndent + 1.
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 3
diff changeset
    19
        1 to: self size do: [:index | | item | 
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 3
diff changeset
    20
                item := self at: index.
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 3
diff changeset
    21
                aStream tab: indent.
5
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
    22
                item writeCypressJsonOn: aStream forHtml: "forHtml"false indent: indent.
4
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 3
diff changeset
    23
                index < self size ifTrue: [ aStream nextPutAll: ','; cr ]].
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 3
diff changeset
    24
        self size = 0 ifTrue: [ aStream tab: indent ].
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 3
diff changeset
    25
        aStream nextPutAll: ' ]'
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 3
diff changeset
    26
5
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
    27
    "Modified: / 31-08-2012 / 09:16:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    28
! !
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    29
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    30
!Boolean methodsFor:'*Cypress-Structure'!
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    31
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    32
writeCypressJsonOn: aStream forHtml: forHtml indent: startIndent
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    33
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    34
	aStream 
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    35
		nextPutAll: self printString
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    36
! !
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    37
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    38
!Character methodsFor:'*Cypress-Structure'!
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    39
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    40
isSafeForHTTP
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    41
        "whether a character is 'safe', or needs to be escaped when used, eg, in a URL"
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    42
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    43
        ^  asciivalue < 128
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    44
                and: [ self isAlphaNumeric
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    45
                                or: [ '.-_' includes: self ]]
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    46
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    47
    "Modified: / 30-08-2012 / 13:57:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    48
! !
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    49
1
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    50
!CharacterArray methodsFor:'Compatibility-Cuis'!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    51
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    52
withLineEndings: lineEndString
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    53
    | stringColl |
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    54
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    55
    self assert: lineEndString size == 1.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    56
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    57
    stringColl := self asStringCollection.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    58
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    59
    ^stringColl
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    60
        asStringWith: lineEndString first 
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    61
        from:1 to:(stringColl size) 
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    62
        compressTabs:false 
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    63
        final:nil
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    64
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    65
    "Created: / 30-08-2012 / 11:27:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    66
! !
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    67
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    68
!CharacterArray class methodsFor:'Compatibility-Cuis'!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    69
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    70
lfString
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    71
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    72
    ^String with: Character lf.
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    73
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    74
    "Created: / 30-08-2012 / 11:27:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    75
! !
8a5b7afa28ff - First shot
jv
parents:
diff changeset
    76
2
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    77
!Class methodsFor:'*Cypress-Definitions'!
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    78
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    79
asCypressClassDefinition
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    80
	^CypressClassDefinition
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    81
		name: self name
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    82
		superclassName: self superclass name
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    83
		category: self category 
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    84
		instVarNames: self instVarNames
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    85
		classInstVarNames: self class instVarNames
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    86
		comment: self comment
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    87
! !
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    88
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    89
!Dictionary methodsFor:'*Cypress-Structure'!
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    90
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    91
asCypressPropertyObject
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    92
    self associations do: [ :assoc | self at: assoc key put: assoc value asCypressPropertyObject ]
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    93
! !
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    94
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    95
!Dictionary methodsFor:'*Cypress-Structure'!
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    96
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    97
writeCypressJsonOn: aStream forHtml: forHtml indent: startIndent
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    98
    | indent count |
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
    99
    indent := startIndent.
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   100
    aStream
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   101
        nextPutAll: '{';
4
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 3
diff changeset
   102
        cr.
2
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   103
    count := 0.
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   104
    indent := indent + 1.
4
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 3
diff changeset
   105
    (self keys asSortedCollection: [ :a :b | a <= b ])
2
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   106
        do: [ :key | 
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   107
            | value |
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   108
            value := self at: key.
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   109
            count := count + 1.
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   110
            aStream tab: indent.
5
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   111
            key writeCypressJsonOn: aStream forHtml: "forHtml"false indent: indent.
2
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   112
            aStream nextPutAll: ' : '.
5
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   113
            value writeCypressJsonOn: aStream forHtml: "forHtml"false indent: indent.
2
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   114
            count < self size
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   115
                ifTrue: [ 
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   116
                    aStream
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   117
                        nextPutAll: ',';
4
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 3
diff changeset
   118
                        cr ] ].
2
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   119
    self size = 0
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   120
        ifTrue: [ aStream tab: indent ].
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   121
    aStream nextPutAll: ' }'
4
207b76be6bcd Fixes to write a package in Cypress format
jv
parents: 3
diff changeset
   122
5
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   123
    "Modified: / 31-08-2012 / 09:17:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   124
! !
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   125
3
9a409f9edb67 - CypressSnapshotTest
jv
parents: 2
diff changeset
   126
!Method methodsFor:'converting'!
9a409f9edb67 - CypressSnapshotTest
jv
parents: 2
diff changeset
   127
9a409f9edb67 - CypressSnapshotTest
jv
parents: 2
diff changeset
   128
asCypressMethodDefinition
9a409f9edb67 - CypressSnapshotTest
jv
parents: 2
diff changeset
   129
9a409f9edb67 - CypressSnapshotTest
jv
parents: 2
diff changeset
   130
        ^CypressMethodDefinition 
9a409f9edb67 - CypressSnapshotTest
jv
parents: 2
diff changeset
   131
                className: (self methodClass isMeta ifTrue: [ self methodClass theNonMetaClass ] ifFalse: [ self methodClass ]) name
9a409f9edb67 - CypressSnapshotTest
jv
parents: 2
diff changeset
   132
                classIsMeta: self methodClass isMeta
9a409f9edb67 - CypressSnapshotTest
jv
parents: 2
diff changeset
   133
                selector: self selector
9a409f9edb67 - CypressSnapshotTest
jv
parents: 2
diff changeset
   134
                category: self category
6
65414b4bbe93 - CypressStructure
jv
parents: 5
diff changeset
   135
                source: self source
3
9a409f9edb67 - CypressSnapshotTest
jv
parents: 2
diff changeset
   136
                timeStamp: self timeStamp
9a409f9edb67 - CypressSnapshotTest
jv
parents: 2
diff changeset
   137
9a409f9edb67 - CypressSnapshotTest
jv
parents: 2
diff changeset
   138
    "Created: / 30-08-2012 / 14:05:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9a409f9edb67 - CypressSnapshotTest
jv
parents: 2
diff changeset
   139
! !
9a409f9edb67 - CypressSnapshotTest
jv
parents: 2
diff changeset
   140
2
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   141
!Number methodsFor:'*Cypress-Structure'!
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   142
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   143
writeCypressJsonOn: aStream forHtml: forHtml indent: startIndent
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   144
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   145
	aStream 
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   146
		nextPutAll: self printString
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   147
! !
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   148
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   149
!Object methodsFor:'*Cypress-Structure'!
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   150
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   151
asCypressPropertyObject
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   152
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   153
	^self
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   154
! !
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   155
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   156
!String methodsFor:'*Cypress-Structure'!
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   157
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   158
asCypressPropertyObject
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   159
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   160
	^self unescapePercents withLineEndings: String lfString
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   161
! !
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   162
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   163
!String methodsFor:'*Cypress-Structure'!
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   164
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   165
encodeForHTTP
5
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   166
        "change dangerous characters to their %XX form, for use in HTTP transactions"
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   167
        | encodedStream |
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   168
        encodedStream := WriteStream on: (String new).
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   169
        
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   170
        1 to: self size do: [ :n | | c |
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   171
                c := self at: n.
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   172
                c isSafeForHTTP ifTrue: [ encodedStream nextPut: c ] ifFalse: [
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   173
                        encodedStream nextPut: $%.
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   174
                        encodedStream nextPutAll: ((c asciiValue // 16) printStringRadix: 16).
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   175
                        encodedStream nextPutAll: ((c asciiValue \\ 16) printStringRadix: 16).
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   176
                ]
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   177
        ].
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   178
        ^encodedStream contents.
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   179
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   180
    "Modified: / 30-08-2012 / 11:31:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   181
! !
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   182
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   183
!String methodsFor:'*Cypress-Structure'!
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   184
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   185
writeCypressJsonOn: aStream forHtml: forHtml indent: startIndent
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   186
5
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   187
        aStream 
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   188
                nextPutAll: '"';
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   189
                nextPutAll: ("forHtml"false
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   190
                        ifTrue: [ (self withLineEndings: String lfString) encodeForHTTP ]
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   191
                        ifFalse: [ self withLineEndings: String lfString ]);
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   192
                nextPutAll: '"'
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   193
0fd3156a3a9f - Some more work on package loading
jv
parents: 4
diff changeset
   194
    "Modified: / 31-08-2012 / 09:17:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   195
! !
a26b35650f67 - CypressMethodStructure
jv
parents: 1
diff changeset
   196
1
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   197
!stx_goodies_cypress class methodsFor:'documentation'!
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   198
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   199
extensionsVersion_SVN
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   200
    ^ '$Id::                                                                                                                        $'
8a5b7afa28ff - First shot
jv
parents:
diff changeset
   201
! !