extensions.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 04 Jun 2019 12:33:53 +0100
changeset 0 8f9f6be6af89
permissions -rw-r--r--
Initial port from Pharo Based on 305ae856d4b551 from https://github.com/svenvc/ston.git
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/ston' }"!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
!Association methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	self class == STON associationClass
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
		ifTrue: [ stonWriter writeAssociation: self ]
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
		ifFalse: [ super stonOn: stonWriter ]
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
!Bag methodsFor:'*STON-Core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
	"Use a map with element-occurences pairs as representation"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
	stonWriter 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
		writeObject: self 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
		do: [ stonWriter encodeMap: contents ]
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
!Bag class methodsFor:'*STON-Core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
fromSton: stonReader
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
	"Read a map representation containing element/occurences pairs"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
	
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
	| bag |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
	bag := self new.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
	stonReader parseMapDo: [ :key :value |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
		bag add: key withOccurrences: value ].
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
	^ bag
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
!Boolean methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
stonContainSubObjects 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
	^ false
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
!Boolean methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
	stonWriter writeBoolean: self
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
!ByteArray methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
stonContainSubObjects 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
	^ false
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
!ByteArray methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
        "Use a hex representation"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
        
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
        stonWriter writeObject: self listSingleton: self hexPrintString
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
    "Modified: / 04-06-2019 / 11:06:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
!ByteArray class methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
fromSton: stonReader
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
        "Use a hex representation"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
        
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
        ^ self fromHexString: stonReader parseListSingleton
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
    "Modified: / 04-06-2019 / 11:07:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
!Character methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
	stonWriter writeObject: self listSingleton: self asString
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
!Character class methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
fromSton: stonReader
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
	^ stonReader parseListSingleton first
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
!CharacterArray class methodsFor:'Compatibility-Pharo'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
findFirstInString: aString  inSet: inclusionMap  startingAt: start
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
        | i stringSize |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
        inclusionMap size ~= 256 ifTrue: [ ^0 ].
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
        i := start.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
        stringSize := aString size.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
        [ i <= stringSize and: [ (inclusionMap at: (aString basicAt: i) codePoint + 1) = 0 ] ] whileTrue: [ 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
                i := i + 1 ].
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
        i > stringSize ifTrue: [ ^0 ].
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
        ^i
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
    "Created: / 20-05-2020 / 13:24:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
!Class methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
	stonWriter 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
		writeObject: self 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
		listSingleton: self name asSymbol
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
!Class class methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
fromSton: stonReader
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
	| theClassName theClass |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
	theClassName := stonReader parseListSingleton.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
	theClass := self environment at: theClassName.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
	^ theClass
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
!ClassDescription methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
stonContainSubObjects
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
	^ false
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
!Collection methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
	"For collections we chose to write a list of elements as delivered by #do:
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
	This is not the best or most correct solution for all subclasses though,
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
	so some will revert to standard object behavior or chose another solution"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
	
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
	stonWriter writeObject: self do: [
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
		stonWriter encodeList: self ]
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
!Collection class methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
fromSton: stonReader
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
	"For collections we chose to instanciate based a list of elements using #add:
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
	This is not the best or most correct solution for all subclasses though,
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
	so some will revert to standard object behavior or chose another solution."
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
	
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
	| collection |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
	collection := self new.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
	stonReader parseListDo: [ :each |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
		collection add: each ].
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
	^ collection
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
!Color methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
stonContainSubObjects
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
	^ false
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
!Color methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
        | name |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
        (self isTranslucent or: [ (name := self name) = nil ])
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
                ifTrue: [ 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
                        stonWriter writeObject: self streamMap: [ :map |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
                                #(red green blue alpha) do: [ :each | 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
                                        map at: each put: ((self perform: each) roundTo: 0.001) ] ] ]
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
                ifFalse: [ 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
                        stonWriter writeObject: self listSingleton: name ]
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
    "Modified: / 20-05-2020 / 13:27:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
