diff --git a/repository/Grease-Core.package/GRPlatform.class/instance/asMethodReturningString.named..st b/repository/Grease-Core.package/GRPlatform.class/instance/asMethodReturningString.named..st new file mode 100644 index 00000000..364e0bf1 --- /dev/null +++ b/repository/Grease-Core.package/GRPlatform.class/instance/asMethodReturningString.named..st @@ -0,0 +1,21 @@ +file library +asMethodReturningString: aByteArrayOrString named: aSymbol + "Generates the source of a method named aSymbol that returns aByteArrayOrString as a String. + + This implementation answers a String formatted like so + + aSymbol + ^ aByteArrayOrString + + Subclasses need to override this method if the dialect needs changes to support Unicode string literals" + ^ String streamContents: [ :stream | + stream + nextPutAll: aSymbol; + nextPut: Character cr. + stream + tab; + nextPutAll: '^ '''. + aByteArrayOrString greaseString do: [ :each | + each = $' ifTrue: [ stream nextPut: $' ]. + stream nextPut: each ]. + stream nextPut: $' ] \ No newline at end of file diff --git a/repository/Grease-Core.package/GRPlatform.class/instance/base64Encode..st b/repository/Grease-Core.package/GRPlatform.class/instance/base64Encode..st new file mode 100644 index 00000000..1e94d60c --- /dev/null +++ b/repository/Grease-Core.package/GRPlatform.class/instance/base64Encode..st @@ -0,0 +1,4 @@ +encoding +base64Encode: aByteArray + "Base64 encode the given byte array and answer the result as a String." + self subclassResponsibility \ No newline at end of file diff --git a/repository/Grease-Core.package/GRPlatform.class/instance/doSilently..st b/repository/Grease-Core.package/GRPlatform.class/instance/doSilently..st new file mode 100644 index 00000000..89a96f47 --- /dev/null +++ b/repository/Grease-Core.package/GRPlatform.class/instance/doSilently..st @@ -0,0 +1,4 @@ +file library +doSilently: aBlock + "Suspend all notifications value evaluating the given block." + ^ aBlock value \ No newline at end of file diff --git a/repository/Grease-GemStone-Core.package/GRGemStonePlatform.class/instance/base64Encode..st b/repository/Grease-GemStone-Core.package/GRGemStonePlatform.class/instance/base64Encode..st new file mode 100644 index 00000000..4a3631f8 --- /dev/null +++ b/repository/Grease-GemStone-Core.package/GRGemStonePlatform.class/instance/base64Encode..st @@ -0,0 +1,3 @@ +encoding +base64Encode: aByteArray + ^ (Base64MimeConverter mimeEncode: aByteArray readStream) contents diff --git a/repository/Grease-Pharo100-Core.package/GRPharoPlatform.class/instance/base64Encode..st b/repository/Grease-Pharo100-Core.package/GRPharoPlatform.class/instance/base64Encode..st new file mode 100644 index 00000000..4cb93d20 --- /dev/null +++ b/repository/Grease-Pharo100-Core.package/GRPharoPlatform.class/instance/base64Encode..st @@ -0,0 +1,3 @@ +encoding +base64Encode: aByteArray + ^ aByteArray base64Encoded \ No newline at end of file diff --git a/repository/Grease-Pharo60-Core.package/GRPharoPlatform.class/instance/base64Encode..st b/repository/Grease-Pharo60-Core.package/GRPharoPlatform.class/instance/base64Encode..st new file mode 100644 index 00000000..f5e24f05 --- /dev/null +++ b/repository/Grease-Pharo60-Core.package/GRPharoPlatform.class/instance/base64Encode..st @@ -0,0 +1,3 @@ +encoding +base64Encode: aByteArray + ^ (Base64MimeConverter base64Encode: aByteArray readStream) contents diff --git a/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/base64Encode..st b/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/base64Encode..st new file mode 100644 index 00000000..4cb93d20 --- /dev/null +++ b/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/base64Encode..st @@ -0,0 +1,3 @@ +encoding +base64Encode: aByteArray + ^ aByteArray base64Encoded \ No newline at end of file diff --git a/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/base64Encode..st b/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/base64Encode..st new file mode 100644 index 00000000..4cb93d20 --- /dev/null +++ b/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/base64Encode..st @@ -0,0 +1,3 @@ +encoding +base64Encode: aByteArray + ^ aByteArray base64Encoded \ No newline at end of file diff --git a/repository/Grease-Squeak5-Core.package/GRPharoPlatform.class/instance/base64Encode..st b/repository/Grease-Squeak5-Core.package/GRPharoPlatform.class/instance/base64Encode..st new file mode 100644 index 00000000..4cb93d20 --- /dev/null +++ b/repository/Grease-Squeak5-Core.package/GRPharoPlatform.class/instance/base64Encode..st @@ -0,0 +1,3 @@ +encoding +base64Encode: aByteArray + ^ aByteArray base64Encoded \ No newline at end of file diff --git a/repository/Grease-Squeak6-Core.package/GRPharoPlatform.class/instance/base64Encode..st b/repository/Grease-Squeak6-Core.package/GRPharoPlatform.class/instance/base64Encode..st new file mode 100644 index 00000000..4cb93d20 --- /dev/null +++ b/repository/Grease-Squeak6-Core.package/GRPharoPlatform.class/instance/base64Encode..st @@ -0,0 +1,3 @@ +encoding +base64Encode: aByteArray + ^ aByteArray base64Encoded \ No newline at end of file diff --git a/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/runCase.st b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/runCase.st new file mode 100644 index 00000000..9465625f --- /dev/null +++ b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/runCase.st @@ -0,0 +1,3 @@ +running +runCase + GRPlatform current doSilently: [ super runCase ] \ No newline at end of file diff --git a/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/supportsUnicode.st b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/supportsUnicode.st new file mode 100644 index 00000000..a22719d9 --- /dev/null +++ b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/supportsUnicode.st @@ -0,0 +1,10 @@ +private +supportsUnicode + "dynamically try to figure out whether the current dialect supports Unicode" + ^ [ + String + with: (Character value: 16r1F1F3) + with: (Character value: 16r1F1F1). + true + ] on: Error + do: [ :error | false ] \ No newline at end of file diff --git a/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testBase64Encode.st b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testBase64Encode.st new file mode 100644 index 00000000..d1a2b4be --- /dev/null +++ b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testBase64Encode.st @@ -0,0 +1,14 @@ +tests +testBase64Encode + | input | + input := #( + (97 110 121 32 99 97 114 110 97 108 32 112 108 101 97 115 117 114 101 46) 'YW55IGNhcm5hbCBwbGVhc3VyZS4=' + (97 110 121 32 99 97 114 110 97 108 32 112 108 101 97 115 117 114 101) 'YW55IGNhcm5hbCBwbGVhc3VyZQ==' + (97 110 121 32 99 97 114 110 97 108 32 112 108 101 97 115 117 114) 'YW55IGNhcm5hbCBwbGVhc3Vy' + (97 110 121 32 99 97 114 110 97 108 32 112 108 101 97 115 117) 'YW55IGNhcm5hbCBwbGVhc3U=' + (97 110 121 32 99 97 114 110 97 108 32 112 108 101 97 115) 'YW55IGNhcm5hbCBwbGVhcw=='). + 1 to: input size by: 2 do: [ :index | + | decoded expected | + decoded := GRPlatform current base64Encode: (input at: index) asByteArray. + expected := input at: index + 1. + self assert: decoded = expected ] \ No newline at end of file diff --git a/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testCompileAsciiString.st b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testCompileAsciiString.st new file mode 100644 index 00000000..cfe0c3ff --- /dev/null +++ b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testCompileAsciiString.st @@ -0,0 +1,17 @@ +tests-file library +testCompileAsciiString + | selector expected source | + + self supportsUnicode ifFalse: [ + ^ self ]. + + selector := #stringMethod. + expected := 'test ok'. + source := GRPlatform current asMethodReturningString: expected named: selector. + [ + | actual | + GRPlatform current compile: source into: self class classified: 'private'. + actual := self perform: selector. + self assert: expected = actual + ] ensure: [ + GRPlatform current removeSelector: #stringMethod from: self class ] \ No newline at end of file diff --git a/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testCompileUnicodeString.st b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testCompileUnicodeString.st new file mode 100644 index 00000000..a02b1ac5 --- /dev/null +++ b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testCompileUnicodeString.st @@ -0,0 +1,15 @@ +tests-file library +testCompileUnicodeString + | selector expected source | + selector := #stringMethod. + expected := String + with: (Character value: 16r1F1F3) + with: (Character value: 16r1F1F1). + source := GRPlatform current asMethodReturningString: expected named: selector. + [ + | actual | + GRPlatform current compile: source into: self class classified: 'private'. + actual := self perform: selector. + self assert: expected = actual + ] ensure: [ + GRPlatform current removeSelector: #stringMethod from: self class ] \ No newline at end of file