!Color class methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
fromSton: stonReader
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
        | representation |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
        representation := stonReader parseSimpleValue.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
        ^ representation isArray
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
                ifTrue: [ 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
                        self name: representation first ]
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
                ifFalse: [ 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
                        self 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
                                r: (representation at: #red) 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
                                g: (representation at: #green) 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
                                b: (representation at: #blue) 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
                                alpha: (representation at: #alpha) ]
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
    "Modified: / 20-05-2020 / 12:22:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
!Date methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
stonContainSubObjects 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
	^ false
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
!Date methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
	"Use an ISO style YYYY-MM-DD representation.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
	Since my current implementation is time zone offset sensitive, the offset has to be included."
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
	| representation |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
	representation := self offset isZero
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
		ifTrue: [ 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
			String new: 11 streamContents: [ :out | 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
				self printOn: out format: #(3 2 1 $- 1 1 2).
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
				out nextPut: $Z ] ]
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207
		ifFalse: [ 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
			String new: 32 streamContents: [ :out | 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
				self printOn: out format: #(3 2 1 $- 1 1 2).
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
				out nextPut: (self offset positive ifTrue: [ $+ ] ifFalse: [ $- ]).
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   211
				self offset hours abs printOn: out base: 10 length: 2 padded: true.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   212
				out nextPut: $:.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   213
				self offset minutes abs printOn: out base: 10 length: 2 padded: true.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   214
				self offset seconds = 0 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   215
					ifFalse:[ 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
						out nextPut: $:; print: self offset seconds abs truncated ] ] ].
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
	stonWriter writeObject: self listSingleton: representation
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
!Date class methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   221
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
fromSton: stonReader
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
	"Read a ISO YYYY-MM-DD format.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   224
	Since my current implementation is time zone offset sensitive, the offset has to be taken into account.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   225
	A missing offset results in the local timezone offset to be used"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
	
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
	| readStream date |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
	readStream := stonReader parseListSingleton readStream.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
	date := self readFrom: readStream.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
	readStream atEnd
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
		ifFalse: [ | offset |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
			offset := DateAndTime readTimezoneOffsetFrom: readStream.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
			offset = date offset 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
				ifFalse: [ date start: (date start translateTo: offset) ] ].
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
	^ date
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
!Dictionary methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   240
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
	"Instances of STON mapClass will be encoded directly, without a class tag.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
	Other (sub)classes will be encoded with a class tag and will use a map representation. "
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
	
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
	self class == STON mapClass
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
		ifTrue: [ 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
			stonWriter writeMap: self ]
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
		ifFalse: [ 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
			stonWriter 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
				writeObject: self 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
				do: [ stonWriter encodeMap: self ] ]
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
!Dictionary methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   255
stonPostReferenceResolution
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
        "When references were resolved in me, the hash of my keys might have changed.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   257
        Check if I am still healthy and rehash me if not."
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   258
        
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   259
        self rehash
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   260
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   261
    "Modified: / 04-06-2019 / 11:08:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   262
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   263
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   264
!Dictionary class methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   265
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   266
fromSton: stonReader
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   267
	"Instances of STON mapClass will be read directly and won't arrive here.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   268
	Other (sub)classes will use this method."
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   269
	
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   270
	| dictionary |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   271
	dictionary := self new.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   272
	stonReader parseMapDo: [ :key :value |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   273
		dictionary at: key put: value ].
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   274
	^ dictionary
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   275
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   276
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   277
!Filename methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   278
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   279
stonContainSubObjects
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   280
	^ false
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   281
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   282
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   283
!Filename methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   284
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   285
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   286
        true
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   287
                ifTrue: [ | diskFilePath |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   288
                        diskFilePath := self pathName.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   289
                        stonWriter 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   290
                                writeObject: self 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   291
                                named: STONFileReference stonName 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   292
                                listSingleton: diskFilePath ]
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   293
                ifFalse: [ 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   294
                        super stonOn: stonWriter ]
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   295
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   296
    "Modified: / 04-06-2019 / 12:31:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   297
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   298
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   299
!Fraction methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   301
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   302
	stonWriter writeFraction: self
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   303
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   304
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
!Integer methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   306
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   307
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   308
	stonWriter writeInteger: self
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   309
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   310
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   311
!Interval methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   312
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   313
fromSton: stonReader
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   314
	"Overwritten to get back the standard object behavior"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   315
	
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   316
	stonReader parseNamedInstVarsFor: self
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   317
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   318
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   319
!Interval methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
	"Overwritten to get back the standard object behavior"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   324
	stonWriter writeObject: self
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   325
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   326
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
!Interval class methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   328
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   329
fromSton: stonReader
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
	"Overwritten to get back the standard object behavior"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
	
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   332
	^ self new
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
		fromSton: stonReader;
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
		yourself
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   335
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   336
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   337
!Metaclass methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   338
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   339
stonName
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   340
	^ #Class
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   341
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   342
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   343
!Metaclass methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   344
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   345
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   346
        stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   347
                writeObject: self 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   348
                listSingleton: self theNonMetaclass name asSymbol
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   349
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   350
    "Modified: / 04-06-2019 / 11:20:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   351
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   352
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   353
!Metaclass class methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   354
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   355
fromSton: stonReader
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   356
	| theClassName theClass theMetaclass |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   357
	theClassName := stonReader parseListSingleton.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   358
	theClass := self environment at: theClassName.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   359
	theMetaclass := theClass class.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   360
	^ theMetaclass
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   361
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   362
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   363
!Number methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   364
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   365
stonContainSubObjects 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   366
	^ false
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   367
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   368
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   369
!Number methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   370
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   371
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   372
	stonWriter writeFloat: self asFloat
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   373
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   374
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   375
!Object methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   376
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   377
fromSton: stonReader
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   378
	"Decode non-variable classes from a map of their instance variables and values.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   379
	Override to customize and add a matching #toSton: (see implementors)."
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   380
	
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   381
	self class isVariable 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   382
		ifTrue: [
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   383
			stonReader error: 'custom #fromSton: implementation needed for variable/indexable class' ]
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   384
		ifFalse: [
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   385
			stonReader parseNamedInstVarsFor: self ]
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   386
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   387
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   388
!Object methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   389
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   390
isStonReference
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   391
	^ false
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   392
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   393
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   394
!Object methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   395
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   396
stonContainSubObjects
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   397
	"Return true if I contain subObjects that should be processed, false otherwise.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   398
	Overwrite when necessary. See also #stonProcessSubObjects:"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   399
	
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   400
	^ true
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   401
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   402
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   403
!Object methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   404
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   405
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   406
	"Encode non-variable classes with a map of their instance variable and values.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   407
	Override to customize and add a matching #fromSton: (see implementors)."
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   408
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   409
	self class isVariable 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   410
		ifTrue: [
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   411
			stonWriter error: 'custom #stonOn: implementation needed for variable/indexable class' ]
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   412
		ifFalse: [
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   413
			stonWriter writeObject: self ]
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   414
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   415
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   416
!Object methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   417
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   418
stonPostReferenceResolution
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   419
	"Hook that is called when references were resolved processing this object or one of its sub objects. This will most probably influence hash values. Override to take appropriate action."
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   420
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   421
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   422
!Object methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   423
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   424
stonProcessSubObjects: block
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   425
	"Execute block to (potentially) change each of my subObjects.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   426
	In general, all instance and indexable variables are processed.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   427
	Overwrite when necessary. Not used when #stonContainSubObjects returns false."
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   428
	
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   429
	1 to: self class instSize do: [ :each |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   430
		self instVarAt: each put: (block value: (self instVarAt: each)) ].
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   431
	(self class isVariable and: [ self class isBytes not ])
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   432
		ifTrue: [
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   433
			1 to: self basicSize do: [ :each |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   434
				self basicAt: each put: (block value: (self basicAt: each)) ] ]
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   435
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   436
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   437
!Object methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   438
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   439
stonShouldWriteNilInstVars
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   440
	"Return true if my instance variables that are nil should be written out, 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   441
	false otherwise. Overwrite when necessary. By default, return false."
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   442
	
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   443
	^ false
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   444
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   445
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   446
!Object class methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   447
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   448
fromSton: stonReader
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   449
	"Create a new instance and delegate decoding to instance side.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   450
	Override only when new instance should be created directly (see implementors). "
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   451
	
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   452
	^ self new
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   453
		fromSton: stonReader;
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   454
		yourself
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   455
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   456
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   457
!Object class methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   458
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   459
stonAllInstVarNames
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   460
	"Override to encode my instances using a custom set of instance variables or to define their order."
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   461
	
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   462
	^ self allInstVarNames 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   463
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   464
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   465
!Object class methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   466
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   467
stonName
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   468
	"Override to encode my instances using a different class name.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   469
	Use symbols as class name/tag."
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   470
	
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   471
	^ self name
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   472
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   473
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   474
!OrderedDictionary methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   475
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   476
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   477
	"I store my instances as maps. When in JSON mode, 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   478
	encode me directly, without a class tag, keeping the order."
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   479
	
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   480
	stonWriter jsonMode 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   481
		ifTrue: [ 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   482
			stonWriter encodeMap: self ] 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   483
		ifFalse: [ 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   484
			stonWriter 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   485
				writeObject: self 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   486
				do: [ stonWriter encodeMap: self ] ]
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   487
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   488
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   489
!OrderedDictionary class methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   490
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   491
fromSton: stonReader
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   492
	"My instances are stored as maps."
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   493
	
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   494
	| dictionary |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   495
	dictionary := self new.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   496
	stonReader parseMapDo: [ :key :value |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   497
		dictionary at: key put: value ].
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   498
	^ dictionary
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   499
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   500
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   501
!Point methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   502
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   503
fromSton: stonReader
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   504
	stonReader parseListDo: [ :each :index |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   505
		index = 1 ifTrue: [ x := each ].
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   506
		index = 2 ifTrue: [ y := each ] ]
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   507
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   508
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   509
!Point methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   510
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   511
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   512
	stonWriter writeObject: self streamShortList: [ :array |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   513
		array add: x; add: y ]
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   514
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   515
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   516
!RunArray class methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   517
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   518
fromSton: stonReader
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   519
	"Overwritten to get back the standard object behavior"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   520
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   521
	^ self new
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   522
		fromSton: stonReader;
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   523
		yourself
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   524
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   525
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   526
!SequenceableCollection methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   527
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   528
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   529
        "Instances of STON listClass will be encoded directly, without a class tag.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   530
        Other (sub)classes will be encoded with a class tag and will use a list representation. "
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   531
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   532
        ((self class == STON listClass) or:[ self class == ImmutableArray ])
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   533
                ifTrue: [ stonWriter writeList: self ]
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   534
                ifFalse: [ super stonOn: stonWriter ]
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   535
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   536
    "Modified: / 20-05-2020 / 11:19:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   537
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   538
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   539
!SequenceableCollection class methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   540
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   541
fromSton: stonReader
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   542
	"Overwritten to use #streamContents: and #nextPut:"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   543
	
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   544
	^ self streamContents: [ :stream |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   545
		stonReader parseListDo: [ :each |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   546
			stream nextPut: each ] ]
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   547
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   548
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   549
!Set methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   550
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   551
stonPostReferenceResolution
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   552
        "When references were resolved in me, the hash of my elements might have changed.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   553
        Check if I am still healthy and rehash me if not."
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   554
        
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   555
        self rehash
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   556
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   557
    "Modified: / 04-06-2019 / 11:18:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   558
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   559
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   560
!String methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   561
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   562
stonContainSubObjects 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   563
	^ false
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   564
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   565
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   566
!String methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   567
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   568
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   569
	stonWriter writeString: self
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   570
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   571
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   572
!Symbol methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   573
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   574
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   575
	stonWriter writeSymbol: self
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   576
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   577
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   578
!Time methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   579
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   580
stonContainSubObjects 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   581
	^ false
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   582
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   583
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   584
!Time methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   585
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   586
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   587
	"Use an ISO style HH:MM:SS.N representation (with optional nanoseconds)"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   588
	 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   589
	stonWriter writeObject: self listSingleton: 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   590
		(String streamContents: [ :stream |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   591
			self print24: true showSeconds: true on: stream ])
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   592
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   593
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   594
!Time class methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   595
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   596
fromSton: stonReader
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   597
	^ self readFrom: stonReader parseListSingleton readStream
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   598
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   599
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   600
!Timestamp methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   601
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   602
stonContainSubObjects 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   603
	^ false
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   604
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   605
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   606
!Timestamp methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   607
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   608
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   609
	"Use an ISO representation with all details YYYY-MM-DDTHH:MM:SS.N+TZ (with optional nanoseconds and timezone offset)"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   610
	
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   611
	stonWriter writeObject: self listSingleton: 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   612
		(String streamContents: [ :stream |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   613
			self printOn: stream withLeadingSpace: false ])
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   614
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   615
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   616
!Timestamp class methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   617
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   618
fromSton: stonReader
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   619
	^ self readFrom: stonReader parseListSingleton readStream
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   620
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   621
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   622
!URL class methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   623
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   624
fromSton: stonReader
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   625
    | representation |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   626
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   627
    representation := stonReader parseSimpleValue.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   628
    representation isArray ifTrue:[ 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   629
        ^ representation first asURL
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   630
    ] ifFalse:[ 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   631
        self error: 'Not yet supported'
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   632
    ].
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   633
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   634
    "Created: / 20-05-2020 / 11:54:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   635
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   636
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   637
!UndefinedObject methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   638
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   639
stonContainSubObjects 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   640
	^ false
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   641
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   642
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   643
!UndefinedObject methodsFor:'*ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   644
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   645
stonOn: stonWriter
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   646
	stonWriter writeNull
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   647
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   648
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   649
!stx_goodies_ston class methodsFor:'documentation'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   650
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   651
extensionsVersion_HG
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   652
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   653
    ^ '$Changeset: <not expanded> $'
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   654
! !