CharacterArray.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 04 May 2010 12:50:05 +0100
branchjv
changeset 17763 019bb9c842c5
parent 17761 b0e5971141bc
child 17765 e3ee4a675abc
permissions -rw-r--r--
Merged with /trunk
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
64
af7aeb79b25e Initial revision
claus
parents:
diff changeset
     1
"
af7aeb79b25e Initial revision
claus
parents:
diff changeset
     2
 COPYRIGHT (c) 1994 by Claus Gittinger
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
     3
	      All Rights Reserved
64
af7aeb79b25e Initial revision
claus
parents:
diff changeset
     4
af7aeb79b25e Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
af7aeb79b25e Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
af7aeb79b25e Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
af7aeb79b25e Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
af7aeb79b25e Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
af7aeb79b25e Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
af7aeb79b25e Initial revision
claus
parents:
diff changeset
    11
"
5342
5010cea0ffd4 match-escape character definition in one place
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    12
"{ Package: 'stx:libbasic' }"
5010cea0ffd4 match-escape character definition in one place
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    13
3926
4cc33691696a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3879
diff changeset
    14
ByteArray variableByteSubclass:#CharacterArray
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
    15
	instanceVariableNames:''
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
    16
	classVariableNames:'PreviousMatch DecoderTables EncoderTables DecodingFailedSignal
11348
366457915f90 care for wide-character strings in copyReplaceStringWithString
Claus Gittinger <cg@exept.de>
parents: 11345
diff changeset
    17
		EncodingFailedSignal LastString LastShiftTable'
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
    18
	poolDictionaries:''
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
    19
	category:'Collections-Text'
64
af7aeb79b25e Initial revision
claus
parents:
diff changeset
    20
!
af7aeb79b25e Initial revision
claus
parents:
diff changeset
    21
1849
9f35f5934ec6 added msdos-latin1 en/decoder (code = #msdos850)
Claus Gittinger <cg@exept.de>
parents: 1669
diff changeset
    22
!CharacterArray class methodsFor:'documentation'!
64
af7aeb79b25e Initial revision
claus
parents:
diff changeset
    23
82
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    24
copyright
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    25
"
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    26
 COPYRIGHT (c) 1994 by Claus Gittinger
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
    27
	      All Rights Reserved
82
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    28
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    29
 This software is furnished under a license and may be used
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    30
 only in accordance with the terms of that license and with the
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    31
 inclusion of the above copyright notice.   This software may not
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    32
 be provided or otherwise made available to, or used by, any
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    33
 other person.  No title to or ownership of the software is
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    34
 hereby transferred.
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    35
"
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    36
!
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    37
64
af7aeb79b25e Initial revision
claus
parents:
diff changeset
    38
documentation
af7aeb79b25e Initial revision
claus
parents:
diff changeset
    39
"
255
2b2c5c0facab *** empty log message ***
claus
parents: 247
diff changeset
    40
    CharacterArray is a superclass for all kinds of Strings (i.e.
68
59faa75185ba *** empty log message ***
claus
parents: 64
diff changeset
    41
    (singleByte-)Strings, TwoByteStrings and whatever comes in the future.
154
d4236ec280a6 *** empty log message ***
claus
parents: 138
diff changeset
    42
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
    43
    This class is abstract, meaning that there are no instances of it.
2537
9398b135cec4 comment
Claus Gittinger <cg@exept.de>
parents: 2520
diff changeset
    44
    All this class does is provide common protocol for concrete subclasses.
1290
15ba3221b89b documentation
Claus Gittinger <cg@exept.de>
parents: 1272
diff changeset
    45
15ba3221b89b documentation
Claus Gittinger <cg@exept.de>
parents: 1272
diff changeset
    46
    [author:]
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
    47
	Claus Gittinger
1290
15ba3221b89b documentation
Claus Gittinger <cg@exept.de>
parents: 1272
diff changeset
    48
15ba3221b89b documentation
Claus Gittinger <cg@exept.de>
parents: 1272
diff changeset
    49
    [see also:]
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
    50
	String TwoByteString
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
    51
	StringCollection
64
af7aeb79b25e Initial revision
claus
parents:
diff changeset
    52
"
af7aeb79b25e Initial revision
claus
parents:
diff changeset
    53
! !
af7aeb79b25e Initial revision
claus
parents:
diff changeset
    54
2728
7569e45a4d15 raise error signal if anything goes wrong while decoding.
Claus Gittinger <cg@exept.de>
parents: 2721
diff changeset
    55
!CharacterArray class methodsFor:'initialization'!
7569e45a4d15 raise error signal if anything goes wrong while decoding.
Claus Gittinger <cg@exept.de>
parents: 2721
diff changeset
    56
7569e45a4d15 raise error signal if anything goes wrong while decoding.
Claus Gittinger <cg@exept.de>
parents: 2721
diff changeset
    57
initialize
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
    58
    DecodingFailedSignal isNil ifTrue:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
    59
	DecodingFailedSignal := DecodingError.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
    60
	DecodingFailedSignal notifierString:'error during decode'.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
    61
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
    62
	EncodingFailedSignal :=EncodingError.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
    63
	EncodingFailedSignal notifierString:'error during encode'.
5440
ba9207f592c9 only init once
Claus Gittinger <cg@exept.de>
parents: 5352
diff changeset
    64
    ]
2728
7569e45a4d15 raise error signal if anything goes wrong while decoding.
Claus Gittinger <cg@exept.de>
parents: 2721
diff changeset
    65
7569e45a4d15 raise error signal if anything goes wrong while decoding.
Claus Gittinger <cg@exept.de>
parents: 2721
diff changeset
    66
    "
7569e45a4d15 raise error signal if anything goes wrong while decoding.
Claus Gittinger <cg@exept.de>
parents: 2721
diff changeset
    67
     CharacterArray initialize
7569e45a4d15 raise error signal if anything goes wrong while decoding.
Claus Gittinger <cg@exept.de>
parents: 2721
diff changeset
    68
    "
7569e45a4d15 raise error signal if anything goes wrong while decoding.
Claus Gittinger <cg@exept.de>
parents: 2721
diff changeset
    69
2833
f8600b7cb86d provide access to signals
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
    70
    "Modified: 3.8.1997 / 18:15:59 / cg"
2728
7569e45a4d15 raise error signal if anything goes wrong while decoding.
Claus Gittinger <cg@exept.de>
parents: 2721
diff changeset
    71
! !
7569e45a4d15 raise error signal if anything goes wrong while decoding.
Claus Gittinger <cg@exept.de>
parents: 2721
diff changeset
    72
1849
9f35f5934ec6 added msdos-latin1 en/decoder (code = #msdos850)
Claus Gittinger <cg@exept.de>
parents: 1669
diff changeset
    73
!CharacterArray class methodsFor:'instance creation'!
64
af7aeb79b25e Initial revision
claus
parents:
diff changeset
    74
af7aeb79b25e Initial revision
claus
parents:
diff changeset
    75
basicNew
af7aeb79b25e Initial revision
claus
parents:
diff changeset
    76
    "return a new empty string"
af7aeb79b25e Initial revision
claus
parents:
diff changeset
    77
af7aeb79b25e Initial revision
claus
parents:
diff changeset
    78
    ^ self basicNew:0
af7aeb79b25e Initial revision
claus
parents:
diff changeset
    79
!
af7aeb79b25e Initial revision
claus
parents:
diff changeset
    80
2734
ab167dc4c5db checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
    81
fromBytes:aByteCollection
ab167dc4c5db checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
    82
    "return an instance of the receiver class,
ab167dc4c5db checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
    83
     taking untranslated bytes from the argument, aByteCollection.
ab167dc4c5db checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
    84
     Only useful, when reading twoByteStrings from external sources."
ab167dc4c5db checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
    85
ab167dc4c5db checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
    86
    |mySize nBytes newString dstIdx|
ab167dc4c5db checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
    87
ab167dc4c5db checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
    88
    nBytes := aByteCollection size.
ab167dc4c5db checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
    89
    mySize := self basicNew bitsPerCharacter.
ab167dc4c5db checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
    90
    mySize == 16 ifTrue:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
    91
	newString := self basicNew:(nBytes // 2).
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
    92
	dstIdx := 1.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
    93
	aByteCollection pairWiseDo:[:hi :lo |
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
    94
	    newString at:dstIdx put:(Character value:(hi bitShift:8)+lo).
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
    95
	    dstIdx := dstIdx + 1
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
    96
	].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
    97
	^ newString.
2734
ab167dc4c5db checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
    98
    ].
ab167dc4c5db checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
    99
ab167dc4c5db checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
   100
    ^ (self basicNew:nBytes) replaceFrom:1 with:aByteCollection
ab167dc4c5db checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
   101
ab167dc4c5db checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
   102
    "
ab167dc4c5db checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
   103
     TwoByteString fromBytes:#[16r21 16r21]
ab167dc4c5db checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
   104
    "
ab167dc4c5db checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
   105
ab167dc4c5db checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
   106
    "Modified: 30.6.1997 / 20:08:37 / cg"
ab167dc4c5db checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
   107
!
ab167dc4c5db checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
   108
64
af7aeb79b25e Initial revision
claus
parents:
diff changeset
   109
fromString:aString
af7aeb79b25e Initial revision
claus
parents:
diff changeset
   110
    "return a copy of the argument, aString"
af7aeb79b25e Initial revision
claus
parents:
diff changeset
   111
68
59faa75185ba *** empty log message ***
claus
parents: 64
diff changeset
   112
    ^ (self basicNew:(aString size)) replaceFrom:1 with:aString
59faa75185ba *** empty log message ***
claus
parents: 64
diff changeset
   113
59faa75185ba *** empty log message ***
claus
parents: 64
diff changeset
   114
    "TwoByteString fromString:'hello'"
581
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   115
!
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   116
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   117
fromStringCollection:aCollectionOfStrings
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   118
    "return new string formed by concatenating a copy of the argument, aString"
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   119
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   120
    ^ self fromStringCollection:aCollectionOfStrings separatedBy:''
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   121
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   122
    "
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   123
     String fromStringCollection:#('hello' 'world' 'how' 'about' 'this')
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   124
    "
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   125
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   126
    "Created: 20.11.1995 / 15:26:59 / cg"
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   127
!
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   128
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   129
fromStringCollection:aCollectionOfStrings separatedBy:aSeparatorString
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   130
    "return new string formed by concatenating a copy of the argument, aString"
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   131
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   132
    |newString first|
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   133
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   134
    newString := ''.
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   135
    first := true.
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   136
    aCollectionOfStrings do:[:s |
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   137
	first ifFalse:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   138
	    newString := newString , aSeparatorString
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   139
	] ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   140
	    first := false
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   141
	].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   142
	newString := newString , s
581
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   143
    ].
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   144
    ^ newString
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   145
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   146
    "
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   147
     String fromStringCollection:#('hello' 'world' 'how' 'about' 'this') separatedBy:' '
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   148
    "
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   149
8a991a4cb738 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   150
    "Created: 20.11.1995 / 15:32:17 / cg"
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   151
!
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   152
5757
2511dcddce73 utf8 string decoding
Claus Gittinger <cg@exept.de>
parents: 5741
diff changeset
   153
fromUTF8Bytes:aByteCollection
5758
30e0cc2213ac utf8 string decoding
Claus Gittinger <cg@exept.de>
parents: 5757
diff changeset
   154
    "return a new string which represents the characters as decoded
30e0cc2213ac utf8 string decoding
Claus Gittinger <cg@exept.de>
parents: 5757
diff changeset
   155
     from the utf8 encoded bytes, aByteCollection.
30e0cc2213ac utf8 string decoding
Claus Gittinger <cg@exept.de>
parents: 5757
diff changeset
   156
     Returns either a normal String, or a TwoByteString instance.
6810
a055eb19e9d3 caych invalid encodings
Claus Gittinger <cg@exept.de>
parents: 6809
diff changeset
   157
     Only useful, when reading twoByteStrings from external sources.
a055eb19e9d3 caych invalid encodings
Claus Gittinger <cg@exept.de>
parents: 6809
diff changeset
   158
     This only handles up-to 16bit characters"
5757
2511dcddce73 utf8 string decoding
Claus Gittinger <cg@exept.de>
parents: 5741
diff changeset
   159
7876
56ab739f1843 +decodeUTF8
Claus Gittinger <cg@exept.de>
parents: 7797
diff changeset
   160
    ^ self decodeFromUTF8:aByteCollection.
5757
2511dcddce73 utf8 string decoding
Claus Gittinger <cg@exept.de>
parents: 5741
diff changeset
   161
2511dcddce73 utf8 string decoding
Claus Gittinger <cg@exept.de>
parents: 5741
diff changeset
   162
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   163
     CharacterArray fromUTF8Bytes:#[ 16r41 16r42 ]
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   164
     CharacterArray fromUTF8Bytes:#[ 16rC1 16r02 ]
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   165
     CharacterArray fromUTF8Bytes:#[ 16rE0 16r81 16r02 ]
6810
a055eb19e9d3 caych invalid encodings
Claus Gittinger <cg@exept.de>
parents: 6809
diff changeset
   166
     CharacterArray fromUTF8Bytes:#[ 16rEF 16rBF 16rBF ]
a055eb19e9d3 caych invalid encodings
Claus Gittinger <cg@exept.de>
parents: 6809
diff changeset
   167
a055eb19e9d3 caych invalid encodings
Claus Gittinger <cg@exept.de>
parents: 6809
diff changeset
   168
   rfc2279 examples:
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   169
     CharacterArray fromUTF8Bytes:#[ 16r41 16rE2 16r89 16rA2 16rCE 16r91 16r2E ]
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   170
     CharacterArray fromUTF8Bytes:#[ 16rED 16r95 16r9C 16rEA 16rB5 16rAD 16rEC 16r96 16rB4 ]
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   171
     CharacterArray fromUTF8Bytes:#[ 16rE6 16r97 16rA5 16rE6 16r9C 16rAC 16rE8 16rAA 16r9E ]
6810
a055eb19e9d3 caych invalid encodings
Claus Gittinger <cg@exept.de>
parents: 6809
diff changeset
   172
a055eb19e9d3 caych invalid encodings
Claus Gittinger <cg@exept.de>
parents: 6809
diff changeset
   173
   invalid:
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   174
     CharacterArray fromUTF8Bytes:#[ 16rC0 16r80 ]
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   175
     CharacterArray fromUTF8Bytes:#[ 16rE0 16r80 16r80 ]
5757
2511dcddce73 utf8 string decoding
Claus Gittinger <cg@exept.de>
parents: 5741
diff changeset
   176
    "
2511dcddce73 utf8 string decoding
Claus Gittinger <cg@exept.de>
parents: 5741
diff changeset
   177
!
2511dcddce73 utf8 string decoding
Claus Gittinger <cg@exept.de>
parents: 5741
diff changeset
   178
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   179
new
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   180
    "return a new empty string"
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   181
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   182
    ^ self basicNew:0
9425
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   183
!
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   184
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   185
readSmalltalkStringFrom:aStreamOrString onError:exceptionBlock
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   186
    "read & return the next String from the (character-)stream aStream;
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   187
     skipping all whitespace first; return the value of exceptionBlock,
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   188
     if no string can be read. The sequence of characters as read from the
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   189
     stream must be one as stored via storeOn: or storeString."
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   190
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   191
    |str collected char|
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   192
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   193
    str := aStreamOrString readStream.
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   194
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   195
    "skip whiteSpace"
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   196
    str skipSeparators.
11320
0cf84c372ccf Unicode handling:
Stefan Vogel <sv@exept.de>
parents: 11292
diff changeset
   197
0cf84c372ccf Unicode handling:
Stefan Vogel <sv@exept.de>
parents: 11292
diff changeset
   198
    (str nextOrNil == $') ifTrue:[
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   199
	collected := self writeStream.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   200
	[str atEnd] whileFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   201
	    char := str next.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   202
	    char == $' ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   203
		"/ look for another quote
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   204
		str peekOrNil ~~ $' ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   205
		    "end of string reached"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   206
		    ^ collected contents.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   207
		].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   208
		"eat doubled quote"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   209
		str next.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   210
	    ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   211
	    ((char ~~ Character return) or:[str peekOrNil ~~ Character lf]) ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   212
		"compress CRLF to LF, but keep a single CR"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   213
		collected nextPut:char.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   214
	    ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   215
	].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   216
	"if we come here, we reached the end without finding a closing $'"
9425
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   217
    ].
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   218
    ^ exceptionBlock value
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   219
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   220
    "
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   221
     String readFrom:('''hello world''' readStream)
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   222
     String readFrom:('''hello '''' world''' readStream)
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   223
     String readFrom:('1 ''hello'' ' readStream)
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   224
     String readFrom:('1 ''hello'' ' readStream) onError:['foobar']
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   225
    "
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   226
e5a6bf5ad36e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9403
diff changeset
   227
    "Created: / 05-07-2006 / 16:41:04 / cg"
10045
bbd328940fb4 care for cr-lf when reading a smalltalk string
Claus Gittinger <cg@exept.de>
parents: 9845
diff changeset
   228
    "Modified: / 06-10-2006 / 14:05:32 / cg"
11243
4bf099f5bb56 CharacterArray class>>#writeStream - answer a CharacterWriteStrem
Stefan Vogel <sv@exept.de>
parents: 11229
diff changeset
   229
!
4bf099f5bb56 CharacterArray class>>#writeStream - answer a CharacterWriteStrem
Stefan Vogel <sv@exept.de>
parents: 11229
diff changeset
   230
4bf099f5bb56 CharacterArray class>>#writeStream - answer a CharacterWriteStrem
Stefan Vogel <sv@exept.de>
parents: 11229
diff changeset
   231
writeStream
4bf099f5bb56 CharacterArray class>>#writeStream - answer a CharacterWriteStrem
Stefan Vogel <sv@exept.de>
parents: 11229
diff changeset
   232
    "create a write-stream on an instance of the receiver-class"
4bf099f5bb56 CharacterArray class>>#writeStream - answer a CharacterWriteStrem
Stefan Vogel <sv@exept.de>
parents: 11229
diff changeset
   233
4bf099f5bb56 CharacterArray class>>#writeStream - answer a CharacterWriteStrem
Stefan Vogel <sv@exept.de>
parents: 11229
diff changeset
   234
    ^ CharacterWriteStream on:(self new:50).
4bf099f5bb56 CharacterArray class>>#writeStream - answer a CharacterWriteStrem
Stefan Vogel <sv@exept.de>
parents: 11229
diff changeset
   235
4bf099f5bb56 CharacterArray class>>#writeStream - answer a CharacterWriteStrem
Stefan Vogel <sv@exept.de>
parents: 11229
diff changeset
   236
    "
4bf099f5bb56 CharacterArray class>>#writeStream - answer a CharacterWriteStrem
Stefan Vogel <sv@exept.de>
parents: 11229
diff changeset
   237
     String writeStream
4bf099f5bb56 CharacterArray class>>#writeStream - answer a CharacterWriteStrem
Stefan Vogel <sv@exept.de>
parents: 11229
diff changeset
   238
    "
64
af7aeb79b25e Initial revision
claus
parents:
diff changeset
   239
! !
af7aeb79b25e Initial revision
claus
parents:
diff changeset
   240
9265
6221befad9c5 compatibility
Claus Gittinger <cg@exept.de>
parents: 9230
diff changeset
   241
!CharacterArray class methodsFor:'Compatibility-VW'!
6221befad9c5 compatibility
Claus Gittinger <cg@exept.de>
parents: 9230
diff changeset
   242
6221befad9c5 compatibility
Claus Gittinger <cg@exept.de>
parents: 9230
diff changeset
   243
fromIntegerArray: anArray
6221befad9c5 compatibility
Claus Gittinger <cg@exept.de>
parents: 9230
diff changeset
   244
    "Answer a new instance of the receiver that is created from the argument, anArray."
6221befad9c5 compatibility
Claus Gittinger <cg@exept.de>
parents: 9230
diff changeset
   245
6221befad9c5 compatibility
Claus Gittinger <cg@exept.de>
parents: 9230
diff changeset
   246
    | new |
6221befad9c5 compatibility
Claus Gittinger <cg@exept.de>
parents: 9230
diff changeset
   247
6221befad9c5 compatibility
Claus Gittinger <cg@exept.de>
parents: 9230
diff changeset
   248
    new := self new: anArray size.
6221befad9c5 compatibility
Claus Gittinger <cg@exept.de>
parents: 9230
diff changeset
   249
    1 to: anArray size do:[:index |
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   250
	new at: index put: (anArray at: index) asCharacter
9265
6221befad9c5 compatibility
Claus Gittinger <cg@exept.de>
parents: 9230
diff changeset
   251
    ].
6221befad9c5 compatibility
Claus Gittinger <cg@exept.de>
parents: 9230
diff changeset
   252
    ^new
6221befad9c5 compatibility
Claus Gittinger <cg@exept.de>
parents: 9230
diff changeset
   253
6221befad9c5 compatibility
Claus Gittinger <cg@exept.de>
parents: 9230
diff changeset
   254
    "
6221befad9c5 compatibility
Claus Gittinger <cg@exept.de>
parents: 9230
diff changeset
   255
     String fromIntegerArray: #[8 127]
6221befad9c5 compatibility
Claus Gittinger <cg@exept.de>
parents: 9230
diff changeset
   256
    "
6221befad9c5 compatibility
Claus Gittinger <cg@exept.de>
parents: 9230
diff changeset
   257
! !
6221befad9c5 compatibility
Claus Gittinger <cg@exept.de>
parents: 9230
diff changeset
   258
2728
7569e45a4d15 raise error signal if anything goes wrong while decoding.
Claus Gittinger <cg@exept.de>
parents: 2721
diff changeset
   259
!CharacterArray class methodsFor:'Signal constants'!
7569e45a4d15 raise error signal if anything goes wrong while decoding.
Claus Gittinger <cg@exept.de>
parents: 2721
diff changeset
   260
7569e45a4d15 raise error signal if anything goes wrong while decoding.
Claus Gittinger <cg@exept.de>
parents: 2721
diff changeset
   261
decodingFailedSignal
2833
f8600b7cb86d provide access to signals
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
   262
    "return the signal, raised when decoding of a string is not possible
2728
7569e45a4d15 raise error signal if anything goes wrong while decoding.
Claus Gittinger <cg@exept.de>
parents: 2721
diff changeset
   263
     due to invalid characters contained in the source.
7569e45a4d15 raise error signal if anything goes wrong while decoding.
Claus Gittinger <cg@exept.de>
parents: 2721
diff changeset
   264
     This may happen for example, if a non EUC coded 8-bit string
7569e45a4d15 raise error signal if anything goes wrong while decoding.
Claus Gittinger <cg@exept.de>
parents: 2721
diff changeset
   265
     is attempted to be decoded into a JIS string."
7569e45a4d15 raise error signal if anything goes wrong while decoding.
Claus Gittinger <cg@exept.de>
parents: 2721
diff changeset
   266
7569e45a4d15 raise error signal if anything goes wrong while decoding.
Claus Gittinger <cg@exept.de>
parents: 2721
diff changeset
   267
    ^ DecodingFailedSignal
7569e45a4d15 raise error signal if anything goes wrong while decoding.
Claus Gittinger <cg@exept.de>
parents: 2721
diff changeset
   268
2833
f8600b7cb86d provide access to signals
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
   269
    "Created: 28.6.1997 / 20:09:55 / cg"
f8600b7cb86d provide access to signals
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
   270
    "Modified: 3.8.1997 / 18:16:47 / cg"
f8600b7cb86d provide access to signals
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
   271
!
f8600b7cb86d provide access to signals
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
   272
f8600b7cb86d provide access to signals
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
   273
encodingFailedSignal
f8600b7cb86d provide access to signals
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
   274
    "return the (query-) signal, raised when encoding of a string is not possible
f8600b7cb86d provide access to signals
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
   275
     due to invalid characters contained in the source."
f8600b7cb86d provide access to signals
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
   276
f8600b7cb86d provide access to signals
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
   277
    ^ EncodingFailedSignal
f8600b7cb86d provide access to signals
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
   278
2728
7569e45a4d15 raise error signal if anything goes wrong while decoding.
Claus Gittinger <cg@exept.de>
parents: 2721
diff changeset
   279
    "Modified: 28.6.1997 / 20:09:35 / cg"
2833
f8600b7cb86d provide access to signals
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
   280
    "Created: 3.8.1997 / 18:16:40 / cg"
2728
7569e45a4d15 raise error signal if anything goes wrong while decoding.
Claus Gittinger <cg@exept.de>
parents: 2721
diff changeset
   281
! !
7569e45a4d15 raise error signal if anything goes wrong while decoding.
Claus Gittinger <cg@exept.de>
parents: 2721
diff changeset
   282
1849
9f35f5934ec6 added msdos-latin1 en/decoder (code = #msdos850)
Claus Gittinger <cg@exept.de>
parents: 1669
diff changeset
   283
!CharacterArray class methodsFor:'cleanup'!
991
f0b45a4b82d2 first attempt in encoding/decoding for different character representations (mac/msdos etc.)
Claus Gittinger <cg@exept.de>
parents: 986
diff changeset
   284
f0b45a4b82d2 first attempt in encoding/decoding for different character representations (mac/msdos etc.)
Claus Gittinger <cg@exept.de>
parents: 986
diff changeset
   285
lowSpaceCleanup
f0b45a4b82d2 first attempt in encoding/decoding for different character representations (mac/msdos etc.)
Claus Gittinger <cg@exept.de>
parents: 986
diff changeset
   286
    "cleanup in low-memory situations"
f0b45a4b82d2 first attempt in encoding/decoding for different character representations (mac/msdos etc.)
Claus Gittinger <cg@exept.de>
parents: 986
diff changeset
   287
f0b45a4b82d2 first attempt in encoding/decoding for different character representations (mac/msdos etc.)
Claus Gittinger <cg@exept.de>
parents: 986
diff changeset
   288
    DecoderTables := EncoderTables := nil
f0b45a4b82d2 first attempt in encoding/decoding for different character representations (mac/msdos etc.)
Claus Gittinger <cg@exept.de>
parents: 986
diff changeset
   289
f0b45a4b82d2 first attempt in encoding/decoding for different character representations (mac/msdos etc.)
Claus Gittinger <cg@exept.de>
parents: 986
diff changeset
   290
    "
f0b45a4b82d2 first attempt in encoding/decoding for different character representations (mac/msdos etc.)
Claus Gittinger <cg@exept.de>
parents: 986
diff changeset
   291
     CharacterArray lowSpaceCleanup
f0b45a4b82d2 first attempt in encoding/decoding for different character representations (mac/msdos etc.)
Claus Gittinger <cg@exept.de>
parents: 986
diff changeset
   292
    "
f0b45a4b82d2 first attempt in encoding/decoding for different character representations (mac/msdos etc.)
Claus Gittinger <cg@exept.de>
parents: 986
diff changeset
   293
f0b45a4b82d2 first attempt in encoding/decoding for different character representations (mac/msdos etc.)
Claus Gittinger <cg@exept.de>
parents: 986
diff changeset
   294
    "Created: 22.2.1996 / 16:30:30 / cg"
f0b45a4b82d2 first attempt in encoding/decoding for different character representations (mac/msdos etc.)
Claus Gittinger <cg@exept.de>
parents: 986
diff changeset
   295
    "Modified: 22.2.1996 / 17:58:05 / cg"
f0b45a4b82d2 first attempt in encoding/decoding for different character representations (mac/msdos etc.)
Claus Gittinger <cg@exept.de>
parents: 986
diff changeset
   296
! !
f0b45a4b82d2 first attempt in encoding/decoding for different character representations (mac/msdos etc.)
Claus Gittinger <cg@exept.de>
parents: 986
diff changeset
   297
7421
4e6c6edb90d9 category rename
Claus Gittinger <cg@exept.de>
parents: 7349
diff changeset
   298
!CharacterArray class methodsFor:'encoding & decoding'!
1202
200f7cd0a457 moved encode/decode stuff into class methods / added big5/gb support
Claus Gittinger <cg@exept.de>
parents: 1145
diff changeset
   299
7876
56ab739f1843 +decodeUTF8
Claus Gittinger <cg@exept.de>
parents: 7797
diff changeset
   300
decodeFromUTF8:aStringOrByteCollection
56ab739f1843 +decodeUTF8
Claus Gittinger <cg@exept.de>
parents: 7797
diff changeset
   301
    "return a string which represents the characters as decoded
56ab739f1843 +decodeUTF8
Claus Gittinger <cg@exept.de>
parents: 7797
diff changeset
   302
     from the utf8 encoded bytes, aByteCollection.
56ab739f1843 +decodeUTF8
Claus Gittinger <cg@exept.de>
parents: 7797
diff changeset
   303
     Returns either a normal String, or a TwoByteString instance.
56ab739f1843 +decodeUTF8
Claus Gittinger <cg@exept.de>
parents: 7797
diff changeset
   304
     Only useful, when reading twoByteStrings from external sources.
56ab739f1843 +decodeUTF8
Claus Gittinger <cg@exept.de>
parents: 7797
diff changeset
   305
     This only handles up-to 16bit characters."
56ab739f1843 +decodeUTF8
Claus Gittinger <cg@exept.de>
parents: 7797
diff changeset
   306
8124
ca774158b317 code cleanup (removed old obsolete encoding stuff)
Claus Gittinger <cg@exept.de>
parents: 8102
diff changeset
   307
    ^ CharacterEncoderImplementations::ISO10646_to_UTF8 decodeString:aStringOrByteCollection
7876
56ab739f1843 +decodeUTF8
Claus Gittinger <cg@exept.de>
parents: 7797
diff changeset
   308
56ab739f1843 +decodeUTF8
Claus Gittinger <cg@exept.de>
parents: 7797
diff changeset
   309
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   310
     CharacterArray fromUTF8Bytes:#[ 16r41 16r42 ]
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   311
     CharacterArray fromUTF8Bytes:#[ 16rC1 16r02 ]
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   312
     CharacterArray fromUTF8Bytes:#[ 16rE0 16r81 16r02 ]
7876
56ab739f1843 +decodeUTF8
Claus Gittinger <cg@exept.de>
parents: 7797
diff changeset
   313
     CharacterArray fromUTF8Bytes:#[ 16rEF 16rBF 16rBF ]
56ab739f1843 +decodeUTF8
Claus Gittinger <cg@exept.de>
parents: 7797
diff changeset
   314
56ab739f1843 +decodeUTF8
Claus Gittinger <cg@exept.de>
parents: 7797
diff changeset
   315
   rfc2279 examples:
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   316
     CharacterArray fromUTF8Bytes:#[ 16r41 16rE2 16r89 16rA2 16rCE 16r91 16r2E ]
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   317
     CharacterArray fromUTF8Bytes:#[ 16rED 16r95 16r9C 16rEA 16rB5 16rAD 16rEC 16r96 16rB4 ]
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   318
     CharacterArray fromUTF8Bytes:#[ 16rE6 16r97 16rA5 16rE6 16r9C 16rAC 16rE8 16rAA 16r9E ]
7876
56ab739f1843 +decodeUTF8
Claus Gittinger <cg@exept.de>
parents: 7797
diff changeset
   319
56ab739f1843 +decodeUTF8
Claus Gittinger <cg@exept.de>
parents: 7797
diff changeset
   320
   invalid:
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   321
     CharacterArray fromUTF8Bytes:#[ 16rC0 16r80 ]
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   322
     CharacterArray fromUTF8Bytes:#[ 16rE0 16r80 16r80 ]
7876
56ab739f1843 +decodeUTF8
Claus Gittinger <cg@exept.de>
parents: 7797
diff changeset
   323
    "
443
Claus Gittinger <cg@exept.de>
parents: 428
diff changeset
   324
! !
Claus Gittinger <cg@exept.de>
parents: 428
diff changeset
   325
1849
9f35f5934ec6 added msdos-latin1 en/decoder (code = #msdos850)
Claus Gittinger <cg@exept.de>
parents: 1669
diff changeset
   326
!CharacterArray class methodsFor:'pattern matching'!
64
af7aeb79b25e Initial revision
claus
parents:
diff changeset
   327
5342
5010cea0ffd4 match-escape character definition in one place
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   328
matchEscapeCharacter
5010cea0ffd4 match-escape character definition in one place
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   329
    "return the character used to escape a matchCharacter
5010cea0ffd4 match-escape character definition in one place
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   330
     (i.e. make it a regular character in a matchPattern)"
5010cea0ffd4 match-escape character definition in one place
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   331
5010cea0ffd4 match-escape character definition in one place
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   332
    ^ $\
5010cea0ffd4 match-escape character definition in one place
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   333
!
5010cea0ffd4 match-escape character definition in one place
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   334
327
183f094cfd72 last with old match code
claus
parents: 326
diff changeset
   335
matchScan:matchScanArray from:matchStart to:matchStop with:aString from:start to:stop ignoreCase:ignoreCase
183f094cfd72 last with old match code
claus
parents: 326
diff changeset
   336
    "helper for match; return true if the characters from start to stop in
183f094cfd72 last with old match code
claus
parents: 326
diff changeset
   337
     aString are matching the scan in matchScan from matchStart to matchStop.
328
claus
parents: 327
diff changeset
   338
     The matchScan is as created by asMatchScanArray.
327
183f094cfd72 last with old match code
claus
parents: 326
diff changeset
   339
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   340
     This algorithm is not at all the most efficient;
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   341
     for heavy duty pattern matching, an interface (primitive) to the regex
328
claus
parents: 327
diff changeset
   342
     pattern matching package should be added."
327
183f094cfd72 last with old match code
claus
parents: 326
diff changeset
   343
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   344
    |matchEntry
327
183f094cfd72 last with old match code
claus
parents: 326
diff changeset
   345
     mStart "{ Class: SmallInteger }"
183f094cfd72 last with old match code
claus
parents: 326
diff changeset
   346
     mStop  "{ Class: SmallInteger }"
183f094cfd72 last with old match code
claus
parents: 326
diff changeset
   347
     sStart "{ Class: SmallInteger }"
183f094cfd72 last with old match code
claus
parents: 326
diff changeset
   348
     sStop  "{ Class: SmallInteger }"
183f094cfd72 last with old match code
claus
parents: 326
diff changeset
   349
     mSize  "{ Class: SmallInteger }"
183f094cfd72 last with old match code
claus
parents: 326
diff changeset
   350
     sSize  "{ Class: SmallInteger }"
183f094cfd72 last with old match code
claus
parents: 326
diff changeset
   351
     index  "{ Class: SmallInteger }"
2561
205ee33decf9 removed unused var
Claus Gittinger <cg@exept.de>
parents: 2554
diff changeset
   352
     quickCheck matchLast nextMatchEntry
986
c3a9f590146d removed unused locals
Claus Gittinger <cg@exept.de>
parents: 915
diff changeset
   353
     checkChar included|
327
183f094cfd72 last with old match code
claus
parents: 326
diff changeset
   354
183f094cfd72 last with old match code
claus
parents: 326
diff changeset
   355
    mStart := matchStart.
183f094cfd72 last with old match code
claus
parents: 326
diff changeset
   356
    mStop := matchStop.
183f094cfd72 last with old match code
claus
parents: 326
diff changeset
   357
    sStart := start.
183f094cfd72 last with old match code
claus
parents: 326
diff changeset
   358
    sStop := stop.
183f094cfd72 last with old match code
claus
parents: 326
diff changeset
   359
183f094cfd72 last with old match code
claus
parents: 326
diff changeset
   360
    [true] whileTrue:[
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   361
"/ Transcript showCR:('match: ''' , (aString copyFrom:sStart to:sStop) ,
3537
916534e86f0c fixed match
Claus Gittinger <cg@exept.de>
parents: 3527
diff changeset
   362
"/                    ''' against:' , (matchScanArray copyFrom:mStart to:mStop) printString).
916534e86f0c fixed match
Claus Gittinger <cg@exept.de>
parents: 3527
diff changeset
   363
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   364
	mSize := mStop - mStart + 1.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   365
	sSize := sStop - sStart + 1.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   366
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   367
	"empty strings match"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   368
	(mSize == 0) ifTrue:[^ (sSize == 0)].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   369
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   370
	matchEntry := matchScanArray at:mStart.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   371
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   372
	"/ the most common case first:
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   373
	(sSize ~~ 0
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   374
	and:[(checkChar := (aString at:sStart)) = matchEntry]) ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   375
	    "advance by one and continue"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   376
	    mStart := mStart + 1.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   377
	    sStart := sStart + 1
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   378
	] ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   379
	    (matchEntry == #any) ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   380
		"restString empty -> no match"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   381
		(sSize == 0) ifTrue:[^ false].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   382
		"# matches single character"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   383
		((sSize == 1) and:[mSize == 1]) ifTrue:[^ true].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   384
		"advance by one and continue"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   385
		mStart := mStart + 1.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   386
		sStart := sStart + 1
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   387
	    ] ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   388
		(matchEntry == #anyString) ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   389
		    "* alone matches anything"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   390
		    (mSize == 1) ifTrue:[^ true].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   391
		    "restString empty & matchString not empty -> no match"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   392
		    (sSize == 0) ifTrue:[^ false].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   393
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   394
		    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   395
		     try to avoid some of the recursion by checking last
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   396
		     character and continue with shortened strings if possible
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   397
		    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   398
		    quickCheck := false.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   399
		    (mStop >= mStart) ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   400
			matchLast := matchScanArray at:mStop.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   401
			(matchLast ~~ #anyString) ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   402
			    (matchLast == #any) ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   403
				quickCheck := true
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   404
			    ] ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   405
				matchLast == (aString at:sStop) ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   406
				    quickCheck := true
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   407
				] ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   408
				    matchLast isString ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   409
					quickCheck := matchLast includes:(aString at:sStop)
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   410
				    ]
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   411
				]
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   412
			    ]
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   413
			]
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   414
		    ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   415
		    quickCheck ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   416
			"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   417
			 quickCheck ok, advance from the right
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   418
			"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   419
			mStop := mStop - 1.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   420
			sStop := sStop - 1
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   421
		    ] ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   422
			"/ no quick check;
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   423
			"/ look for the next character(s)
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   424
			"/ and try matching there
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   425
			"/ (to avoid recursion)
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   426
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   427
			mStart < mStop ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   428
			    nextMatchEntry := matchScanArray at:mStart+1.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   429
			    nextMatchEntry isCharacter ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   430
				sStart <= sStop ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   431
				    [true] whileTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   432
					ignoreCase ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   433
					    index := aString indexOf:nextMatchEntry startingAt:sStart
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   434
					] ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   435
					    index := aString findFirst:[:c | c asLowercase = nextMatchEntry asLowercase]
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   436
							   startingAt:sStart.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   437
					].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   438
					(index == 0 or:[index > sStop]) ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   439
					    ^ false
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   440
					].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   441
					(self matchScan:matchScanArray
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   442
					      from:(mStart + 1)
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   443
					      to:mStop
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   444
					      with:aString
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   445
					      from:index
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   446
					      to:sStop
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   447
					      ignoreCase:ignoreCase
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   448
					) ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   449
					    ^ true
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   450
					].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   451
					sStart := index + 1.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   452
				    ]
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   453
				]
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   454
			    ]
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   455
			].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   456
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   457
			"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   458
			 no quick check possible;
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   459
			 loop over all possible substrings
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   460
			"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   461
			index := sStart.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   462
			[index <= sStop] whileTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   463
			    (self matchScan:matchScanArray
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   464
				  from:(mStart + 1)
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   465
				  to:mStop
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   466
				  with:aString
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   467
				  from:index
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   468
				  to:sStop
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   469
				  ignoreCase:ignoreCase
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   470
			    ) ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   471
				^ true
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   472
			    ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   473
			    index := index + 1
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   474
			].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   475
			^ false
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   476
		    ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   477
		] ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   478
		    (matchEntry isString) ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   479
			"testString empty -> no match"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   480
			(sSize == 0) ifTrue:[^ false].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   481
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   482
			included := false.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   483
			"/ checkChar := aString at:sStart.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   484
			included := matchEntry includes:checkChar.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   485
			included ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   486
			    ignoreCase ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   487
				checkChar isUppercase ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   488
				    included := matchEntry includes:checkChar asLowercase.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   489
				] ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   490
				    included := matchEntry includes:checkChar asUppercase.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   491
				]
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   492
			    ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   493
			].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   494
			mStart := mStart + 1.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   495
			mSize := mSize - 1.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   496
			included ifFalse:[^ false].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   497
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   498
			((sSize == 1) and:[mSize == 0]) ifTrue:[^ true].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   499
			"cut off 1st char and continue"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   500
			sStart := sStart + 1
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   501
		    ] ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   502
			"/ must be single character
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   503
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   504
			"testString empty ?"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   505
			(sSize == 0) ifTrue:[^ false].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   506
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   507
			"first characters equal ?"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   508
			"/ checkChar := aString at:sStart.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   509
			ignoreCase ifFalse:[^ false].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   510
			(checkChar asUppercase ~= matchEntry asUppercase) ifTrue:[^ false].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   511
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   512
			"advance and continue"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   513
			mStart := mStart + 1.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   514
			sStart := sStart + 1
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   515
		    ]
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   516
		]
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   517
	    ]
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   518
	]
2519
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
   519
    ].
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
   520
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
   521
    "
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
   522
     |scanArray s|
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
   523
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
   524
     scanArray := self matchScanArrayFrom:'*hello'.
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
   525
     s := 'foo bar hello world'.
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
   526
     CharacterArray
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   527
	 matchScan:scanArray
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   528
	 from:1
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   529
	 to:scanArray size
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   530
	 with:s
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   531
	 from:1
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   532
	 to:s size
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   533
	 ignoreCase:false
2519
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
   534
    "
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
   535
    "
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
   536
     |scanArray s|
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
   537
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
   538
     scanArray := self matchScanArrayFrom:'*hello*'.
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
   539
     s := 'foo bar hello world'.
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
   540
     CharacterArray
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   541
	 matchScan:scanArray
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   542
	 from:1
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   543
	 to:scanArray size
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   544
	 with:s
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   545
	 from:1
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   546
	 to:s size
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   547
	 ignoreCase:false
2519
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
   548
    "
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
   549
3879
d586b598394b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3668
diff changeset
   550
    "Modified: / 15.10.1998 / 13:39:25 / cg"
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   551
!
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   552
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   553
matchScanArrayFrom:aString
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   554
    "scan a pattern string and decompose it into a scanArray.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   555
     This is processed faster (especially with character ranges), and
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   556
     can also be reused later. (if the same pattern is to be searched again)"
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   557
9282
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   558
    ^ self matchScanArrayFrom:aString escapeCharacter:(self matchEscapeCharacter)
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   559
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   560
    "
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   561
     String matchScanArrayFrom:'*ute*'
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   562
     String matchScanArrayFrom:'**ute**'
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   563
     String matchScanArrayFrom:'*uter'
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   564
     String matchScanArrayFrom:'\*uter'
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   565
     String matchScanArrayFrom:'[cC]#mpute[rR]'
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   566
     String matchScanArrayFrom:'[abcd]*'
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   567
     String matchScanArrayFrom:'[a-k]*'
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   568
     String matchScanArrayFrom:'*some*compl*ern*'
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   569
     String matchScanArrayFrom:'[a-'
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   570
     String matchScanArrayFrom:'[a-zA-Z]'
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   571
     String matchScanArrayFrom:'[a-z01234A-Z]'
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   572
    "
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   573
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   574
    "Modified: 2.4.1997 / 16:20:29 / cg"
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   575
!
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   576
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   577
matchScanArrayFrom:aString escapeCharacter:escape
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   578
    "scan a pattern string and decompose it into a scanArray.
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   579
     This is processed faster (especially with character ranges), and
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   580
     can also be reused later. (if the same pattern is to be searched again)"
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   581
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   582
    |coll
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   583
     idx "{ Class: SmallInteger }"
9282
f6d9d4129919 allow for different escape cahracter in matches
Claus Gittinger <cg@exept.de>
parents: 9275
diff changeset
   584
     end c1 c2 matchSet previous|
5342
5010cea0ffd4 match-escape character definition in one place
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   585
5487
cb4c5ae75c63 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5469
diff changeset
   586
    previous := nil.
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   587
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   588
    coll := OrderedCollection new.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   589
    idx := 1. end := aString size.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   590
    [idx <= end] whileTrue:[
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   591
	|char this|
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   592
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   593
	char := aString at:idx.
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   594
	char == $* ifTrue:[
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   595
	    previous ~~ #anyString ifTrue:[
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   596
		this := #anyString
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   597
	    ]
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   598
	] ifFalse:[
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   599
	    char == $# ifTrue:[
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   600
		previous ~~ #anyString ifTrue:[
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   601
		    this := #any
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   602
		]
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   603
	    ] ifFalse:[
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   604
		char == $[ ifTrue:[
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   605
		    matchSet := IdentitySet new.
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   606
		    idx := idx + 1.
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   607
		    idx > end ifTrue:[^ nil].
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   608
		    char := aString at:idx.
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   609
		    c1 := nil.
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   610
		    [char ~~ $]] whileTrue:[
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   611
			((char == $-) and:[c1 notNil]) ifTrue:[
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   612
			    idx := idx + 1.
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   613
			    idx > end ifTrue:[^ nil].
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   614
			    c2 := aString at:idx.
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   615
			    c1 to:c2 do:[:c | matchSet add:c].
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   616
			    c1 := nil.
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   617
			    idx := idx + 1.
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   618
			] ifFalse:[
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   619
			    (char ~~ $]) ifTrue:[
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   620
				matchSet add:char.
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   621
				c1 := char.
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   622
				idx := idx + 1
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   623
			    ]
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   624
			].
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   625
			idx > end ifTrue:[^ nil].
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   626
			char := aString at:idx
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   627
		    ].
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   628
		    this := matchSet asString
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   629
		] ifFalse:[
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   630
		    char == escape ifTrue:[
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   631
			idx := idx + 1.
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   632
			idx > end ifTrue:[
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   633
			    "/ mhmh - what should we do here ?
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   634
			    this := char
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   635
			] ifFalse:[
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   636
			    this := aString at:idx.
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   637
			]
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   638
		    ] ifFalse:[
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   639
			this := char
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   640
		    ]
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   641
		]
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   642
	    ]
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   643
	].
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   644
	this notNil ifTrue:[coll add:this. previous := this].
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   645
	idx := idx + 1
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   646
    ].
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   647
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   648
    ^ coll asArray
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   649
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   650
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   651
     String matchScanArrayFrom:'*ute*'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   652
     String matchScanArrayFrom:'**ute**'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   653
     String matchScanArrayFrom:'*uter'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   654
     String matchScanArrayFrom:'\*uter'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   655
     String matchScanArrayFrom:'[cC]#mpute[rR]'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   656
     String matchScanArrayFrom:'[abcd]*'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   657
     String matchScanArrayFrom:'[a-k]*'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   658
     String matchScanArrayFrom:'*some*compl*ern*'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   659
     String matchScanArrayFrom:'[a-'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   660
     String matchScanArrayFrom:'[a-zA-Z]'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   661
     String matchScanArrayFrom:'[a-z01234A-Z]'
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   662
    "
2519
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
   663
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
   664
    "Modified: 2.4.1997 / 16:20:29 / cg"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   665
! !
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   666
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   667
!CharacterArray class methodsFor:'queries'!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   668
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   669
isAbstract
11229
4fa83d5e806d comment
Claus Gittinger <cg@exept.de>
parents: 11179
diff changeset
   670
    "Return if this class is an abstract class.
4fa83d5e806d comment
Claus Gittinger <cg@exept.de>
parents: 11179
diff changeset
   671
     True is returned for CharacterArray here; false for subclasses.
4fa83d5e806d comment
Claus Gittinger <cg@exept.de>
parents: 11179
diff changeset
   672
     Abstract subclasses must redefine again."
4fa83d5e806d comment
Claus Gittinger <cg@exept.de>
parents: 11179
diff changeset
   673
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   674
    ^ self == CharacterArray
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   675
! !
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   676
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   677
!CharacterArray methodsFor:'Compatibility-ANSI'!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   678
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   679
addLineDelimiters
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   680
    "Ansi compatibility - same as withCRs"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   681
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   682
    ^ self withCRs
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   683
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   684
    "Modified: / 13.11.2001 / 19:16:25 / cg"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   685
! !
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   686
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   687
!CharacterArray methodsFor:'Compatibility-Dolphin'!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   688
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   689
argumentCount
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   690
    "same as #numArgs - return the number of arguments a message with myself
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   691
     as selector would take."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   692
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   693
    ^  self numArgs
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   694
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   695
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   696
copyExpanding:expandTable
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   697
    "return a copy of myself, with translations from the expandTable sliced in.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   698
     The argument is supposed to map from characters to either characters or strings."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   699
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   700
    |ds|
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   701
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   702
    ds := WriteStream on:(self species new).
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   703
    self do:[:eachChar |
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   704
	|repl|
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   705
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   706
	repl := expandTable at:eachChar ifAbsent:nil.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   707
	repl isNil ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   708
	    ds nextPut:eachChar
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   709
	] ifFalse:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   710
	    repl size == 0 ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   711
		ds nextPut:repl
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   712
	    ] ifFalse:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   713
		ds nextPutAll:repl
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   714
	    ]
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   715
	].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   716
    ].
6870
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   717
    ^ ds contents.
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   718
!
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   719
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   720
formatWith:aString
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   721
    "Compatibility method - do not use in new code.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   722
     same as #bindWith: for dolphin compatibility"
6870
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   723
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   724
    ^ self bindWith:aString
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   725
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   726
    "
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   727
     'hello%1world' formatWith:'123'
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   728
    "
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   729
!
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   730
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   731
formatWith:arg1 with:arg2
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   732
    "Compatibility method - do not use in new code.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   733
     same as #bindWith: for dolphin compatibility"
6870
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   734
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   735
    ^ self bindWith:arg1 with:arg2
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   736
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   737
    "
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   738
     'hello%1 %2world' formatWith:'123' with:234
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   739
    "
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   740
!
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   741
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   742
formatWith:arg1 with:arg2 with:arg3
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   743
    "Compatibility method - do not use in new code.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   744
     same as #bindWith: for dolphin compatibility"
6870
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   745
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   746
    ^ self bindWith:arg1 with:arg2 with:arg3
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   747
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   748
    "
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   749
     'hello%1 %2 %3world' formatWith:'123' with:234 with:345
d71264ee7a9a dolphin compatibility
Claus Gittinger <cg@exept.de>
parents: 6835
diff changeset
   750
    "
6391
ff9f6df9ec4e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6228
diff changeset
   751
! !
ff9f6df9ec4e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6228
diff changeset
   752
7261
f35fc9cee675 method category rename
Claus Gittinger <cg@exept.de>
parents: 7247
diff changeset
   753
!CharacterArray methodsFor:'Compatibility-ST/V'!
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   754
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   755
byteAt:index put:aByte
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   756
    "store a byte at given index.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   757
     This is an ST/V compatibility method."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   758
1333
d3fdca956f0d allow storing of 0-bytes (be careful with printing then ...)
Claus Gittinger <cg@exept.de>
parents: 1312
diff changeset
   759
"/    (aByte == 0) ifTrue:[
d3fdca956f0d allow storing of 0-bytes (be careful with printing then ...)
Claus Gittinger <cg@exept.de>
parents: 1312
diff changeset
   760
"/        "store a space instead"
d3fdca956f0d allow storing of 0-bytes (be careful with printing then ...)
Claus Gittinger <cg@exept.de>
parents: 1312
diff changeset
   761
"/        ^ super basicAt:index put:(Character space)
d3fdca956f0d allow storing of 0-bytes (be careful with printing then ...)
Claus Gittinger <cg@exept.de>
parents: 1312
diff changeset
   762
"/    ].
11754
5132248cfd6e common definition of #byteAt:put between CharacterArray and Symbol
Stefan Vogel <sv@exept.de>
parents: 11632
diff changeset
   763
    ^ self basicAt:index put:(Character value:aByte)
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   764
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   765
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   766
     'hello' copy at:1 put:$H asciiValue; yourself
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   767
     'hello' copy byteAt:1 put:72; yourself
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   768
     'hello' copy byteAt:1 put:0; yourself
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   769
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   770
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   771
    "Modified: 6.5.1996 / 10:35:26 / cg"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   772
!
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   773
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   774
replChar:oldChar with:newChar
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   775
    "return a copy of the receiver, with all oldChars replaced
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   776
     by newChar.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   777
     This is an ST/V compatibility method."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   778
3656
347ea0413b68 use #copyReplaceAll:with:
Claus Gittinger <cg@exept.de>
parents: 3630
diff changeset
   779
    ^ self copyReplaceAll:oldChar with:newChar
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   780
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   781
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   782
     '12345678901234567890' replChar:$0 with:$*
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   783
    "
3656
347ea0413b68 use #copyReplaceAll:with:
Claus Gittinger <cg@exept.de>
parents: 3630
diff changeset
   784
347ea0413b68 use #copyReplaceAll:with:
Claus Gittinger <cg@exept.de>
parents: 3630
diff changeset
   785
    "Modified: / 18.7.1998 / 22:52:57 / cg"
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   786
!
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   787
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   788
replChar:oldChar withString:newString
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   789
    "return a copy of the receiver, with all oldChars replaced
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   790
     by newString (i.e. slice in the newString in place of the oldChar).
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   791
     This is an ST/V compatibility method."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   792
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   793
    |tmpStream|
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   794
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   795
    tmpStream := WriteStream on:(self class new).
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   796
    self do:[:element |
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   797
	element = oldChar ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   798
	    tmpStream nextPutAll:newString
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   799
	] ifFalse:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   800
	    tmpStream nextPut:element
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   801
	].
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   802
    ].
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   803
    ^ tmpStream contents
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   804
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   805
   "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   806
     '12345678901234567890' replChar:$0 withString:'foo'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   807
     'a string with spaces' replChar:$  withString:' foo '
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   808
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   809
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   810
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   811
replString:subString withString:newString
4244
5deefa3144fb added #replString:withString:
Claus Gittinger <cg@exept.de>
parents: 4156
diff changeset
   812
    "return a copy of the receiver, with all sequences of subString replaced
5deefa3144fb added #replString:withString:
Claus Gittinger <cg@exept.de>
parents: 4156
diff changeset
   813
     by newString (i.e. slice in the newString in place of the oldString)."
5deefa3144fb added #replString:withString:
Claus Gittinger <cg@exept.de>
parents: 4156
diff changeset
   814
8347
3ae935723b46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8310
diff changeset
   815
    ^ self copyReplaceString:subString withString:newString
4244
5deefa3144fb added #replString:withString:
Claus Gittinger <cg@exept.de>
parents: 4156
diff changeset
   816
5deefa3144fb added #replString:withString:
Claus Gittinger <cg@exept.de>
parents: 4156
diff changeset
   817
   "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   818
     '12345678901234567890' replString:'123' withString:'OneTwoThree'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   819
     '12345678901234567890' replString:'123' withString:'*'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   820
     '12345678901234567890' replString:'234' withString:'foo'
4244
5deefa3144fb added #replString:withString:
Claus Gittinger <cg@exept.de>
parents: 4156
diff changeset
   821
5deefa3144fb added #replString:withString:
Claus Gittinger <cg@exept.de>
parents: 4156
diff changeset
   822
     ('a string with spaces' replChar:$  withString:' foo ')
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   823
	replString:'foo' withString:'bar'
4244
5deefa3144fb added #replString:withString:
Claus Gittinger <cg@exept.de>
parents: 4156
diff changeset
   824
    "
5deefa3144fb added #replString:withString:
Claus Gittinger <cg@exept.de>
parents: 4156
diff changeset
   825
8347
3ae935723b46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8310
diff changeset
   826
    "Modified: / 12-05-2004 / 12:00:27 / cg"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   827
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   828
9275
556e8b67ad2d st/v compat.
Claus Gittinger <cg@exept.de>
parents: 9265
diff changeset
   829
subString:start to:end
556e8b67ad2d st/v compat.
Claus Gittinger <cg@exept.de>
parents: 9265
diff changeset
   830
    ^ self copyFrom:start to:end
556e8b67ad2d st/v compat.
Claus Gittinger <cg@exept.de>
parents: 9265
diff changeset
   831
556e8b67ad2d st/v compat.
Claus Gittinger <cg@exept.de>
parents: 9265
diff changeset
   832
   "
556e8b67ad2d st/v compat.
Claus Gittinger <cg@exept.de>
parents: 9265
diff changeset
   833
     '12345678901234567890' subString:3 to:8
556e8b67ad2d st/v compat.
Claus Gittinger <cg@exept.de>
parents: 9265
diff changeset
   834
    "
556e8b67ad2d st/v compat.
Claus Gittinger <cg@exept.de>
parents: 9265
diff changeset
   835
!
556e8b67ad2d st/v compat.
Claus Gittinger <cg@exept.de>
parents: 9265
diff changeset
   836
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   837
trimBlanks
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   838
    "return a copy of the receiver without leading
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   839
     and trailing spaces.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   840
     This is an ST/V compatibility method."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   841
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   842
    ^ self withoutSpaces
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   843
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   844
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   845
     '    spaces at beginning' trimBlanks
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   846
     'spaces at end    ' trimBlanks
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   847
     '    spaces at beginning and end     ' trimBlanks
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   848
     'no spaces' trimBlanks
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   849
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   850
! !
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   851
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   852
!CharacterArray methodsFor:'Compatibility-Squeak'!
4409
86e049b21f8d added #includesSubstring:caseSensitive:
Claus Gittinger <cg@exept.de>
parents: 4389
diff changeset
   853
6148
3230f949237c asDate (for squeak)
james
parents: 6139
diff changeset
   854
asDate
3230f949237c asDate (for squeak)
james
parents: 6139
diff changeset
   855
    "Many allowed forms, see Date.readFrom:"
3230f949237c asDate (for squeak)
james
parents: 6139
diff changeset
   856
3230f949237c asDate (for squeak)
james
parents: 6139
diff changeset
   857
    ^ Date readFrom: (ReadStream on: self)
3230f949237c asDate (for squeak)
james
parents: 6139
diff changeset
   858
3230f949237c asDate (for squeak)
james
parents: 6139
diff changeset
   859
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   860
     '30 Apr 1999' asDate dayName capitalized
6148
3230f949237c asDate (for squeak)
james
parents: 6139
diff changeset
   861
    "
3230f949237c asDate (for squeak)
james
parents: 6139
diff changeset
   862
!
3230f949237c asDate (for squeak)
james
parents: 6139
diff changeset
   863
8971
0b86229f3ed9 Squeak compat.
Claus Gittinger <cg@exept.de>
parents: 8954
diff changeset
   864
asUrl
0b86229f3ed9 Squeak compat.
Claus Gittinger <cg@exept.de>
parents: 8954
diff changeset
   865
    ^ self asURL
0b86229f3ed9 Squeak compat.
Claus Gittinger <cg@exept.de>
parents: 8954
diff changeset
   866
!
0b86229f3ed9 Squeak compat.
Claus Gittinger <cg@exept.de>
parents: 8954
diff changeset
   867
10840
47bf2d2cf941 +asWideString
Claus Gittinger <cg@exept.de>
parents: 10721
diff changeset
   868
asWideString
47bf2d2cf941 +asWideString
Claus Gittinger <cg@exept.de>
parents: 10721
diff changeset
   869
    ^ self asTwoByteString
47bf2d2cf941 +asWideString
Claus Gittinger <cg@exept.de>
parents: 10721
diff changeset
   870
47bf2d2cf941 +asWideString
Claus Gittinger <cg@exept.de>
parents: 10721
diff changeset
   871
    "
47bf2d2cf941 +asWideString
Claus Gittinger <cg@exept.de>
parents: 10721
diff changeset
   872
     'abc' asWideString
47bf2d2cf941 +asWideString
Claus Gittinger <cg@exept.de>
parents: 10721
diff changeset
   873
    "
47bf2d2cf941 +asWideString
Claus Gittinger <cg@exept.de>
parents: 10721
diff changeset
   874
!
47bf2d2cf941 +asWideString
Claus Gittinger <cg@exept.de>
parents: 10721
diff changeset
   875
4989
d35f323b446c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4981
diff changeset
   876
capitalized
d35f323b446c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4981
diff changeset
   877
    ^ self asUppercaseFirst
d35f323b446c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4981
diff changeset
   878
d35f323b446c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4981
diff changeset
   879
    "
d35f323b446c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4981
diff changeset
   880
     'hello' capitalized
d35f323b446c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4981
diff changeset
   881
    "
d35f323b446c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4981
diff changeset
   882
!
d35f323b446c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4981
diff changeset
   883
10841
00baa320d8ad squeak compat.
Claus Gittinger <cg@exept.de>
parents: 10840
diff changeset
   884
caseInsensitiveLessOrEqual:aString
00baa320d8ad squeak compat.
Claus Gittinger <cg@exept.de>
parents: 10840
diff changeset
   885
    ^ (self compareCaselessWith:aString) <= 0
00baa320d8ad squeak compat.
Claus Gittinger <cg@exept.de>
parents: 10840
diff changeset
   886
!
00baa320d8ad squeak compat.
Claus Gittinger <cg@exept.de>
parents: 10840
diff changeset
   887
00baa320d8ad squeak compat.
Claus Gittinger <cg@exept.de>
parents: 10840
diff changeset
   888
caseSensitiveLessOrEqual:aString
00baa320d8ad squeak compat.
Claus Gittinger <cg@exept.de>
parents: 10840
diff changeset
   889
    ^ self <= aString
00baa320d8ad squeak compat.
Claus Gittinger <cg@exept.de>
parents: 10840
diff changeset
   890
!
00baa320d8ad squeak compat.
Claus Gittinger <cg@exept.de>
parents: 10840
diff changeset
   891
00baa320d8ad squeak compat.
Claus Gittinger <cg@exept.de>
parents: 10840
diff changeset
   892
charactersExactlyMatching:aString
00baa320d8ad squeak compat.
Claus Gittinger <cg@exept.de>
parents: 10840
diff changeset
   893
    |idx nMax|
00baa320d8ad squeak compat.
Claus Gittinger <cg@exept.de>
parents: 10840
diff changeset
   894
00baa320d8ad squeak compat.
Claus Gittinger <cg@exept.de>
parents: 10840
diff changeset
   895
    nMax :=(self size) min:(aString size).
00baa320d8ad squeak compat.
Claus Gittinger <cg@exept.de>
parents: 10840
diff changeset
   896
    idx := 1.
00baa320d8ad squeak compat.
Claus Gittinger <cg@exept.de>
parents: 10840
diff changeset
   897
    [idx <= nMax] whileTrue:[
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   898
	(self at:idx) = (aString at:idx) ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   899
	    ^ idx - 1
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   900
	].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   901
	idx := idx + 1.
10841
00baa320d8ad squeak compat.
Claus Gittinger <cg@exept.de>
parents: 10840
diff changeset
   902
    ].
00baa320d8ad squeak compat.
Claus Gittinger <cg@exept.de>
parents: 10840
diff changeset
   903
    ^ nMax
00baa320d8ad squeak compat.
Claus Gittinger <cg@exept.de>
parents: 10840
diff changeset
   904
00baa320d8ad squeak compat.
Claus Gittinger <cg@exept.de>
parents: 10840
diff changeset
   905
    "
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   906
     'abc' charactersExactlyMatching:'abc'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   907
     'abc' charactersExactlyMatching:'abcd'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   908
     'abcd' charactersExactlyMatching:'abc'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   909
     'abc' charactersExactlyMatching:'abd'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
   910
     'abc' charactersExactlyMatching:'xxx'
10841
00baa320d8ad squeak compat.
Claus Gittinger <cg@exept.de>
parents: 10840
diff changeset
   911
    "
00baa320d8ad squeak compat.
Claus Gittinger <cg@exept.de>
parents: 10840
diff changeset
   912
!
00baa320d8ad squeak compat.
Claus Gittinger <cg@exept.de>
parents: 10840
diff changeset
   913
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   914
endsWithDigit
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   915
    "Answer whether the receiver's final character represents a digit.  3/11/96 sw"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   916
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   917
    ^ self size > 0 and: [self last isDigit]
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   918
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   919
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
   920
findDelimiters:delimiters startingAt:start
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   921
    "Answer the index of the character within the receiver, starting at start, that matches one of the delimiters. If the receiver does not contain any of the delimiters, answer size + 1."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   922
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   923
    |idx|
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   924
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   925
    idx := self indexOfAny:delimiters startingAt:start.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   926
    idx == 0 ifTrue:[^ self size + 1].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   927
    ^ idx.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   928
"/start to: self size do: [:i |
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   929
"/        |char|
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   930
"/
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   931
"/        char := self at: i.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   932
"/        delimiters do: [:delim | delim = char ifTrue: [^ i]]
8971
0b86229f3ed9 Squeak compat.
Claus Gittinger <cg@exept.de>
parents: 8954
diff changeset
   933
"/    ].
0b86229f3ed9 Squeak compat.
Claus Gittinger <cg@exept.de>
parents: 8954
diff changeset
   934
"/    ^ self size + 1
0b86229f3ed9 Squeak compat.
Claus Gittinger <cg@exept.de>
parents: 8954
diff changeset
   935
!
0b86229f3ed9 Squeak compat.
Claus Gittinger <cg@exept.de>
parents: 8954
diff changeset
   936
4981
2ee8cd2c4c8e squeak compatibility
ps
parents: 4974
diff changeset
   937
findTokens:delimiters
7270
37248a67718a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7265
diff changeset
   938
    "cg: I am not sure, if this is really the squeak semantics (w.r.t. empty fields)"
37248a67718a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7265
diff changeset
   939
4981
2ee8cd2c4c8e squeak compatibility
ps
parents: 4974
diff changeset
   940
    ^ self asCollectionOfSubstringsSeparatedByAny:delimiters
7270
37248a67718a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7265
diff changeset
   941
37248a67718a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7265
diff changeset
   942
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   943
     'a|b#c||e' findTokens:#($# $|)
7270
37248a67718a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7265
diff changeset
   944
    "
4981
2ee8cd2c4c8e squeak compatibility
ps
parents: 4974
diff changeset
   945
!
2ee8cd2c4c8e squeak compatibility
ps
parents: 4974
diff changeset
   946
4974
cde2ee5adeb0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
   947
includesSubString:aString
cde2ee5adeb0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
   948
    "return true, if a substring is contained in the receiver.
cde2ee5adeb0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
   949
     The compare is case sensitive."
cde2ee5adeb0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
   950
cde2ee5adeb0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
   951
    ^ self includesString:aString
cde2ee5adeb0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
   952
cde2ee5adeb0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
   953
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
   954
     'hello world' includesSubString:'Hel'
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   955
     'hello world' includesSubString:'hel'
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   956
     'hello world' includesSubString:'llo'
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   957
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   958
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   959
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   960
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   961
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   962
11178
668d5d9a4d5d added #includesSubString:caseSensitive:
sr
parents: 11062
diff changeset
   963
includesSubString:aString caseSensitive:caseSensitive
11179
178086a92325 *** empty log message ***
sr
parents: 11178
diff changeset
   964
    ^ self includesSubstring:aString caseSensitive:caseSensitive
11178
668d5d9a4d5d added #includesSubString:caseSensitive:
sr
parents: 11062
diff changeset
   965
!
668d5d9a4d5d added #includesSubString:caseSensitive:
sr
parents: 11062
diff changeset
   966
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   967
includesSubstring:aString caseSensitive:caseSensitive
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
   968
    "return true, if a substring is contained in the receiver.
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   969
     The argument, caseSensitive controls if case is ignored in the compare."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   970
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   971
    "/ for now,  a q&d hack ...
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   972
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   973
    caseSensitive ifFalse:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   974
	^ self asLowercase includesString:aString asLowercase
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   975
    ].
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
   976
    ^ self includesString:aString
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
   977
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
   978
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   979
     'hello world' includesSubstring:'Hel' caseSensitive:true
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   980
     'hello world' includesSubstring:'Hel' caseSensitive:false
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   981
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   982
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   983
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   984
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
   985
!
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
   986
6979
128a928d5dac isAllDigits - Squeak compatibility
penk
parents: 6969
diff changeset
   987
isAllDigits
128a928d5dac isAllDigits - Squeak compatibility
penk
parents: 6969
diff changeset
   988
    "Answer whether the receiver's characters are all digits"
128a928d5dac isAllDigits - Squeak compatibility
penk
parents: 6969
diff changeset
   989
128a928d5dac isAllDigits - Squeak compatibility
penk
parents: 6969
diff changeset
   990
    ^ self conform:[:eachChar | eachChar isDigit]
128a928d5dac isAllDigits - Squeak compatibility
penk
parents: 6969
diff changeset
   991
128a928d5dac isAllDigits - Squeak compatibility
penk
parents: 6969
diff changeset
   992
    "
128a928d5dac isAllDigits - Squeak compatibility
penk
parents: 6969
diff changeset
   993
     'hello world' isAllDigits
128a928d5dac isAllDigits - Squeak compatibility
penk
parents: 6969
diff changeset
   994
     '12344' isAllDigits
128a928d5dac isAllDigits - Squeak compatibility
penk
parents: 6969
diff changeset
   995
    "
128a928d5dac isAllDigits - Squeak compatibility
penk
parents: 6969
diff changeset
   996
!
128a928d5dac isAllDigits - Squeak compatibility
penk
parents: 6969
diff changeset
   997
4890
fa9abaa225ef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4842
diff changeset
   998
lastSpacePosition
fa9abaa225ef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4842
diff changeset
   999
    ^ self lastIndexOfSeparator
fa9abaa225ef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4842
diff changeset
  1000
!
fa9abaa225ef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4842
diff changeset
  1001
7022
0c3c73f83b7f padded:to:with: - for squeak
penk
parents: 7020
diff changeset
  1002
padded:leftOrRight to:paddedSize with:padCharacter
0c3c73f83b7f padded:to:with: - for squeak
penk
parents: 7020
diff changeset
  1003
    leftOrRight == #left ifTrue:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1004
	^ self leftPaddedTo:paddedSize with:padCharacter
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1005
    ].
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1006
    ^ self paddedTo:paddedSize with:padCharacter
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1007
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1008
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1009
     'hello' padded:#right to:10 with:$.
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1010
     'hello' padded:#left to:10 with:$.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1011
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1012
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1013
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1014
skipDelimiters:delimiters startingAt:start
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1015
    "Answer the index of the character within the receiver, starting at start,
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1016
     that does NOT match one of the delimiters.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1017
     If the receiver does not contain any of the delimiters, answer size + 1.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1018
     Assumes the delimiters to be a non-empty string."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1019
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1020
    start to:self size do:[:i |
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1021
	delimiters detect:[:delim | delim = (self at:i) ] ifNone:[ ^ i ]
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1022
    ].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1023
    ^ self size + 1
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1024
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1025
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1026
     '123***7890' skipDelimiters:'*' startingAt:4
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1027
     '123***7890' skipDelimiters:'*' startingAt:3
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1028
     '123***7890' skipDelimiters:'*' startingAt:10
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1029
     '123*******' skipDelimiters:'*' startingAt:10
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1030
    "
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1031
!
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1032
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1033
substrings
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1034
    ^ self asCollectionOfWords
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1035
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1036
    "
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1037
     'foo bar baz' substrings
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1038
    "
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1039
!
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1040
17747
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  1041
substringsSeparatedBy:separatorCharacter
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  1042
    ^ self asCollectionOfSubstringsSeparatedBy:separatorCharacter
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  1043
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  1044
    "
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  1045
     'foo bar, baz' substringsSeparatedBy:$,
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  1046
    "
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  1047
!
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  1048
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1049
truncateTo:smallSize
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1050
    "return myself or a copy shortened to smallSize.  1/18/96 sw"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1051
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1052
    self size <= smallSize ifTrue:[^ self].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1053
    ^ self copyFrom: 1 to: smallSize
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1054
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1055
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1056
     'hello world' truncateTo:5
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1057
     'hello' truncateTo:10
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1058
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1059
     'hello world' copyTo:5
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1060
     'hello' copyTo:10
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1061
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1062
!
5795
d67a8ff4d98e added #truncateTo:
Claus Gittinger <cg@exept.de>
parents: 5794
diff changeset
  1063
4890
fa9abaa225ef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4842
diff changeset
  1064
withBlanksTrimmed
fa9abaa225ef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4842
diff changeset
  1065
    "Return a copy of the receiver from which leading and trailing blanks have been trimmed."
fa9abaa225ef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4842
diff changeset
  1066
fa9abaa225ef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4842
diff changeset
  1067
    ^ self withoutSpaces
fa9abaa225ef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4842
diff changeset
  1068
fa9abaa225ef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4842
diff changeset
  1069
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1070
     '  hello    world    ' withBlanksTrimmed
4890
fa9abaa225ef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4842
diff changeset
  1071
    "
fa9abaa225ef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4842
diff changeset
  1072
fa9abaa225ef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4842
diff changeset
  1073
fa9abaa225ef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4842
diff changeset
  1074
fa9abaa225ef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4842
diff changeset
  1075
!
fa9abaa225ef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4842
diff changeset
  1076
fa9abaa225ef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4842
diff changeset
  1077
withNoLineLongerThan: aNumber
fa9abaa225ef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4842
diff changeset
  1078
    "Answer a string with the same content as receiver, but rewrapped so that no line has more characters than the given number"
fa9abaa225ef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4842
diff changeset
  1079
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1080
    | listOfLines currentLast currentStart resultString putativeLast putativeLine crPosition |
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1081
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1082
    aNumber isNumber not | (aNumber < 1) ifTrue: [self error: 'too narrow'].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1083
    listOfLines _ OrderedCollection new.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1084
    currentLast _ 0.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1085
    [currentLast < self size] whileTrue:
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1086
	    [currentStart _ currentLast + 1.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1087
	    putativeLast _ (currentStart + aNumber - 1) min: self size.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1088
	    putativeLine _ self copyFrom: currentStart to: putativeLast.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1089
	    (crPosition _ putativeLine indexOf: Character cr) > 0 ifTrue:
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1090
		    [putativeLast _ currentStart + crPosition - 1.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1091
		    putativeLine _ self copyFrom: currentStart to: putativeLast].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1092
	    currentLast _ putativeLast == self size
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1093
		    ifTrue:
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1094
			    [putativeLast]
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1095
		    ifFalse:
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1096
			    [currentStart + putativeLine lastSpacePosition - 1].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1097
	    currentLast <= currentStart ifTrue:
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1098
		    ["line has NO spaces; baleout!!"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1099
		    currentLast _ putativeLast].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1100
	    listOfLines add: (self copyFrom: currentStart to: currentLast) withBlanksTrimmed].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1101
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1102
    listOfLines size > 0 ifFalse: [^ ''].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1103
    resultString _ listOfLines first.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1104
    2 to: listOfLines size do:
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1105
	    [:i | resultString _ resultString, Character cr asString, (listOfLines at: i)].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1106
    ^ resultString
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1107
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1108
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1109
     #(5 7 20) collect:
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1110
	[:i | 'Fred the bear went down to the brook to read his book in silence' withNoLineLongerThan: i]
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1111
    "
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1112
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1113
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1114
10883
34881021d5ba +withoutTrailingBlanks
Claus Gittinger <cg@exept.de>
parents: 10862
diff changeset
  1115
!
34881021d5ba +withoutTrailingBlanks
Claus Gittinger <cg@exept.de>
parents: 10862
diff changeset
  1116
17734
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  1117
withSqueakLineEndings
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  1118
    "assume the string is textual, and that CR, LF, and CRLF are all 
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  1119
    valid line endings.  Replace each occurence with a single CR"
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  1120
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  1121
    ^ self asStringCollection asStringWith:Character cr.
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  1122
!
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  1123
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1124
withoutLeading: char
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1125
    "return a copy of myself without leading a char.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1126
     Returns an empty string, if the receiver consist only of a char."
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1127
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1128
    ^ self withoutLeadingForWhich:[:ch | ch = char]
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1129
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1130
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1131
     '****foo****' withoutLeading: $*      
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1132
     'foo****'     withoutLeading: $*      
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1133
     '*'           withoutLeading: $*                 
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1134
     ''            withoutLeading: $*         
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1135
     '****foo'     withoutLeading: $*        
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1136
     '*******'     withoutLeading: $*             
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1137
     'foo'         withoutLeading: $*        
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1138
     'f***o***o'   withoutLeading: $*         
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1139
     ('**' , Character tab asString , '*foo***') withoutLeading: $* inspect
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1140
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1141
!
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1142
11565
71a4edaa21e9 +withoutTrailing:
Claus Gittinger <cg@exept.de>
parents: 11525
diff changeset
  1143
withoutTrailing:char
71a4edaa21e9 +withoutTrailing:
Claus Gittinger <cg@exept.de>
parents: 11525
diff changeset
  1144
    "return a copy of myself without trailing char.
71a4edaa21e9 +withoutTrailing:
Claus Gittinger <cg@exept.de>
parents: 11525
diff changeset
  1145
     Returns an empty string, if the receiver consist only of char."
71a4edaa21e9 +withoutTrailing:
Claus Gittinger <cg@exept.de>
parents: 11525
diff changeset
  1146
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1147
    ^ self withoutTrailingForWhich:[:ch | ch = char]
10883
34881021d5ba +withoutTrailingBlanks
Claus Gittinger <cg@exept.de>
parents: 10862
diff changeset
  1148
34881021d5ba +withoutTrailingBlanks
Claus Gittinger <cg@exept.de>
parents: 10862
diff changeset
  1149
    "
11565
71a4edaa21e9 +withoutTrailing:
Claus Gittinger <cg@exept.de>
parents: 11525
diff changeset
  1150
     '    foo....' withoutTrailing:$. 
71a4edaa21e9 +withoutTrailing:
Claus Gittinger <cg@exept.de>
parents: 11525
diff changeset
  1151
     'foo....'     withoutTrailing:$.   
71a4edaa21e9 +withoutTrailing:
Claus Gittinger <cg@exept.de>
parents: 11525
diff changeset
  1152
     '    foo'     withoutTrailing:$.    
71a4edaa21e9 +withoutTrailing:
Claus Gittinger <cg@exept.de>
parents: 11525
diff changeset
  1153
     '.......'     withoutTrailing:$.  
71a4edaa21e9 +withoutTrailing:
Claus Gittinger <cg@exept.de>
parents: 11525
diff changeset
  1154
     'foo'         withoutTrailing:$.  
71a4edaa21e9 +withoutTrailing:
Claus Gittinger <cg@exept.de>
parents: 11525
diff changeset
  1155
    "
71a4edaa21e9 +withoutTrailing:
Claus Gittinger <cg@exept.de>
parents: 11525
diff changeset
  1156
!
71a4edaa21e9 +withoutTrailing:
Claus Gittinger <cg@exept.de>
parents: 11525
diff changeset
  1157
71a4edaa21e9 +withoutTrailing:
Claus Gittinger <cg@exept.de>
parents: 11525
diff changeset
  1158
withoutTrailingBlanks
71a4edaa21e9 +withoutTrailing:
Claus Gittinger <cg@exept.de>
parents: 11525
diff changeset
  1159
    "return a copy of myself without trailing spaces.
71a4edaa21e9 +withoutTrailing:
Claus Gittinger <cg@exept.de>
parents: 11525
diff changeset
  1160
     Notice: this does NOT remove tabs, newline or any other whitespace.
71a4edaa21e9 +withoutTrailing:
Claus Gittinger <cg@exept.de>
parents: 11525
diff changeset
  1161
     Returns an empty string, if the receiver consist only of spaces."
71a4edaa21e9 +withoutTrailing:
Claus Gittinger <cg@exept.de>
parents: 11525
diff changeset
  1162
71a4edaa21e9 +withoutTrailing:
Claus Gittinger <cg@exept.de>
parents: 11525
diff changeset
  1163
    ^ self withoutTrailing:Character space
71a4edaa21e9 +withoutTrailing:
Claus Gittinger <cg@exept.de>
parents: 11525
diff changeset
  1164
71a4edaa21e9 +withoutTrailing:
Claus Gittinger <cg@exept.de>
parents: 11525
diff changeset
  1165
    "
10883
34881021d5ba +withoutTrailingBlanks
Claus Gittinger <cg@exept.de>
parents: 10862
diff changeset
  1166
     '    foo    ' withoutTrailingBlanks
34881021d5ba +withoutTrailingBlanks
Claus Gittinger <cg@exept.de>
parents: 10862
diff changeset
  1167
     'foo    '     withoutTrailingBlanks
34881021d5ba +withoutTrailingBlanks
Claus Gittinger <cg@exept.de>
parents: 10862
diff changeset
  1168
     '    foo'     withoutTrailingBlanks
34881021d5ba +withoutTrailingBlanks
Claus Gittinger <cg@exept.de>
parents: 10862
diff changeset
  1169
     '       '     withoutTrailingBlanks
34881021d5ba +withoutTrailingBlanks
Claus Gittinger <cg@exept.de>
parents: 10862
diff changeset
  1170
     'foo'         withoutTrailingBlanks
34881021d5ba +withoutTrailingBlanks
Claus Gittinger <cg@exept.de>
parents: 10862
diff changeset
  1171
     ('  ' , Character tab asString , ' foo   ') withoutTrailingBlanks inspect
34881021d5ba +withoutTrailingBlanks
Claus Gittinger <cg@exept.de>
parents: 10862
diff changeset
  1172
     ('   foo' , Character tab asString) withoutTrailingBlanks inspect
34881021d5ba +withoutTrailingBlanks
Claus Gittinger <cg@exept.de>
parents: 10862
diff changeset
  1173
    "
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1174
! !
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1175
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1176
!CharacterArray methodsFor:'Compatibility-V''Age'!
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1177
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1178
addLineDelimiter
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1179
    "replace all '\'-characters by line delimiter (cr) - characters.
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1180
     This has been added for VisualAge compatibility."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1181
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1182
    ^ self withCRs
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1183
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1184
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1185
bindWith:aString
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1186
    "return a copy of the receiver, where a '%1' escape is
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1187
     replaced by aString.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1188
     This has been added for VisualAge compatibility."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1189
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1190
    ^ self expandPlaceholdersWith:(Array with:aString)
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1191
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1192
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1193
     'do you like %1 ?' bindWith:'smalltalk'
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1194
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1195
!
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1196
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1197
bindWith:string1 with:string2
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1198
    "return a copy of the receiver, where a '%1' escape is
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1199
     replaced by string1 and '%2' is replaced by string2.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1200
     This has been added for VisualAge compatibility."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1201
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1202
    ^ self expandPlaceholdersWith:(Array with:string1 with:string2)
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1203
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1204
    "
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1205
     'do you prefer %1 or rather %2 ?'
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1206
	bindWith:'smalltalk' with:'c++'
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1207
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1208
!
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1209
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1210
bindWith:str1 with:str2 with:str3
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1211
    "return a copy of the receiver, where a '%1', '%2' and '%3' escapes
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1212
     are replaced by str1, str2 and str3 respectively.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1213
     This has been added for VisualAge compatibility."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1214
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1215
    ^ self expandPlaceholdersWith:(Array with:str1 with:str2 with:str3)
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1216
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1217
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1218
     'do you prefer %1 or rather %2 (not talking about %3) ?'
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1219
	bindWith:'smalltalk' with:'c++' with:'c'
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1220
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1221
!
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1222
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1223
bindWith:str1 with:str2 with:str3 with:str4
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1224
    "return a copy of the receiver, where a '%1', '%2', '%3' and '%4' escapes
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1225
     are replaced by str1, str2, str3 and str4 respectively.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1226
     This has been added for VisualAge compatibility."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1227
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1228
    ^ self expandPlaceholdersWith:(Array with:str1 with:str2 with:str3 with:str4)
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1229
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1230
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1231
     'do you prefer %1 or rather %2 (not talking about %3 or even %4) ?'
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1232
	bindWith:'smalltalk' with:'c++' with:'c' with:'assembler'
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1233
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1234
!
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1235
2344
b3788119533f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  1236
bindWith:str1 with:str2 with:str3 with:str4 with:str5
b3788119533f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  1237
    "return a copy of the receiver, where a '%1' .. '%5' escapes
b3788119533f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  1238
     are replaced by str1 .. str5 respectively.
b3788119533f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  1239
     This has been added for VisualAge compatibility."
b3788119533f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  1240
b3788119533f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  1241
    ^ self expandPlaceholdersWith:(Array with:str1 with:str2 with:str3 with:str4 with:str5)
b3788119533f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  1242
b3788119533f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  1243
    "Created: 31.1.1997 / 16:25:42 / cg"
b3788119533f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  1244
!
b3788119533f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  1245
5343
bac9bc59a698 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5342
diff changeset
  1246
bindWith:str1 with:str2 with:str3 with:str4 with:str5 with:str6
bac9bc59a698 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5342
diff changeset
  1247
    "return a copy of the receiver, where a '%1' .. '%6' escapes
11524
8742d67d9296 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11483
diff changeset
  1248
     are replaced by str1 .. str6 respectively.
5343
bac9bc59a698 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5342
diff changeset
  1249
     This has been added for VisualAge compatibility."
bac9bc59a698 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5342
diff changeset
  1250
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1251
    ^ self expandPlaceholdersWith:(Array with:str1 with:str2
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1252
					 with:str3 with:str4
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1253
					 with:str5 with:str6)
11524
8742d67d9296 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11483
diff changeset
  1254
!
8742d67d9296 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11483
diff changeset
  1255
8742d67d9296 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11483
diff changeset
  1256
bindWith:str1 with:str2 with:str3 with:str4 with:str5 with:str6 with:str7
8742d67d9296 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11483
diff changeset
  1257
    "return a copy of the receiver, where a '%1' .. '%7' escapes
8742d67d9296 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11483
diff changeset
  1258
     are replaced by str1 .. str7 respectively.
8742d67d9296 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11483
diff changeset
  1259
     This has been added for VisualAge compatibility."
8742d67d9296 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11483
diff changeset
  1260
8742d67d9296 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11483
diff changeset
  1261
    ^ self expandPlaceholdersWith:(Array with:str1 with:str2
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1262
					 with:str3 with:str4
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1263
					 with:str5 with:str6
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1264
					 with:str7)
5343
bac9bc59a698 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5342
diff changeset
  1265
!
bac9bc59a698 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5342
diff changeset
  1266
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1267
bindWithArguments:anArrayOfStrings
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1268
    "return a copy of the receiver, where a '%i' escape
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1269
     is replaced by the coresponding string from the argument array.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1270
     'i' may be between 1 and 9 (i.e. a maximum of 9 placeholders is allowed).
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1271
     This has been added for VisualAge compatibility."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1272
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1273
    ^ self expandPlaceholdersWith:anArrayOfStrings
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1274
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1275
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1276
     'do you prefer %1 or rather %2 (not talking about %3) ?'
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1277
        bindWithArguments:#('smalltalk' 'c++' 'c')
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1278
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1279
     'do you %(what) ?'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1280
        bindWithArguments:(Dictionary new at:#'what' put:'understand'; yourself)
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1281
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1282
!
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1283
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1284
subStrings
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1285
    "return an array consisting of all words contained in the receiver.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1286
     Words are separated by whitespace.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1287
     This has been added for VisualAge compatibility."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1288
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1289
    ^ self asCollectionOfWords
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1290
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1291
    "
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1292
     'hello world, this is smalltalk' subStrings
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1293
    "
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1294
!
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1295
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1296
subStrings:separatorCharacter
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1297
    "return an array consisting of all words contained in the receiver.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1298
     Words are separated by separatorCharacter.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1299
     This has been added for VisualAge compatibility."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1300
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1301
    ^ self asCollectionOfSubstringsSeparatedBy:separatorCharacter
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1302
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1303
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1304
     'foo:bar:baz:smalltalk' subStrings:$:
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1305
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1306
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1307
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1308
trimSeparators
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1309
    "return a copy of the receiver without leading and trailing whiteSpace"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1310
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1311
    ^ self withoutSeparators
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1312
! !
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1313
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1314
!CharacterArray methodsFor:'Compatibility-VW'!
5964
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1315
6139
1b86d43f8eb7 VW compatibility
Claus Gittinger <cg@exept.de>
parents: 6122
diff changeset
  1316
asLogicalFileSpecification
1b86d43f8eb7 VW compatibility
Claus Gittinger <cg@exept.de>
parents: 6122
diff changeset
  1317
    ^ self asFilename
1b86d43f8eb7 VW compatibility
Claus Gittinger <cg@exept.de>
parents: 6122
diff changeset
  1318
1b86d43f8eb7 VW compatibility
Claus Gittinger <cg@exept.de>
parents: 6122
diff changeset
  1319
    "Created: / 30.10.2001 / 17:29:53 / cg"
1b86d43f8eb7 VW compatibility
Claus Gittinger <cg@exept.de>
parents: 6122
diff changeset
  1320
!
1b86d43f8eb7 VW compatibility
Claus Gittinger <cg@exept.de>
parents: 6122
diff changeset
  1321
6119
b6cee2c2b2ea +asQualifiedReference
Claus Gittinger <cg@exept.de>
parents: 5964
diff changeset
  1322
asQualifiedReference
b6cee2c2b2ea +asQualifiedReference
Claus Gittinger <cg@exept.de>
parents: 5964
diff changeset
  1323
    ^ BindingReference pathString:(self string)
b6cee2c2b2ea +asQualifiedReference
Claus Gittinger <cg@exept.de>
parents: 5964
diff changeset
  1324
b6cee2c2b2ea +asQualifiedReference
Claus Gittinger <cg@exept.de>
parents: 5964
diff changeset
  1325
!
b6cee2c2b2ea +asQualifiedReference
Claus Gittinger <cg@exept.de>
parents: 5964
diff changeset
  1326
5964
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1327
expandMacros
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1328
    "ST80 compatibility - expand '<..>' macros with
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1329
     argument strings. Similar to #bindWith:.
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1330
     Read the comment in #expandMacrosWithArguments: about
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1331
     limited compatibility issues."
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1332
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1333
    ^ self expandMacrosWithArguments:#()
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1334
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1335
    "
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1336
     'hello<n>foo' expandMacros
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1337
    "
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1338
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1339
    "Modified: / 18.6.1998 / 16:03:02 / cg"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1340
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1341
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1342
expandMacrosWith:arg
5964
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1343
    "ST80 compatibility - expand '<..>' macros with
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1344
     argument strings. Similar to #bindWith:.
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1345
     Read the comment in #expandMacrosWithArguments: about
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1346
     limited compatibility issues."
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1347
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1348
    ^ self expandMacrosWithArguments:(Array with:arg)
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1349
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1350
    "Created: / 1.11.1997 / 13:01:28 / cg"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1351
    "Modified: / 1.11.1997 / 13:30:50 / cg"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1352
!
5964
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1353
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1354
expandMacrosWith:arg1 with:arg2
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1355
    "ST80 compatibility - expand '<..>' macros with
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1356
     argument strings. Similar to #bindWith:.
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1357
     Read the comment in #expandMacrosWithArguments: about
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1358
     limited compatibility issues."
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1359
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1360
    ^ self expandMacrosWithArguments:(Array with:arg1 with:arg2)
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1361
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1362
    "Modified: / 6.7.1998 / 21:58:14 / cg"
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1363
!
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1364
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1365
expandMacrosWith:arg1 with:arg2 with:arg3
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1366
    "ST80 compatibility - expand '<..>' macros with
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1367
     argument strings. Similar to #bindWith:.
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1368
     Read the comment in #expandMacrosWithArguments: about
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1369
     limited compatibility issues."
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1370
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1371
    ^ self expandMacrosWithArguments:(Array with:arg1 with:arg2 with:arg3)
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1372
!
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1373
10353
65fb7aa2c6c2 added #expandMacrosWith:with:with:with:
Stefan Vogel <sv@exept.de>
parents: 10134
diff changeset
  1374
expandMacrosWith:arg1 with:arg2 with:arg3 with:arg4
65fb7aa2c6c2 added #expandMacrosWith:with:with:with:
Stefan Vogel <sv@exept.de>
parents: 10134
diff changeset
  1375
    "ST80 compatibility - expand '<..>' macros with
65fb7aa2c6c2 added #expandMacrosWith:with:with:with:
Stefan Vogel <sv@exept.de>
parents: 10134
diff changeset
  1376
     argument strings. Similar to #bindWith:.
65fb7aa2c6c2 added #expandMacrosWith:with:with:with:
Stefan Vogel <sv@exept.de>
parents: 10134
diff changeset
  1377
     Read the comment in #expandMacrosWithArguments: about
65fb7aa2c6c2 added #expandMacrosWith:with:with:with:
Stefan Vogel <sv@exept.de>
parents: 10134
diff changeset
  1378
     limited compatibility issues."
65fb7aa2c6c2 added #expandMacrosWith:with:with:with:
Stefan Vogel <sv@exept.de>
parents: 10134
diff changeset
  1379
65fb7aa2c6c2 added #expandMacrosWith:with:with:with:
Stefan Vogel <sv@exept.de>
parents: 10134
diff changeset
  1380
    ^ self expandMacrosWithArguments:(Array with:arg1 with:arg2 with:arg3 with:arg4)
65fb7aa2c6c2 added #expandMacrosWith:with:with:with:
Stefan Vogel <sv@exept.de>
parents: 10134
diff changeset
  1381
!
65fb7aa2c6c2 added #expandMacrosWith:with:with:with:
Stefan Vogel <sv@exept.de>
parents: 10134
diff changeset
  1382
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1383
expandMacrosWithArguments:argArray
5964
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1384
    "ST80 compatibility - expand '<..>' macros with
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1385
     argument strings. Similar to #bindWith:.
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1386
     WARNING: possibly not all ST80 expansions are supported here."
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1387
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1388
    "/ supported expansions:
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1389
    "/
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1390
    "/   <#p>       # is arg Number; slice in the args printString
8222
f2c454a9a038 replaced '' writeStream by String writeStream
Claus Gittinger <cg@exept.de>
parents: 8124
diff changeset
  1391
    "/   <#s>       # is arg Number; slice in the arg itself (must know asString)
5964
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1392
    "/   <#?s1:s2>  # is arg Number; slice in s1 if the arg is true, s2 otherwise
7643
53536a53dcbc comment
Claus Gittinger <cg@exept.de>
parents: 7641
diff changeset
  1393
    "/              use first arg if # is not given (i.e. no number before s,p ...)
5964
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1394
    "/   <n>        replace by a newLine character
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1395
    "/   <t>        replace by a tab character
6834
eba4b58b8692 fixed expandMacros (%-escape)
Claus Gittinger <cg@exept.de>
parents: 6810
diff changeset
  1396
    "/   %X         the X character itself
5964
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1397
8999
f3fda66ea51e #expandMacrosWithArguments: - be mor friendly to xml strings.
Stefan Vogel <sv@exept.de>
parents: 8971
diff changeset
  1398
    |in out c fmt nr arg s1 s2 peekc|
5964
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1399
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1400
    in := self readStream.
10721
58e6950264cb care for bitsPerCharacter when expanding macros
Claus Gittinger <cg@exept.de>
parents: 10703
diff changeset
  1401
    out := CharacterWriteStream on:(self species uninitializedNew:self size).
5964
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1402
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1403
    [in atEnd] whileFalse:[
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1404
	c := in next.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1405
	c == $% ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1406
	    c := in next.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1407
	    out nextPut:c
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1408
	] ifFalse:[c ~~ $< ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1409
	    out nextPut:c.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1410
	] ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1411
	    peekc := in peek.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1412
	    [peekc == $<] whileTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1413
		out nextPut:$<.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1414
		peekc := in nextPeek.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1415
	    ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1416
	    peekc == $n ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1417
		peekc := in nextPeek.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1418
		peekc == $> ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1419
		    in next.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1420
		    out cr.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1421
		] ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1422
		    out nextPutAll:'<n'.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1423
		]
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1424
	    ] ifFalse:[peekc == $t ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1425
		peekc := in nextPeek.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1426
		peekc == $> ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1427
		    in next.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1428
		    out tab.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1429
		] ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1430
		    out nextPutAll:'<t'.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1431
		]
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1432
	    ] ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1433
		peekc isDigit ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1434
		    "start an argument expansion ..."
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1435
		    nr := Integer readFrom:in onError:nil.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1436
		    nr isNil ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1437
			"this cannot happen (there is at least one digit)"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1438
			self error:'invalid format' mayProceed:true.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1439
			^ self
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1440
		    ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1441
		    fmt := in next.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1442
		    (fmt ~~ $? and:[in peek ~~ $>]) ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1443
			out nextPut:$<.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1444
			nr printOn:out.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1445
			out nextPut:fmt.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1446
		    ] ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1447
			(nr between:1 and:argArray size) ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1448
			    arg := argArray at:nr.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1449
			] ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1450
			    arg := ''
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1451
			].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1452
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1453
			fmt == $p ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1454
			    "expand with args printString"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1455
			    arg printOn:out.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1456
			] ifFalse:[fmt == $s ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1457
			    "expand with arg itself"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1458
			    arg isText ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1459
				out contentsSpecies isText ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1460
				    out := (WriteStream on:Text new) nextPutAll:out contents; yourself.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1461
				].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1462
				out nextPutAll:arg.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1463
			    ] ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1464
				out nextPutAll:arg "asString" string.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1465
			    ]
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1466
			] ifFalse:[fmt == $? ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1467
			    s1 := in upTo:$:.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1468
			    s2 := in nextUpTo:$>.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1469
			    arg == true ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1470
				out nextPutAll:s1
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1471
			    ] ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1472
				out nextPutAll:s2
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1473
			    ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1474
			] ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1475
			    "what does VW do here ?"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1476
			    self error:'invalid format' mayProceed:true.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1477
			    ^ self
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1478
			]]].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1479
			c := in next.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1480
			c ~~ $> ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1481
			    "what does VW do here ?"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1482
			    self error:'invalid format' mayProceed:true.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1483
			    ^ self
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1484
			]
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1485
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1486
		    ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1487
		] ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1488
		    out nextPut:$<.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1489
		].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1490
	    ]].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1491
	]].
5964
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1492
    ].
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1493
    ^ out contents
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1494
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1495
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1496
     'hello <1s> how are you' expandMacrosWith:(OperatingSystem getLoginName)
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1497
     'one plus one is <1p>' expandMacrosWith:2
5964
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1498
    "
0f748abc0c17 protocol rename
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1499
10721
58e6950264cb care for bitsPerCharacter when expanding macros
Claus Gittinger <cg@exept.de>
parents: 10703
diff changeset
  1500
    "Modified: / 18-09-2007 / 22:50:43 / cg"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1501
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1502
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1503
isCharacters
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1504
    "added for visual works compatibility"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1505
    ^ true
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1506
! !
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1507
17747
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  1508
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1509
!CharacterArray methodsFor:'character searching'!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1510
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1511
includesMatchCharacters
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  1512
    "return true if the receiver includes any GLOB meta-match characters (i.e. $* or $#)
2519
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1513
     for match operations; false if not.
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1514
     Here, do not care for $\ escapes"
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1515
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1516
    ^ self includesAny:'*#['
2519
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1517
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1518
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1519
     '*foo' includesMatchCharacters
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1520
     '\*foo' includesMatchCharacters
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1521
     '\*foo' includesUnescapedMatchCharacters
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1522
     '*foo' includesMatchCharacters
2519
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1523
     '\\*foo' includesMatchCharacters
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1524
     'foo*' includesMatchCharacters
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1525
     'foo\*' includesMatchCharacters
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1526
     'foo\' includesMatchCharacters
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1527
    "
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1528
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1529
    "Modified: 2.4.1997 / 18:12:34 / cg"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1530
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1531
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1532
includesSeparator
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1533
    "return true, if the receiver contains any whitespace characters"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1534
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1535
    ^ (self indexOfSeparator ~~ 0)
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1536
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1537
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1538
     'hello world' includesSeparator
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1539
     'helloworld' includesSeparator
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1540
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1541
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1542
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1543
includesUnescapedMatchCharacters
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1544
    "return true if the receiver really includes any meta characters (i.e. $* or $#)
2519
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1545
     for match operations; false if not.
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1546
     Here, care for $\ escapes"
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1547
5342
5010cea0ffd4 match-escape character definition in one place
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1548
    |idx sz specialChars escape|
2519
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1549
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1550
    idx := 1.
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1551
    sz := self size.
5342
5010cea0ffd4 match-escape character definition in one place
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1552
    specialChars := '*#[\'.
5010cea0ffd4 match-escape character definition in one place
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1553
    (escape := self class matchEscapeCharacter) ~~ $\ ifTrue:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1554
	specialChars := specialChars copy.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1555
	specialChars at:specialChars size put:escape
5342
5010cea0ffd4 match-escape character definition in one place
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1556
    ].
5010cea0ffd4 match-escape character definition in one place
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1557
2519
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1558
    [true] whileTrue:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1559
	idx := self indexOfAny:specialChars startingAt:idx.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1560
	idx == 0 ifTrue:[^ false].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1561
	(self at:idx) == escape ifFalse:[^ true].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1562
	idx := idx + 2.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1563
	idx > sz ifTrue:[^ false].
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1564
    ].
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1565
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1566
    "
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1567
     '*foo' includesUnescapedMatchCharacters
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1568
     '\*foo' includesUnescapedMatchCharacters
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1569
     '\\foo' includesUnescapedMatchCharacters
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1570
     '\\\$foo' includesUnescapedMatchCharacters
2519
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1571
     '*foo' includesUnescapedMatchCharacters
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1572
     '\\*foo' includesUnescapedMatchCharacters
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1573
     'foo*' includesUnescapedMatchCharacters
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1574
     'foo\*' includesUnescapedMatchCharacters
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1575
     'foo\' includesUnescapedMatchCharacters
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1576
    "
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1577
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1578
    "Modified: 2.4.1997 / 17:08:52 / cg"
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1579
    "Created: 2.4.1997 / 17:23:26 / cg"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1580
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1581
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1582
indexOfControlCharacterStartingAt:startIndex
3668
76271941f044 added #indexOfControlCharacterStartingAt:
Claus Gittinger <cg@exept.de>
parents: 3656
diff changeset
  1583
    "return the index of the next control character;
4117
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  1584
     starting the search at startIndex, searching forward;
3668
76271941f044 added #indexOfControlCharacterStartingAt:
Claus Gittinger <cg@exept.de>
parents: 3656
diff changeset
  1585
     that is a character with asciiValue < 32.
76271941f044 added #indexOfControlCharacterStartingAt:
Claus Gittinger <cg@exept.de>
parents: 3656
diff changeset
  1586
     Return 0 if none is found."
76271941f044 added #indexOfControlCharacterStartingAt:
Claus Gittinger <cg@exept.de>
parents: 3656
diff changeset
  1587
76271941f044 added #indexOfControlCharacterStartingAt:
Claus Gittinger <cg@exept.de>
parents: 3656
diff changeset
  1588
    |start  "{ Class: SmallInteger }"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1589
     mySize "{ Class: SmallInteger }"|
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1590
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1591
    start := startIndex.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1592
    mySize := self size.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1593
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1594
    start to:mySize do:[:index |
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1595
	(self at:index) isControlCharacter ifTrue:[^ index]
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1596
    ].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1597
    ^ 0
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1598
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1599
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1600
     'hello world' asTwoByteString            indexOfControlCharacterStartingAt:1
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1601
     'hello world\foo' withCRsasTwoByteString indexOfControlCharacterStartingAt:1
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1602
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1603
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1604
    "Modified: / 21.7.1998 / 17:25:07 / cg"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1605
!
3668
76271941f044 added #indexOfControlCharacterStartingAt:
Claus Gittinger <cg@exept.de>
parents: 3656
diff changeset
  1606
8541
36f903267525 +indexOfNonSeparator
Claus Gittinger <cg@exept.de>
parents: 8525
diff changeset
  1607
indexOfNonSeparator
36f903267525 +indexOfNonSeparator
Claus Gittinger <cg@exept.de>
parents: 8525
diff changeset
  1608
    "return the index of the first non-whitespace character.
36f903267525 +indexOfNonSeparator
Claus Gittinger <cg@exept.de>
parents: 8525
diff changeset
  1609
     return 0 if no non-separator was found"
36f903267525 +indexOfNonSeparator
Claus Gittinger <cg@exept.de>
parents: 8525
diff changeset
  1610
36f903267525 +indexOfNonSeparator
Claus Gittinger <cg@exept.de>
parents: 8525
diff changeset
  1611
    ^ self indexOfNonSeparatorStartingAt:1.
36f903267525 +indexOfNonSeparator
Claus Gittinger <cg@exept.de>
parents: 8525
diff changeset
  1612
36f903267525 +indexOfNonSeparator
Claus Gittinger <cg@exept.de>
parents: 8525
diff changeset
  1613
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1614
     '    hello world' indexOfNonSeparator
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1615
     '    ' indexOfNonSeparator
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1616
     'a   ' indexOfNonSeparator
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1617
     'abc' indexOfNonSeparator
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1618
     ' ' indexOfNonSeparator
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1619
     '' indexOfNonSeparator
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1620
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1621
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1622
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1623
indexOfNonSeparatorStartingAt:startIndex
4117
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  1624
    "return the index of the next non-whitespace character,
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  1625
     starting the search at startIndex, searching forward;
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  1626
     return 0 if no non-separator was found"
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1627
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1628
    |start  "{ Class: SmallInteger }"
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1629
     mySize "{ Class: SmallInteger }"|
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1630
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1631
    start := startIndex.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1632
    mySize := self size.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1633
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1634
    start to:mySize do:[:index |
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1635
	(self at:index) isSeparator ifFalse:[^ index]
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1636
    ].
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1637
    ^ 0
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1638
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1639
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1640
     '    hello world' indexOfNonSeparatorStartingAt:1
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1641
     '    ' indexOfNonSeparatorStartingAt:1
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1642
     'a   ' indexOfNonSeparatorStartingAt:2
4117
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  1643
    "
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  1644
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1645
    "
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1646
     |s index1 index2|
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1647
     s := '   foo    bar      baz'.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1648
     index1 := s indexOfNonSeparatorStartingAt:1.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1649
     index2 := s indexOfSeparatorStartingAt:index1.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1650
     s copyFrom:index1 to:index2 - 1
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1651
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1652
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1653
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1654
indexOfSeparator
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1655
    "return the index of the first whitespace character;
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1656
     starting the search at the beginning, searching forward;
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1657
     return 0 if no separator was found"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1658
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1659
    ^ self indexOfSeparatorStartingAt:1
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1660
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1661
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1662
     'hello world' indexOfSeparator
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1663
     'helloworld' indexOfSeparator
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1664
     'hello   ' indexOfSeparator
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1665
     '   hello' indexOfSeparator
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1666
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1667
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1668
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1669
indexOfSeparatorStartingAt:startIndex
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1670
    "return the index of the next whitespace character,
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1671
     starting the search at startIndex, searching forward;
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1672
     return 0 if no separator was found"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1673
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1674
    |start  "{ Class: SmallInteger }"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1675
     mySize "{ Class: SmallInteger }"|
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1676
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1677
    start := startIndex.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1678
    mySize := self size.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1679
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1680
    start to:mySize do:[:index |
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1681
	(self at:index) isSeparator ifTrue:[^ index]
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1682
    ].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1683
    ^ 0
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1684
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1685
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1686
     'hello world' indexOfSeparatorStartingAt:3
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1687
     ' hello world' indexOfSeparatorStartingAt:3
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1688
     'hello world ' indexOfSeparatorStartingAt:3
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1689
     'hello world ' indexOfSeparatorStartingAt:6
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1690
     'hello world ' indexOfSeparatorStartingAt:7
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1691
     'helloworld ' indexOfSeparatorStartingAt:7
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1692
     'helloworld' indexOfSeparatorStartingAt:7
4117
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  1693
    "
2519
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1694
!
07674cea76dd allow escaping a * when doing a match
Claus Gittinger <cg@exept.de>
parents: 2452
diff changeset
  1695
4117
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  1696
lastIndexOfSeparator
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  1697
    "return the last index of the whitespace character.
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  1698
     (i.e. start the search at the end and search backwards);
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  1699
     Returns 0 if no separator is found."
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  1700
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  1701
    ^ self lastIndexOfSeparatorStartingAt:(self size)
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  1702
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  1703
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1704
     'hello world' lastIndexOfSeparator
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1705
     'helloworld' lastIndexOfSeparator
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1706
     'hel lo wor ld' lastIndexOfSeparator
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1707
     'hel   ' lastIndexOfSeparator 6
4117
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  1708
    "
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  1709
!
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  1710
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  1711
lastIndexOfSeparatorStartingAt:startIndex
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1712
    "return the index of the previous whitespace character,
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1713
     starting the search at startIndex (and searching backwards);
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1714
     returns 0 if no separator was found"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1715
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1716
    |start  "{ Class: SmallInteger }"|
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1717
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1718
    start := startIndex.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1719
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1720
    start to:1 by:-1 do:[:index |
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1721
	(self at:index) isSeparator ifTrue:[^ index]
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1722
    ].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1723
    ^ 0
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1724
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1725
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1726
     'hello world' lastIndexOfSeparatorStartingAt:3
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1727
     'hello world' lastIndexOfSeparatorStartingAt:7
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1728
     'helloworld' lastIndexOfSeparatorStartingAt:7
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1729
     ' helloworld' lastIndexOfSeparatorStartingAt:7
4117
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  1730
    "
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1731
! !
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1732
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1733
!CharacterArray methodsFor:'comparing'!
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1734
6742
292775fda600 avoid endless recursion when comparing int < string
Claus Gittinger <cg@exept.de>
parents: 6655
diff changeset
  1735
< aString
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1736
    "Compare the receiver with the argument and return true if the
6742
292775fda600 avoid endless recursion when comparing int < string
Claus Gittinger <cg@exept.de>
parents: 6655
diff changeset
  1737
     receiver is greater than the argument. Otherwise return false.
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1738
     This comparison is based on the elements ascii code -
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1739
     i.e. upper/lowercase & upper/lowercase & national characters are NOT treated specially."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1740
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1741
    |mySize    "{ Class: SmallInteger }"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1742
     otherSize "{ Class: SmallInteger }"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1743
     n         "{ Class: SmallInteger }"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1744
     c1 c2|
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1745
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1746
    mySize := self size.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1747
    otherSize := aString string size.
6742
292775fda600 avoid endless recursion when comparing int < string
Claus Gittinger <cg@exept.de>
parents: 6655
diff changeset
  1748
    n := mySize min:otherSize.
292775fda600 avoid endless recursion when comparing int < string
Claus Gittinger <cg@exept.de>
parents: 6655
diff changeset
  1749
292775fda600 avoid endless recursion when comparing int < string
Claus Gittinger <cg@exept.de>
parents: 6655
diff changeset
  1750
    1 to:n do:[:index |
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1751
	c1 := self at:index.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1752
	c2 := aString at:index.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1753
	(c1 == c2 or:[c1 = c2]) ifFalse:[^ c1 < c2].
6742
292775fda600 avoid endless recursion when comparing int < string
Claus Gittinger <cg@exept.de>
parents: 6655
diff changeset
  1754
    ].
292775fda600 avoid endless recursion when comparing int < string
Claus Gittinger <cg@exept.de>
parents: 6655
diff changeset
  1755
    ^ mySize < otherSize
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1756
!
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1757
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1758
= aString
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1759
    "Compare the receiver with the argument and return true if the
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1760
     receiver is equal to the argument. Otherwise return false.
1252
105280fd8d72 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1250
diff changeset
  1761
9191
7f1797f8d0a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9190
diff changeset
  1762
     This compare does NOT ignore case differences,
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1763
     therefore 'foo' = 'Foo' will return false.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1764
     Since this is incompatible to ST-80 (at least, V2.x) , this may change."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1765
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1766
    |mySize    "{ Class: SmallInteger }"
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1767
     otherSize |
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1768
5963
23462e06dcff compare with Texts fixed (should compare equal if strings are)
Claus Gittinger <cg@exept.de>
parents: 5946
diff changeset
  1769
    (aString isString or:[aString species == self species]) ifFalse:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1770
	^ false
5963
23462e06dcff compare with Texts fixed (should compare equal if strings are)
Claus Gittinger <cg@exept.de>
parents: 5946
diff changeset
  1771
    ].
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1772
    mySize := self size.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1773
    otherSize := aString size.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1774
    mySize == otherSize ifFalse:[^ false].
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1775
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1776
    1 to:mySize do:[:index |
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1777
	(self at:index) = (aString at:index) ifFalse:[^ false].
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1778
    ].
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1779
    ^ true
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1780
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1781
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1782
     'foo' = 'Foo'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1783
     'foo' = 'bar'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1784
     'foo' = 'foo'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1785
     'foo' = 'foo' asText
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1786
     'foo' asText = 'foo'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1787
     'foo' asText = 'foo' asText
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1788
    "
1252
105280fd8d72 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1250
diff changeset
  1789
105280fd8d72 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1250
diff changeset
  1790
    "Modified: 22.4.1996 / 15:53:58 / cg"
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1791
!
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1792
9191
7f1797f8d0a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9190
diff changeset
  1793
> aString
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1794
    "Compare the receiver with the argument and return true if the
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1795
     receiver is greater than the argument. Otherwise return false.
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1796
     This comparison is based on the elements ascii code -
1252
105280fd8d72 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1250
diff changeset
  1797
     i.e. upper/lowercase & upper/lowercase & national characters are NOT treated specially."
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1798
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1799
    |mySize    "{ Class: SmallInteger }"
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1800
     otherSize "{ Class: SmallInteger }"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1801
     n         "{ Class: SmallInteger }"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1802
     c1 c2|
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1803
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1804
    mySize := self size.
5929
a3d2e7aaa3a3 added #compareCaselessWith:
Claus Gittinger <cg@exept.de>
parents: 5898
diff changeset
  1805
    otherSize := aString string size.
a3d2e7aaa3a3 added #compareCaselessWith:
Claus Gittinger <cg@exept.de>
parents: 5898
diff changeset
  1806
    n := mySize min:otherSize.
a3d2e7aaa3a3 added #compareCaselessWith:
Claus Gittinger <cg@exept.de>
parents: 5898
diff changeset
  1807
a3d2e7aaa3a3 added #compareCaselessWith:
Claus Gittinger <cg@exept.de>
parents: 5898
diff changeset
  1808
    1 to:n do:[:index |
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1809
	c1 := self at:index.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1810
	c2 := aString at:index.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1811
	(c1 == c2 or:[c1 = c2]) ifFalse:[^ c1 > c2].
5929
a3d2e7aaa3a3 added #compareCaselessWith:
Claus Gittinger <cg@exept.de>
parents: 5898
diff changeset
  1812
    ].
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1813
    ^ mySize > otherSize
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1814
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1815
    "Modified: 22.4.1996 / 15:55:00 / cg"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1816
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1817
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1818
compareCaselessWith:aString
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1819
    "Compare the receiver against the argument, ignoreing case.
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1820
     Return 1 if the receiver is greater, 0 if equal and -1 if less than the argument.
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1821
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1822
     This comparison is based on the elements ascii code -
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1823
     i.e. national characters are NOT treated specially.
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1824
     'foo' compareWith: 'Foo' will return 0"
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1825
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1826
    |mySize    "{ Class: SmallInteger }"
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  1827
     otherSize "{ Class: SmallInteger }"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1828
     n         "{ Class: SmallInteger }"
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1829
     c1 c2|
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1830
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1831
    mySize := self size.
5739
4fd3be7ccc75 oops some relational ops did accept a non-string arg
Claus Gittinger <cg@exept.de>
parents: 5732
diff changeset
  1832
    otherSize := aString string size.
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1833
    n := mySize min:otherSize.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1834
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1835
    1 to:n do:[:index |
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1836
	c1 := (self at:index) asLowercase.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1837
	c2 := (aString at:index) asLowercase.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1838
	c1 > c2 ifTrue:[^ 1].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1839
	c1 < c2 ifTrue:[^ -1].
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1840
    ].
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1841
    mySize > otherSize ifTrue:[^ 1].
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1842
    mySize < otherSize ifTrue:[^ -1].
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1843
    ^ 0
1252
105280fd8d72 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1250
diff changeset
  1844
105280fd8d72 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1250
diff changeset
  1845
    "Modified: 22.4.1996 / 15:56:07 / cg"
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1846
!
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  1847
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1848
compareWith:aString
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1849
    "Compare the receiver with the argument and return 1 if the receiver is
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1850
     greater, 0 if equal and -1 if less than the argument.
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1851
     This comparison is based on the elements' codepoints -
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1852
     i.e. upper/lowercase & national characters are NOT treated specially.
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1853
     'foo' compareWith: 'Foo' will return 1.
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1854
     while 'foo' sameAs:'Foo' will return true"
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1855
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1856
    |mySize    "{ Class: SmallInteger }"
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1857
     otherSize "{ Class: SmallInteger }"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1858
     n         "{ Class: SmallInteger }"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1859
     c1 c2|
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1860
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1861
    mySize := self size.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1862
    otherSize := aString string size.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1863
    n := mySize min:otherSize.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1864
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1865
    1 to:n do:[:index |
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1866
	c1 := self at:index.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1867
	c2 := aString at:index.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1868
	c1 > c2 ifTrue:[^ 1].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1869
	c1 < c2 ifTrue:[^ -1].
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1870
    ].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1871
    mySize > otherSize ifTrue:[^ 1].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1872
    mySize < otherSize ifTrue:[^ -1].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1873
    ^ 0
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1874
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1875
    "Modified: 22.4.1996 / 15:56:07 / cg"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1876
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1877
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1878
endsWith:aStringOrCharacter
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1879
    "return true, if the receiver ends with something, aStringOrCharacter."
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1880
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1881
    |s|
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1882
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1883
    (s := self string) ~~ self ifTrue:[
17763
019bb9c842c5 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17761
diff changeset
  1884
        ^ s endsWith:aStringOrCharacter
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1885
    ].
17763
019bb9c842c5 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17761
diff changeset
  1886
    (self notEmpty and:[aStringOrCharacter isCharacter]) ifTrue:[
019bb9c842c5 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17761
diff changeset
  1887
        ^ self last = aStringOrCharacter
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1888
    ].
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1889
    ^ super endsWith:aStringOrCharacter
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1890
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1891
    "
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1892
     'hello world' endsWith:'world'
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1893
     'hello world' asText allBold endsWith:'world'
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1894
    "
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1895
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1896
    "Modified: 12.5.1996 / 15:49:18 / cg"
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1897
!
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1898
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1899
hammingDistanceTo:aString
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1900
    "return the hamming distance (the number of characters which are different).
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1901
     In information theory, the Hamming distance between two strings of equal length
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1902
     is the number of positions for which the corresponding symbols are different.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1903
     Put another way, it measures the minimum number of substitutions required to change
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1904
     one into the other, or the number of errors that transformed one string into the other."
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1905
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1906
    self assert:(aString size == self size).
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1907
    ^ 1 to:self size count:[:idx | (self at:idx) ~= (aString at:idx)]
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1908
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1909
    "
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1910
     'roses' hammingDistanceTo:'toned'
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1911
    "
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1912
!
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1913
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1914
hash
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1915
    "return an integer useful as a hash-key"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  1916
10698
08bfe7364c0f oops: Unicode16String-hash returned different value from
sr
parents: 10671
diff changeset
  1917
    |h g|
08bfe7364c0f oops: Unicode16String-hash returned different value from
sr
parents: 10671
diff changeset
  1918
08bfe7364c0f oops: Unicode16String-hash returned different value from
sr
parents: 10671
diff changeset
  1919
    "/
08bfe7364c0f oops: Unicode16String-hash returned different value from
sr
parents: 10671
diff changeset
  1920
    "/ this is the dragon-book algorithm
08bfe7364c0f oops: Unicode16String-hash returned different value from
sr
parents: 10671
diff changeset
  1921
    "/
08bfe7364c0f oops: Unicode16String-hash returned different value from
sr
parents: 10671
diff changeset
  1922
    h := 0.
08bfe7364c0f oops: Unicode16String-hash returned different value from
sr
parents: 10671
diff changeset
  1923
    self reverseDo:[:char |
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  1924
"/ Sorry, stc cannot compile this (as of 10.9.2007)
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  1925
"/        h := (h bitShift:4) + char asciiValue.
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1926
	h := (h bitShift:4).
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1927
	h:= h + char codePoint.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1928
	h := h bitAnd:16rFFFFFFFF.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1929
	g := (h bitAnd: 16rF0000000).
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1930
	g ~~ 0 ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1931
	    h := h bitXor:(g bitShift:-24).
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1932
	    h := h bitXor:g.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1933
	].
10698
08bfe7364c0f oops: Unicode16String-hash returned different value from
sr
parents: 10671
diff changeset
  1934
    ].
08bfe7364c0f oops: Unicode16String-hash returned different value from
sr
parents: 10671
diff changeset
  1935
    "/
08bfe7364c0f oops: Unicode16String-hash returned different value from
sr
parents: 10671
diff changeset
  1936
    "/ multiply by large prime to spread values
08bfe7364c0f oops: Unicode16String-hash returned different value from
sr
parents: 10671
diff changeset
  1937
    "/ This speeds up Set and Dictionary by a factor of 10!!
08bfe7364c0f oops: Unicode16String-hash returned different value from
sr
parents: 10671
diff changeset
  1938
    "/
08bfe7364c0f oops: Unicode16String-hash returned different value from
sr
parents: 10671
diff changeset
  1939
    h := h * 31415821.
08bfe7364c0f oops: Unicode16String-hash returned different value from
sr
parents: 10671
diff changeset
  1940
    h := h bitAnd:16r3fffffff.
08bfe7364c0f oops: Unicode16String-hash returned different value from
sr
parents: 10671
diff changeset
  1941
    ^ h
08bfe7364c0f oops: Unicode16String-hash returned different value from
sr
parents: 10671
diff changeset
  1942
08bfe7364c0f oops: Unicode16String-hash returned different value from
sr
parents: 10671
diff changeset
  1943
    "
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  1944
     'a' hash
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  1945
     'a' asUnicode16String hash
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  1946
     'aa' hash
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  1947
     'aa' asUnicode16String hash
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  1948
     'ab' hash
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  1949
     'ab' asUnicode16String hash
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  1950
     'ab' hash
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  1951
     'ab' asArray hash
10698
08bfe7364c0f oops: Unicode16String-hash returned different value from
sr
parents: 10671
diff changeset
  1952
    "
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1953
!
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  1954
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1955
levenshteinTo:aString
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1956
    "return the levenshtein distance to the argument, aString;
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1957
     this value corresponds to the number of replacements that have to be
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1958
     made to get aString from the receiver.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1959
     See IEEE transactions on Computers 1976 Pg 172 ff."
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1960
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1961
    "
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1962
     in the following, we assume that ommiting a character
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1963
     is less of an error than inserting an extra character.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1964
     Therefore the different insertion (i) and deletion (d) values.
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1965
	s: substitution weight
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1966
	k: keyboard weight (typing a nearby key) - or nil (then use s)
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1967
	c: case weight                           - or nil (then use s)
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1968
	e: exchange weight                       - or nil (then use s*2)
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1969
	i: insertion of extra character weight
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1970
	d: delete of a character weight
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1971
    "
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1972
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1973
    ^ StringUtilities
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1974
	    levenshteinDistanceFrom:self
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1975
	    to:aString
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1976
	    s:4 k:4 c:4 e:nil i:2 d:6
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1977
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1978
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1979
     'computer' levenshteinTo:'computer'
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1980
     'cOmputer' levenshteinTo:'computer'
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1981
     'cOmpuTer' levenshteinTo:'computer'
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1982
     'cimputer' levenshteinTo:'computer'
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1983
     'cumputer' levenshteinTo:'computer'
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1984
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1985
     'cmputer' levenshteinTo:'computer'
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1986
     'coomputer' levenshteinTo:'computer'
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1987
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1988
     'ocmprt' levenshteinTo:'computer'
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1989
     'computer' levenshteinTo:'computer'
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1990
     'ocmputer' levenshteinTo:'computer'
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1991
     'cmputer' levenshteinTo:'computer'
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1992
     'computer' levenshteinTo:'cmputer'
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1993
     'Computer' levenshteinTo:'computer'
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1994
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1995
     'compiter' levenshteinTo:'computer'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1996
     'compoter' levenshteinTo:'computer'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1997
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  1998
     'comptuer' levenshteinTo:'computer'
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  1999
    "
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2000
!
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2001
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2002
levenshteinTo:aString s:substWeight k:kbdTypoWeight c:caseWeight i:insrtWeight d:deleteWeight
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2003
    "parametrized levenshtein.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2004
     return the levenshtein distance to the argument, aString;
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2005
     this value corrensponds to the number of replacements that have to be
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2006
     made to get aString from the receiver.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2007
     The arguments are the costs for
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2008
	s:substitution,
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2009
	k:keyboard type (substitution),
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2010
	c:case-change,
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2011
	i:insertion
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2012
	d:deletion
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2013
     of a character.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2014
     See IEEE transactions on Computers 1976 Pg 172 ff"
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2015
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2016
    ^ StringUtilities
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2017
	    levenshteinDistanceFrom:self
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2018
	    to:aString
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2019
	    s:substWeight k:kbdTypoWeight c:caseWeight e:nil i:insrtWeight d:deleteWeight
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2020
!
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2021
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2022
sameAs:aString
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2023
    "Compare the receiver with the argument like =, but ignore case differences.
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2024
     Return true or false."
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2025
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2026
    |mySize "{ Class: SmallInteger }"
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2027
     otherSize c1 c2|
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2028
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2029
    self == aString ifTrue:[^ true].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2030
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2031
    mySize := self size.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2032
    otherSize := aString string size.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2033
    mySize == otherSize ifFalse:[^ false].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2034
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2035
    1 to:mySize do:[:index |
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2036
	c1 := self at:index.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2037
	c2 := aString at:index.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2038
	c1 == c2 ifFalse:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2039
	    (c1 sameAs:c2) ifFalse:[^ false].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2040
	]
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2041
    ].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2042
    ^ true
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2043
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2044
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2045
     'foo' sameAs: 'Foo'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2046
     'foo' sameAs: 'bar'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2047
     'foo' sameAs: 'foo'
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2048
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2049
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2050
    "Modified: 22.4.1996 / 15:56:17 / cg"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2051
!
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2052
5242
0da078635576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5230
diff changeset
  2053
sameAs:aString ignoreCase:ignoreCase
0da078635576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5230
diff changeset
  2054
    "Compare the receiver with the argument.
0da078635576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5230
diff changeset
  2055
     If ignoreCase is true, this is the same as #sameAs:,
0da078635576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5230
diff changeset
  2056
     if false, this is the same as #=."
0da078635576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5230
diff changeset
  2057
0da078635576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5230
diff changeset
  2058
    ignoreCase ifTrue:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2059
	^ self sameAs:aString
5242
0da078635576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5230
diff changeset
  2060
    ].
0da078635576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5230
diff changeset
  2061
    ^ self = aString
0da078635576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5230
diff changeset
  2062
0da078635576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5230
diff changeset
  2063
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2064
     'foo' sameAs:'Foo' ignoreCase:false
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2065
     'foo' sameAs:'foo' ignoreCase:true
5242
0da078635576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5230
diff changeset
  2066
    "
0da078635576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5230
diff changeset
  2067
0da078635576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5230
diff changeset
  2068
!
0da078635576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5230
diff changeset
  2069
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2070
sameCharacters:aString
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2071
    "count & return the number of characters which are the same
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2072
     (ignoring case and emphasis) in the receiver and the argument, aString."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2073
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2074
    |n "{ Class: SmallInteger }"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2075
     c1 c2 cnt|
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2076
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2077
    n := self size.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2078
    n := n min:(aString string size).
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2079
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2080
    cnt := 0.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2081
    1 to:n do:[:index |
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2082
	c1 := self at:index.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2083
	c2 := aString at:index.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2084
	((c1 == c2)
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2085
	or:[c1 asLowercase = c2 asLowercase]) ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2086
	    cnt := cnt + 1
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2087
	]
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2088
    ].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2089
    ^ cnt
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2090
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2091
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2092
     'foobarbaz' sameCharacters: 'foo'
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2093
     'foobarbaz' sameCharacters: 'Foo'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2094
     'foobarbaz' sameCharacters: 'baz'
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2095
    "
5510
a261b8f5d66f moved #sameEmphasisAs: and #sameStringAndEmphasisAs:
Claus Gittinger <cg@exept.de>
parents: 5487
diff changeset
  2096
!
a261b8f5d66f moved #sameEmphasisAs: and #sameStringAndEmphasisAs:
Claus Gittinger <cg@exept.de>
parents: 5487
diff changeset
  2097
a261b8f5d66f moved #sameEmphasisAs: and #sameStringAndEmphasisAs:
Claus Gittinger <cg@exept.de>
parents: 5487
diff changeset
  2098
sameEmphasisAs:aStringOrText
a261b8f5d66f moved #sameEmphasisAs: and #sameStringAndEmphasisAs:
Claus Gittinger <cg@exept.de>
parents: 5487
diff changeset
  2099
    "compare the receivers and the arguments emphasis"
a261b8f5d66f moved #sameEmphasisAs: and #sameStringAndEmphasisAs:
Claus Gittinger <cg@exept.de>
parents: 5487
diff changeset
  2100
a261b8f5d66f moved #sameEmphasisAs: and #sameStringAndEmphasisAs:
Claus Gittinger <cg@exept.de>
parents: 5487
diff changeset
  2101
    ^ self emphasis = aStringOrText emphasis
a261b8f5d66f moved #sameEmphasisAs: and #sameStringAndEmphasisAs:
Claus Gittinger <cg@exept.de>
parents: 5487
diff changeset
  2102
a261b8f5d66f moved #sameEmphasisAs: and #sameStringAndEmphasisAs:
Claus Gittinger <cg@exept.de>
parents: 5487
diff changeset
  2103
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2104
     'hello' asText sameEmphasisAs: 'hello'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2105
     'hello' asText sameEmphasisAs: 'hello' asText
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2106
     'hello' asText allBold sameEmphasisAs: 'hello'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2107
     'hello' asText allBold sameEmphasisAs: 'fooba' asText allBold
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2108
     'hello' asText allBold sameEmphasisAs: 'fooba' asText allItalic
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2109
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2110
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2111
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2112
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2113
9191
7f1797f8d0a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9190
diff changeset
  2114
sameStringAndEmphasisAs:aStringOrText
5739
4fd3be7ccc75 oops some relational ops did accept a non-string arg
Claus Gittinger <cg@exept.de>
parents: 5732
diff changeset
  2115
    "compare both emphasis and string of the receiver and the argument"
5510
a261b8f5d66f moved #sameEmphasisAs: and #sameStringAndEmphasisAs:
Claus Gittinger <cg@exept.de>
parents: 5487
diff changeset
  2116
a261b8f5d66f moved #sameEmphasisAs: and #sameStringAndEmphasisAs:
Claus Gittinger <cg@exept.de>
parents: 5487
diff changeset
  2117
    aStringOrText isString ifFalse:[^ false].
a261b8f5d66f moved #sameEmphasisAs: and #sameStringAndEmphasisAs:
Claus Gittinger <cg@exept.de>
parents: 5487
diff changeset
  2118
    (self string = aStringOrText string) ifFalse:[^ false].
a261b8f5d66f moved #sameEmphasisAs: and #sameStringAndEmphasisAs:
Claus Gittinger <cg@exept.de>
parents: 5487
diff changeset
  2119
    self hasChangeOfEmphasis = aStringOrText hasChangeOfEmphasis ifFalse:[^ false].
a261b8f5d66f moved #sameEmphasisAs: and #sameStringAndEmphasisAs:
Claus Gittinger <cg@exept.de>
parents: 5487
diff changeset
  2120
    ^ self emphasis = aStringOrText emphasis
a261b8f5d66f moved #sameEmphasisAs: and #sameStringAndEmphasisAs:
Claus Gittinger <cg@exept.de>
parents: 5487
diff changeset
  2121
a261b8f5d66f moved #sameEmphasisAs: and #sameStringAndEmphasisAs:
Claus Gittinger <cg@exept.de>
parents: 5487
diff changeset
  2122
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2123
     'hello' asText sameEmphasisAs: 'hello'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2124
     'hello' asText sameEmphasisAs: 'hello' asText
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2125
     'hello' asText allBold sameEmphasisAs: 'hello'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2126
     'hello' asText allBold sameEmphasisAs: 'fooba' asText allBold
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2127
     'hello' asText allBold sameEmphasisAs: 'fooba' asText allItalic
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2128
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2129
     'hello' sameEmphasisAs: 'hello' asText
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2130
     'hello' sameEmphasisAs: 'hello' asText allBold
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2131
     'hello' sameEmphasisAs: 'fooba'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2132
     'hello' sameEmphasisAs: 'fooba' asText
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2133
     'hello' sameEmphasisAs: 'fooba' asText allBold
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2134
     'hello' sameEmphasisAs: 'fooba' asText allItalic
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2135
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2136
     'hello' asText sameStringAndEmphasisAs: 'hello'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2137
     'hello' asText sameStringAndEmphasisAs: 'hello' asText
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2138
     'hello' asText allBold sameStringAndEmphasisAs: 'hello'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2139
     'hello' asText allBold sameStringAndEmphasisAs: 'fooba' asText allBold
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2140
     'hello' asText allBold sameStringAndEmphasisAs: 'fooba' asText allItalic
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2141
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2142
     'hello' sameStringAndEmphasisAs: 'hello' asText
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2143
     'hello' sameStringAndEmphasisAs: 'hello' asText allBold
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2144
     'hello' sameStringAndEmphasisAs: 'fooba'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2145
     'hello' sameStringAndEmphasisAs: 'fooba' asText
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2146
     'hello' sameStringAndEmphasisAs: 'fooba' asText allBold
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2147
     'hello' sameStringAndEmphasisAs: 'fooba' asText allItalic
5510
a261b8f5d66f moved #sameEmphasisAs: and #sameStringAndEmphasisAs:
Claus Gittinger <cg@exept.de>
parents: 5487
diff changeset
  2148
    "
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2149
!
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2150
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2151
spellAgainst: aString
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2152
    "return an integer between 0 and 100 indicating how similar
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2153
     the argument is to the receiver.  No case conversion is done.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2154
     This algorithm is much simpler (but also less exact) than the
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2155
     levenshtein distance. Experiment which is better for your
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2156
     application."
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2157
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2158
    | i1     "{ Class: SmallInteger }"
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2159
      i2     "{ Class: SmallInteger }"
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2160
      next1  "{ Class: SmallInteger }"
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2161
      next2  "{ Class: SmallInteger }"
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2162
      size1  "{ Class: SmallInteger }"
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2163
      size2  "{ Class: SmallInteger }"
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2164
      score  "{ Class: SmallInteger }"
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2165
      maxLen "{ Class: SmallInteger }" |
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2166
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2167
    size1 := self size.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2168
    size2 := aString size.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2169
    maxLen := size1 max:size2.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2170
    score := 0.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2171
    i1 := i2 := 1.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2172
    [i1 <= size1 and: [i2 <= size2]] whileTrue:[
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2173
	next1 := i1 + 1.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2174
	next2 := i2 + 1.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2175
	(self at:i1) == (aString at:i2) ifTrue: [
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2176
	    score := score+1.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2177
	    i1 := next1.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2178
	    i2 := next2
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2179
	] ifFalse: [
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2180
	    (i2 < size2 and: [(self at:i1) == (aString at:next2)]) ifTrue: [
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2181
		i2 := next2
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2182
	    ] ifFalse: [
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2183
		(i1 < size1 and: [(self at:next1) == (aString at:i2)]) ifTrue: [
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2184
		    i1 := next1
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2185
		] ifFalse: [
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2186
		    i1 := next1.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2187
		    i2 := next2
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2188
		]
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2189
	    ]
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2190
	]
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2191
    ].
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2192
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2193
    score == maxLen ifTrue: [^ 100].
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2194
    ^ 100 * score // maxLen
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2195
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2196
    "
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2197
     'Smalltalk' spellAgainst: 'Smalltlak'
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2198
     'Smalltalk' spellAgainst: 'smalltlak'
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2199
     'Smalltalk' spellAgainst: 'smalltalk'
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2200
     'Smalltalk' spellAgainst: 'smalltlk'
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2201
     'Smalltalk' spellAgainst: 'Smalltolk'
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2202
    "
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2203
!
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2204
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2205
startsWith:aString
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2206
    "return true, if the receiver starts with something, aString.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2207
     If the argument is empty, true is returned."
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2208
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2209
    |s|
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2210
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2211
    (s := self string) ~~ self ifTrue:[
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2212
	^ s startsWith:aString
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2213
    ].
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2214
    ^ super startsWith:aString
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2215
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2216
    "
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2217
     'hello world' startsWith:'hello'
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2218
     'hello world' asText allBold startsWith:'hello'
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2219
     'hello world' asText allBold startsWith:''
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2220
    "
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2221
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2222
    "Created: 12.5.1996 / 15:46:40 / cg"
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2223
    "Modified: 12.5.1996 / 15:49:24 / cg"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2224
! !
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2225
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2226
!CharacterArray methodsFor:'converting'!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2227
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2228
asArrayOfSubstrings
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2229
    "return an array of substrings from the receiver, interpreting
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2230
     separators (i.e. spaces & newlines) as word-delimiters.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2231
     This is a compatibility method - the actual work is done in
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2232
     asCollectionOfWords."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2233
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2234
    ^ self asCollectionOfWords asArray
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2235
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2236
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2237
     '1 one two three four 5 five' asArrayOfSubstrings
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2238
     '1
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2239
one
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2240
	two three four 5 five' asArrayOfSubstrings
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2241
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2242
!
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2243
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2244
asAsciiZ
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2245
    "if the receiver does not end with a 0-valued character, return a copy of it,
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2246
     with an additional 0-character. Otherwise return the receiver. This is sometimes
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2247
     needed when a string has to be passed to C, which needs 0-terminated strings.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2248
     Notice, that all singleByte strings are already 0-terminated in ST/X, whereas wide
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2249
     strings are not."
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2250
17747
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  2251
    (self notEmpty and:[self last codePoint == 0]) ifTrue:[^ self ].
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2252
    ^ self copyWith:(Character value:0).
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2253
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2254
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2255
     'abc' asAsciiZ
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2256
     'abc' asWideString asAsciiZ
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2257
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2258
!
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2259
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2260
asCollectionOfLines
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2261
    "return a collection containing the lines (separated by cr)
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2262
     of the receiver. If multiple cr's occur in a row, the result will
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2263
     contain empty strings."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2264
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2265
    ^ self asCollectionOfSubstringsSeparatedBy:Character cr
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2266
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2267
    "
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2268
     '1 one\2 two\3 three\4 four\5 five' withCRs asCollectionOfLines
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2269
     '1 one\\\\2 two\3 three' withCRs asCollectionOfLines
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2270
    "
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2271
!
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2272
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2273
asCollectionOfSubstringsSeparatedBy:aCharacter
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2274
    "return a collection containing the lines (separated by aCharacter)
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2275
     of the receiver. If aCharacter occurs multiple times in a row,
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2276
     the result will contain empty strings."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2277
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2278
    ^ self asCollectionOfSubCollectionsSeparatedBy:aCharacter
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2279
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2280
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2281
     '1 one:2 two:3 three:4 four:5 five' withCRs asCollectionOfSubstringsSeparatedBy:$:
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2282
     '1 one 2 two 3 three 4 four 5 five' withCRs asCollectionOfSubstringsSeparatedBy:Character space
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2283
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2284
!
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2285
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2286
asCollectionOfSubstringsSeparatedBy:aCharacter exceptIn:ch
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2287
    "return a collection containing the lines (separated by aCharacter)
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2288
     of the receiver. If aCharacter occurs multiple times in a row,
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2289
     the result will contain empty strings. The separation is not done,
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2290
     inside a matching pair of ch-substrings. Can be used to tokenize csv-like strings."
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2291
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2292
    |lines myClass except i c
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2293
     startIndex    "{ Class:SmallInteger }"
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2294
     stopIndex     "{ Class:SmallInteger }" |
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2295
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2296
    lines := StringCollection new.
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2297
    myClass := self species.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2298
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2299
    startIndex := 1.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2300
    except := false.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2301
    [
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2302
	i := startIndex-1.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2303
	[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2304
	    i := i+1.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2305
	    c := self at:i.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2306
	    c = ch ifTrue:[ except := except not. ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2307
	    i < self size and:[except or:[c ~= aCharacter]]
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2308
	] whileTrue.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2309
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2310
	c = aCharacter ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2311
	    stopIndex := i -1.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2312
	] ifFalse: [
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2313
	    stopIndex := i.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2314
	].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2315
	(stopIndex < startIndex) ifTrue: [
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2316
	    lines add:(myClass new:0)
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2317
	] ifFalse: [
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2318
	    lines add:(self copyFrom:startIndex to:stopIndex)
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2319
	].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2320
	startIndex := stopIndex + 2.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2321
	startIndex <= self size
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2322
    ] whileTrue.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2323
    ^ lines
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2324
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2325
    "
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2326
     'asd''f;d''dd;s' asCollectionOfSubstringsSeparatedBy:$; exceptIn:$'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2327
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2328
    "/ 'asd "hello bla" foo "bla bla" bar' asCollectionOfSubstringsSeparatedBy:$  exceptIn:$"
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2329
!
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2330
10501
999589445aa7 add new method for splitting a csv string into csv elements
ab
parents: 10437
diff changeset
  2331
asCollectionOfSubstringsSeparatedBy: aFieldSeparator textSeparator:aTextSeparatorOrNil
999589445aa7 add new method for splitting a csv string into csv elements
ab
parents: 10437
diff changeset
  2332
    "return a collection containing the words (separated by aFieldSeparator)
999589445aa7 add new method for splitting a csv string into csv elements
ab
parents: 10437
diff changeset
  2333
     of the receiver. This allows breaking up csv strings."
999589445aa7 add new method for splitting a csv string into csv elements
ab
parents: 10437
diff changeset
  2334
999589445aa7 add new method for splitting a csv string into csv elements
ab
parents: 10437
diff changeset
  2335
    ^ self asCollectionOfSubstringsSeparatedByAll: aFieldSeparator
999589445aa7 add new method for splitting a csv string into csv elements
ab
parents: 10437
diff changeset
  2336
999589445aa7 add new method for splitting a csv string into csv elements
ab
parents: 10437
diff changeset
  2337
"/     '"First", "Second,SecondAdd", "Third"' asCollectionOfSubstringsSeparatedBy:',' textSeparator: '"'
999589445aa7 add new method for splitting a csv string into csv elements
ab
parents: 10437
diff changeset
  2338
"/     'First,Second,Third' asCollectionOfSubstringsSeparatedBy:',' textSeparator: nil
999589445aa7 add new method for splitting a csv string into csv elements
ab
parents: 10437
diff changeset
  2339
!
999589445aa7 add new method for splitting a csv string into csv elements
ab
parents: 10437
diff changeset
  2340
7339
20969b5770c9 asCollectionOfSubstringsSeparatedByAll:
Claus Gittinger <cg@exept.de>
parents: 7318
diff changeset
  2341
asCollectionOfSubstringsSeparatedByAll:aSeparatorString
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2342
    "return a collection containing the lines (separated by aSeparatorString)
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2343
     of the receiver. If aSeparatorString occurs multiple times in a row,
7339
20969b5770c9 asCollectionOfSubstringsSeparatedByAll:
Claus Gittinger <cg@exept.de>
parents: 7318
diff changeset
  2344
     the result will contain empty strings."
20969b5770c9 asCollectionOfSubstringsSeparatedByAll:
Claus Gittinger <cg@exept.de>
parents: 7318
diff changeset
  2345
8852
9f5984eff2c2 use asCollectionOfSubCollectionsSeparatedBy*
Claus Gittinger <cg@exept.de>
parents: 8794
diff changeset
  2346
    ^ self asCollectionOfSubCollectionsSeparatedByAll:aSeparatorString
9f5984eff2c2 use asCollectionOfSubCollectionsSeparatedBy*
Claus Gittinger <cg@exept.de>
parents: 8794
diff changeset
  2347
9f5984eff2c2 use asCollectionOfSubCollectionsSeparatedBy*
Claus Gittinger <cg@exept.de>
parents: 8794
diff changeset
  2348
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2349
     '1::2::3::4::5::' asCollectionOfSubstringsSeparatedByAll:'::'
7339
20969b5770c9 asCollectionOfSubstringsSeparatedByAll:
Claus Gittinger <cg@exept.de>
parents: 7318
diff changeset
  2350
    "
20969b5770c9 asCollectionOfSubstringsSeparatedByAll:
Claus Gittinger <cg@exept.de>
parents: 7318
diff changeset
  2351
!
20969b5770c9 asCollectionOfSubstringsSeparatedByAll:
Claus Gittinger <cg@exept.de>
parents: 7318
diff changeset
  2352
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2353
asCollectionOfSubstringsSeparatedByAny:aCollectionOfSeparators
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2354
    "return a collection containing the words (separated by any character
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2355
     from aCollectionOfSeparators) of the receiver.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2356
     This allows breaking up strings using any character as separator."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2357
8852
9f5984eff2c2 use asCollectionOfSubCollectionsSeparatedBy*
Claus Gittinger <cg@exept.de>
parents: 8794
diff changeset
  2358
    ^ self asCollectionOfSubCollectionsSeparatedByAny:aCollectionOfSeparators
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2359
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2360
    "
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2361
     'hello:world:isnt:this nice' asCollectionOfSubstringsSeparatedByAny:#($:)
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2362
     'hello:world:isnt:this nice' asCollectionOfSubstringsSeparatedByAny:':'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2363
     'hello:world:isnt:this nice' asCollectionOfSubstringsSeparatedByAny:(Array with:$: with:Character space)
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2364
     'hello:world:isnt:this nice' asCollectionOfSubstringsSeparatedByAny:': '
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2365
     'h1e2l3l4o' asCollectionOfSubstringsSeparatedByAny:($1 to: $9)
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2366
    "
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2367
!
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2368
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2369
asCollectionOfWords
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2370
    "return a collection containing the words (separated by whitespace)
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2371
     of the receiver. Multiple occurrences of whitespace characters will
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2372
     be treated like one - i.e. whitespace is skipped."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2373
7797
49e53638191f +asCollectionOfWordsDo:
Claus Gittinger <cg@exept.de>
parents: 7780
diff changeset
  2374
    |words|
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2375
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2376
    words := StringCollection new.
7797
49e53638191f +asCollectionOfWordsDo:
Claus Gittinger <cg@exept.de>
parents: 7780
diff changeset
  2377
    self asCollectionOfWordsDo:[:w | words add:w].
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2378
    ^ words
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2379
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2380
    "
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2381
     'hello world isnt this nice' asCollectionOfWords
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2382
     '    hello    world   isnt   this   nice  ' asCollectionOfWords
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2383
     'hello' asCollectionOfWords
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2384
     '' asCollectionOfWords
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2385
     '      ' asCollectionOfWords
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  2386
     ' foo bar__baz__bla__ bar ' asCollectionOfWords
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  2387
     ' foo __bar__baz__bla__ bar ' asCollectionOfWords
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2388
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2389
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2390
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2391
asCollectionOfWordsDo:aBlock
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2392
    "evaluate aBlock for each word (separated by whitespace) of the receiver.
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2393
     Multiple occurrences of whitespace characters will be treated like one
7797
49e53638191f +asCollectionOfWordsDo:
Claus Gittinger <cg@exept.de>
parents: 7780
diff changeset
  2394
     - i.e. whitespace is skipped.
49e53638191f +asCollectionOfWordsDo:
Claus Gittinger <cg@exept.de>
parents: 7780
diff changeset
  2395
     Returns the number of words (i.e. the number of invocations of aBlock)."
49e53638191f +asCollectionOfWordsDo:
Claus Gittinger <cg@exept.de>
parents: 7780
diff changeset
  2396
49e53638191f +asCollectionOfWordsDo:
Claus Gittinger <cg@exept.de>
parents: 7780
diff changeset
  2397
    |count  "{ Class:SmallInteger }"
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2398
     start  "{ Class:SmallInteger }"
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2399
     stop   "{ Class:SmallInteger }"
7797
49e53638191f +asCollectionOfWordsDo:
Claus Gittinger <cg@exept.de>
parents: 7780
diff changeset
  2400
     mySize "{ Class:SmallInteger }"|
49e53638191f +asCollectionOfWordsDo:
Claus Gittinger <cg@exept.de>
parents: 7780
diff changeset
  2401
49e53638191f +asCollectionOfWordsDo:
Claus Gittinger <cg@exept.de>
parents: 7780
diff changeset
  2402
    count := 0.
49e53638191f +asCollectionOfWordsDo:
Claus Gittinger <cg@exept.de>
parents: 7780
diff changeset
  2403
    start := 1.
49e53638191f +asCollectionOfWordsDo:
Claus Gittinger <cg@exept.de>
parents: 7780
diff changeset
  2404
    mySize := self size.
49e53638191f +asCollectionOfWordsDo:
Claus Gittinger <cg@exept.de>
parents: 7780
diff changeset
  2405
    [start <= mySize] whileTrue:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2406
	start := self indexOfNonSeparatorStartingAt:start.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2407
	start == 0 ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2408
	    ^ count
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2409
	].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2410
	stop := self indexOfSeparatorStartingAt:start.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2411
	stop == 0 ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2412
	    aBlock value:(self copyFrom:start to:mySize).
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2413
	    ^ count + 1
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2414
	].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2415
	aBlock value:(self copyFrom:start to:(stop - 1)).
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2416
	start := stop.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2417
	count := count + 1
7797
49e53638191f +asCollectionOfWordsDo:
Claus Gittinger <cg@exept.de>
parents: 7780
diff changeset
  2418
    ].
49e53638191f +asCollectionOfWordsDo:
Claus Gittinger <cg@exept.de>
parents: 7780
diff changeset
  2419
    ^ count
49e53638191f +asCollectionOfWordsDo:
Claus Gittinger <cg@exept.de>
parents: 7780
diff changeset
  2420
49e53638191f +asCollectionOfWordsDo:
Claus Gittinger <cg@exept.de>
parents: 7780
diff changeset
  2421
    "
49e53638191f +asCollectionOfWordsDo:
Claus Gittinger <cg@exept.de>
parents: 7780
diff changeset
  2422
     'hello world isnt this nice' asCollectionOfWordsDo:[:w | Transcript showCR:w]
49e53638191f +asCollectionOfWordsDo:
Claus Gittinger <cg@exept.de>
parents: 7780
diff changeset
  2423
     '    hello    world   isnt   this   nice  ' asCollectionOfWordsDo:[:w | Transcript showCR:w]
49e53638191f +asCollectionOfWordsDo:
Claus Gittinger <cg@exept.de>
parents: 7780
diff changeset
  2424
     'hello' asCollectionOfWordsDo:[:w | Transcript showCR:w]
49e53638191f +asCollectionOfWordsDo:
Claus Gittinger <cg@exept.de>
parents: 7780
diff changeset
  2425
     '' asCollectionOfWordsDo:[:w | Transcript showCR:w]
49e53638191f +asCollectionOfWordsDo:
Claus Gittinger <cg@exept.de>
parents: 7780
diff changeset
  2426
     '      ' asCollectionOfWordsDo:[:w | Transcript showCR:w]
49e53638191f +asCollectionOfWordsDo:
Claus Gittinger <cg@exept.de>
parents: 7780
diff changeset
  2427
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2428
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2429
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2430
asComposedText
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2431
    "ST-80 compatibility
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2432
     - ST/X does not (as today) support composedTexts."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2433
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2434
    ^ ComposedText fromString:self string
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2435
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2436
    "Modified: 27.4.1996 / 13:30:30 / cg"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2437
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2438
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2439
asFilename
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2440
    "return a Filename with pathname taken from the receiver"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2441
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2442
    ^ Filename named:self "(self asSingleByteStringReplaceInvalidWith:$?)"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2443
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2444
    "Modified: 20.5.1996 / 09:38:15 / cg"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2445
!
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2446
3060
0faf242e1142 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3024
diff changeset
  2447
asFixedPoint
0faf242e1142 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3024
diff changeset
  2448
    "read a fixedPoint number from the receiver.
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2449
     Notice, that errors may occur during the read,
7423
5b25b8e82453 comments
Claus Gittinger <cg@exept.de>
parents: 7422
diff changeset
  2450
     so you better setup some signal handler when using this method."
3060
0faf242e1142 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3024
diff changeset
  2451
0faf242e1142 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3024
diff changeset
  2452
    ^ FixedPoint readFromString:self
0faf242e1142 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3024
diff changeset
  2453
0faf242e1142 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3024
diff changeset
  2454
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2455
     '0.123' asFixedPoint
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2456
     '12345' asFixedPoint
3060
0faf242e1142 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3024
diff changeset
  2457
     '(1/5)' asFixedPoint
0faf242e1142 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3024
diff changeset
  2458
     'foo' asFixedPoint
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2459
     Object errorSignal handle:[:ex | ex return:0] do:['foo' asFixedPoint]
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2460
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2461
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2462
    "Modified: / 25.10.1997 / 15:19:00 / cg"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2463
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2464
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2465
asFixedPoint:scale
3060
0faf242e1142 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3024
diff changeset
  2466
    "read a fixedPoint number with scale number of post-decimal digits
0faf242e1142 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3024
diff changeset
  2467
     from the receiver. Scale controls the number of displayed digits,
0faf242e1142 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3024
diff changeset
  2468
     not the number of actually valid digits.
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2469
     Notice, that errors may occur during the read,
7423
5b25b8e82453 comments
Claus Gittinger <cg@exept.de>
parents: 7422
diff changeset
  2470
     so you better setup some signal handler when using this method."
3060
0faf242e1142 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3024
diff changeset
  2471
0faf242e1142 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3024
diff changeset
  2472
    ^ (FixedPoint readFromString:self) scale:scale
0faf242e1142 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3024
diff changeset
  2473
0faf242e1142 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3024
diff changeset
  2474
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2475
     '0.123' asFixedPoint:2
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2476
     '123456' asFixedPoint:2
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2477
     ('3.14157' asFixedPoint:1) asFixedPoint:5
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2478
     '3.14157' asFixedPoint:2
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2479
     'foo' asFixedPoint:2
3060
0faf242e1142 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3024
diff changeset
  2480
    "
0faf242e1142 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3024
diff changeset
  2481
0faf242e1142 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3024
diff changeset
  2482
    "Modified: / 25.10.1997 / 15:21:57 / cg"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2483
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2484
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2485
asFloat
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2486
    "read a float number from the receiver.
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2487
     Notice, that errors may occur during the read,
7422
200486204923 comments
Claus Gittinger <cg@exept.de>
parents: 7421
diff changeset
  2488
     so you better setup some exception handler when using this method."
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2489
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2490
    ^ (Number readFromString:self) asFloat
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2491
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2492
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2493
     '0.123' asFloat
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2494
     '12345' asFloat
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2495
     '(1/5)' asFloat
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2496
     Object errorSignal handle:[:ex | ex return:0] do:['foo' asFloat]
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2497
    "
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2498
!
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2499
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2500
asInteger
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2501
    "convert the receiver into an integer.
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2502
     Notice, that errors may occur during the read,
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2503
     so you better setup some exception handler when using this method.
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2504
     Also notice, that this method here is more strict than the code found
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  2505
     in other smalltalks.
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2506
     For less strict integer reading, use Integer readFrom:aString"
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2507
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2508
    ^ Integer readFromString:self
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2509
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2510
    "
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2511
     '12345678901234567890' asInteger
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2512
     '-1234' asInteger
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2513
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2514
     The following raises an error:
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  2515
	 '0.123' asInteger              <- reader finds more after reading 0
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2516
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2517
     whereas the less strict readFrom does not:
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  2518
	 Integer readFrom:'0.123'       <- reader stops at ., returning 0
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  2519
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  2520
     '0.123' asInteger
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2521
     '0.123' asNumber    <- returns what you expect
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2522
     Object errorSignal handle:[:ex | ex return:0] do:['foo' asInteger]
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2523
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2524
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2525
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2526
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2527
asLowercase
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2528
    "return a copy of myself in lowercase letters"
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2529
8003
6e690f4b79f1 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7995
diff changeset
  2530
    |newStr c bitsPerCharacter
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2531
     mySize "{ Class: SmallInteger }" |
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2532
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2533
    mySize := self size.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2534
    mySize == 0 ifTrue:[^ self].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2535
    newStr := self species new:mySize.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2536
    bitsPerCharacter := newStr bitsPerCharacter.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2537
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2538
    1 to:mySize do:[:i |
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  2539
	c := (self at:i) asLowercase.
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  2540
	c bitsPerCharacter > bitsPerCharacter ifTrue:[
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  2541
	    newStr := c stringSpecies fromString:newStr.
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  2542
	].
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  2543
	newStr at:i put:c
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2544
    ].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2545
    ^ newStr
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2546
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2547
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2548
     'HelloWorld' asLowercase
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2549
     'HelloWorld' asLowercaseFirst
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2550
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2551
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2552
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2553
asLowercaseFirst
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2554
    "return a copy of myself where the first character is converted to lowercase."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2555
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2556
    |newString firstChar firstCharAsLowercase|
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2557
11525
d76e654e24bd alspa changes
Claus Gittinger <cg@exept.de>
parents: 11524
diff changeset
  2558
    self isEmpty ifTrue:[^ self].
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2559
    firstChar := (self at:1).
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2560
    firstCharAsLowercase := firstChar asLowercase.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2561
    firstChar == firstCharAsLowercase ifTrue:[ ^ self].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2562
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2563
    firstCharAsLowercase bitsPerCharacter > self bitsPerCharacter ifTrue:[
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2564
	newString := firstCharAsLowercase stringSpecies fromString:self.
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2565
    ] ifFalse:[
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2566
	newString := self stringSpecies fromString:self.
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2567
    ].
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2568
    newString at:1 put:firstCharAsLowercase.
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2569
    ^ newString
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2570
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2571
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2572
     'HelloWorld' asLowercase
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2573
     'HelloWorld' asLowercaseFirst
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2574
    "
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2575
!
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2576
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2577
asLowercaseLast
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2578
    "return a copy of myself where the last character is
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2579
     converted to lowercase."
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2580
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2581
    |newString sz|
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2582
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2583
    sz := self size.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2584
    newString := self copyFrom:1 to:sz.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2585
    sz > 0 ifTrue:[
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2586
	newString at:sz put:(newString at:sz) asLowercase
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2587
    ].
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2588
    ^ newString
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2589
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2590
    "
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2591
     'HelloWorld' asLowercase
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2592
     'HelloWorlD' asLowercaseLast
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2593
    "
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2594
!
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2595
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2596
asNumber
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2597
    "read a number from the receiver.
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2598
     Notice, that (in contrast to ST-80) errors may occur during the read,
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2599
     so you better setup some signal handler when using this method.
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2600
     Also notice, that this is meant to read end-user numbers from a string;
9135
c6396149df08 comment
Claus Gittinger <cg@exept.de>
parents: 9087
diff changeset
  2601
     it does not handle smalltalk numbers (i.e. radix).
c6396149df08 comment
Claus Gittinger <cg@exept.de>
parents: 9087
diff changeset
  2602
     To read a smalltalk number, use Number >> readSmalltalkFrom:.
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2603
     This may change if ANSI specifies it."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2604
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2605
"/ ST-80 behavior:
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2606
"/  ^ Number readFromString:self onError:0
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2607
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2608
    ^ Number readFromString:self
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2609
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2610
    "
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2611
     '123'     asNumber
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2612
     '123.567' asNumber
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2613
     '(5/6)'   asNumber
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2614
     'foo'     asNumber
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2615
     Object errorSignal handle:[:ex | ex returnWith:0] do:['foo' asNumber]
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2616
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2617
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2618
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2619
asNumberFromFormatString:ignored
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2620
    "read a number from the receiver, ignoring any nonDigit characters.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2621
     This is typically used to convert from strings which include
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2622
     dollar-signs or millenium digits. However, this method also ignores
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2623
     the decimal point (if any) and therefore should be used with care."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2624
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2625
    |tempString|
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2626
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2627
    tempString := self collect:[:char | char isDigit].
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2628
    ^ Number readFromString:tempString onError:0
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2629
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2630
    "
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2631
     'USD 123' asNumberFromFormatString:'foo'
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2632
     'DM 123'  asNumberFromFormatString:'foo'
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2633
     '123'     asNumberFromFormatString:'foo'
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2634
     '123.567' asNumberFromFormatString:'foo'
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2635
     '(5/6)'   asNumberFromFormatString:'foo'
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2636
     'foo'     asNumberFromFormatString:'foo'
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2637
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2638
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2639
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2640
asOneByteString
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2641
    "return the receiver converted to a 'normal' string.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2642
     Same as asSingleByteString - for compatibility."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2643
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2644
    ^ self asSingleByteString
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2645
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2646
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2647
asSingleByteString
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2648
    "return the receiver converted to a 'normal' string.
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2649
     Raises an error if unrepresentable characters are encountered.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2650
     See also: asSingleByteStringIfPossible and asSingleByteStringReplaceInvalidWith:"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2651
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2652
    ^ String fromString:self
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2653
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2654
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2655
     (Unicode16String with:(Character value:16rFF)) asSingleByteString
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2656
     (Unicode16String with:(Character value:16rFFFF)) asSingleByteString
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2657
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2658
!
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2659
7977
d6f3255accdd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7968
diff changeset
  2660
asSingleByteStringIfPossible
d6f3255accdd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7968
diff changeset
  2661
    "if possible, return the receiver converted to a 'normal' string.
d6f3255accdd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7968
diff changeset
  2662
     It is only possible, if there are no characters with codePoints above 255 in the receiver."
d6f3255accdd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7968
diff changeset
  2663
d6f3255accdd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7968
diff changeset
  2664
    self bitsPerCharacter == 8 ifTrue:[^ self].
8102
e0537422e2d3 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8083
diff changeset
  2665
    (self contains:[:char | char codePoint > 255]) ifFalse:[^ self asSingleByteString].
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2666
    ^ self
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2667
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2668
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2669
     'hello' asSingleByteStringIfPossible
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2670
     'hello' asUnicodeString asSingleByteStringIfPossible
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2671
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2672
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2673
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2674
asSingleByteStringReplaceInvalidWith:replacementCharacter
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2675
    "return the receiver converted to a 'normal' string,
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2676
     with invalid characters replaced by replacementCharacter.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2677
     Can be used to convert from 16-bit strings to 8-bit strings
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2678
     and replace characters above code-255 with some replacement."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2679
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2680
    |newString|
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2681
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2682
    newString := String new:(self size).
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2683
    1 to:self size do:[:idx |
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2684
	|char|
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2685
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2686
	char := self at:idx.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2687
	char codePoint <= 16rFF ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2688
	    newString at:idx put:char
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2689
	] ifFalse:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2690
	    newString at:idx put:replacementCharacter
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2691
	].
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2692
    ].
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2693
    ^ newString
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2694
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  2695
    "Created: 30.6.1997 / 13:02:14 / cg"
7977
d6f3255accdd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7968
diff changeset
  2696
!
d6f3255accdd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7968
diff changeset
  2697
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2698
asString
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2699
    "return myself - I am a string"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2700
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2701
    ^ self
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2702
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2703
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2704
asStringCollection
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2705
    "return a collection of lines from myself."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2706
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2707
    ^ StringCollection fromString:self "string"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2708
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2709
    "Modified: 13.5.1996 / 20:36:59 / cg"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2710
!
1375
f035bb7468f5 additions for new Text class
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2711
1434
a317ba02d685 allow aText asSymbol
Claus Gittinger <cg@exept.de>
parents: 1429
diff changeset
  2712
asSymbol
9230
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  2713
    "Return a unique symbol with the name taken from the receivers characters.
8049
ccd0e8f26439 printing - migrating towards unicodeSupport in ST-code
Claus Gittinger <cg@exept.de>
parents: 8040
diff changeset
  2714
     The receiver must be a singleByte-String.
ccd0e8f26439 printing - migrating towards unicodeSupport in ST-code
Claus Gittinger <cg@exept.de>
parents: 8040
diff changeset
  2715
     TwoByte- and FourByteSymbols are (currently ?) not allowed."
ccd0e8f26439 printing - migrating towards unicodeSupport in ST-code
Claus Gittinger <cg@exept.de>
parents: 8040
diff changeset
  2716
ccd0e8f26439 printing - migrating towards unicodeSupport in ST-code
Claus Gittinger <cg@exept.de>
parents: 8040
diff changeset
  2717
    |str|
ccd0e8f26439 printing - migrating towards unicodeSupport in ST-code
Claus Gittinger <cg@exept.de>
parents: 8040
diff changeset
  2718
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2719
    str := self string.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2720
    str ~~ self ifTrue:[ ^ str asSymbol ].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2721
    ^ self asSingleByteString asSymbol
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2722
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2723
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2724
asSymbolIfInterned
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  2725
    "If a symbol with the receivers characters is already known, return it. Otherwise, return nil.
9230
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  2726
     This can be used to query for an existing symbol and is the same as:
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  2727
	self knownAsSymbol ifTrue:[self asSymbol] ifFalse:[nil]
8049
ccd0e8f26439 printing - migrating towards unicodeSupport in ST-code
Claus Gittinger <cg@exept.de>
parents: 8040
diff changeset
  2728
     but slightly faster, since the symbol lookup operation is only performed once.
ccd0e8f26439 printing - migrating towards unicodeSupport in ST-code
Claus Gittinger <cg@exept.de>
parents: 8040
diff changeset
  2729
     The receiver must be a singleByte-String.
ccd0e8f26439 printing - migrating towards unicodeSupport in ST-code
Claus Gittinger <cg@exept.de>
parents: 8040
diff changeset
  2730
     TwoByte- and FourByteSymbols are (currently ?) not allowed."
1435
3ee1fde2aa58 allow asSymbolIfInterned for Texts
Claus Gittinger <cg@exept.de>
parents: 1434
diff changeset
  2731
6642
4ce854094c6f asSymbolIfInterned avoid recursion failure
penk
parents: 6528
diff changeset
  2732
    |s|
4ce854094c6f asSymbolIfInterned avoid recursion failure
penk
parents: 6528
diff changeset
  2733
4ce854094c6f asSymbolIfInterned avoid recursion failure
penk
parents: 6528
diff changeset
  2734
4ce854094c6f asSymbolIfInterned avoid recursion failure
penk
parents: 6528
diff changeset
  2735
    s := self string.
4ce854094c6f asSymbolIfInterned avoid recursion failure
penk
parents: 6528
diff changeset
  2736
    s ~~ self ifTrue:[
4ce854094c6f asSymbolIfInterned avoid recursion failure
penk
parents: 6528
diff changeset
  2737
       ^ s asSymbolIfInterned
4ce854094c6f asSymbolIfInterned avoid recursion failure
penk
parents: 6528
diff changeset
  2738
    ].
4ce854094c6f asSymbolIfInterned avoid recursion failure
penk
parents: 6528
diff changeset
  2739
    ^ nil.
1435
3ee1fde2aa58 allow asSymbolIfInterned for Texts
Claus Gittinger <cg@exept.de>
parents: 1434
diff changeset
  2740
3ee1fde2aa58 allow asSymbolIfInterned for Texts
Claus Gittinger <cg@exept.de>
parents: 1434
diff changeset
  2741
    "Created: 22.5.1996 / 16:37:04 / cg"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2742
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2743
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2744
asText
9403
ba6ca2bcfe10 documentation
Stefan Vogel <sv@exept.de>
parents: 9391
diff changeset
  2745
    "return a Text-object (string with emphasis) from myself."
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2746
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2747
    "this test allows for small non-gui apps to be built without libbasic2 (where Text is)"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2748
    Text isNil ifTrue:[^ self].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2749
    ^ Text fromString:self
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2750
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2751
    "Created: 12.5.1996 / 10:41:14 / cg"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2752
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2753
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2754
asTitlecase
8027
4536f92bdbb4 asTitlecase
Claus Gittinger <cg@exept.de>
parents: 8026
diff changeset
  2755
    "return a version of the receiver, where the first character is converted to titlecase,
4536f92bdbb4 asTitlecase
Claus Gittinger <cg@exept.de>
parents: 8026
diff changeset
  2756
     and everything else to lowercase.
4536f92bdbb4 asTitlecase
Claus Gittinger <cg@exept.de>
parents: 8026
diff changeset
  2757
     See the comment in Character on what titlecase is."
4536f92bdbb4 asTitlecase
Claus Gittinger <cg@exept.de>
parents: 8026
diff changeset
  2758
4536f92bdbb4 asTitlecase
Claus Gittinger <cg@exept.de>
parents: 8026
diff changeset
  2759
    |newStr c bitsPerCharacter
4536f92bdbb4 asTitlecase
Claus Gittinger <cg@exept.de>
parents: 8026
diff changeset
  2760
     mySize "{ Class: SmallInteger }" |
4536f92bdbb4 asTitlecase
Claus Gittinger <cg@exept.de>
parents: 8026
diff changeset
  2761
4536f92bdbb4 asTitlecase
Claus Gittinger <cg@exept.de>
parents: 8026
diff changeset
  2762
    mySize := self size.
4536f92bdbb4 asTitlecase
Claus Gittinger <cg@exept.de>
parents: 8026
diff changeset
  2763
    newStr := self species new:mySize.
4536f92bdbb4 asTitlecase
Claus Gittinger <cg@exept.de>
parents: 8026
diff changeset
  2764
    bitsPerCharacter := newStr bitsPerCharacter.
4536f92bdbb4 asTitlecase
Claus Gittinger <cg@exept.de>
parents: 8026
diff changeset
  2765
4536f92bdbb4 asTitlecase
Claus Gittinger <cg@exept.de>
parents: 8026
diff changeset
  2766
    1 to:mySize do:[:i |
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2767
	i == 1 ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2768
	    c := (self at:i) asTitlecase.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2769
	] ifFalse:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2770
	    c := (self at:i) asLowercase.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2771
	].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2772
	c bitsPerCharacter > bitsPerCharacter ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2773
	    newStr := c stringSpecies fromString:newStr.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2774
	].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2775
	newStr at:i put:c
8027
4536f92bdbb4 asTitlecase
Claus Gittinger <cg@exept.de>
parents: 8026
diff changeset
  2776
    ].
4536f92bdbb4 asTitlecase
Claus Gittinger <cg@exept.de>
parents: 8026
diff changeset
  2777
    ^ newStr
4536f92bdbb4 asTitlecase
Claus Gittinger <cg@exept.de>
parents: 8026
diff changeset
  2778
4536f92bdbb4 asTitlecase
Claus Gittinger <cg@exept.de>
parents: 8026
diff changeset
  2779
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2780
     'helloWorld' asTitlecase
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2781
     'HelloWorld' asTitlecase
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2782
     'HELLOWORLD' asTitlecase
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2783
     'helloworld' asTitlecase
8027
4536f92bdbb4 asTitlecase
Claus Gittinger <cg@exept.de>
parents: 8026
diff changeset
  2784
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2785
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2786
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2787
asTitlecaseFirst
8023
c991d56bbaec +asTitlecaseFirst
Claus Gittinger <cg@exept.de>
parents: 8003
diff changeset
  2788
    "return a version of the receiver, where the first character is converted to titlecase.
8024
93db40068fba comment
Claus Gittinger <cg@exept.de>
parents: 8023
diff changeset
  2789
     Titlecase is much like uppercase for most characters, with the exception of some combined
93db40068fba comment
Claus Gittinger <cg@exept.de>
parents: 8023
diff changeset
  2790
     (2-character glyphs), which consist of an upper- and lower-case characters.
93db40068fba comment
Claus Gittinger <cg@exept.de>
parents: 8023
diff changeset
  2791
     If the first character is already titlecase, or there is no titlecasepercase for it, return the
8023
c991d56bbaec +asTitlecaseFirst
Claus Gittinger <cg@exept.de>
parents: 8003
diff changeset
  2792
     receiver."
c991d56bbaec +asTitlecaseFirst
Claus Gittinger <cg@exept.de>
parents: 8003
diff changeset
  2793
8026
96cc838078ba comment
Claus Gittinger <cg@exept.de>
parents: 8025
diff changeset
  2794
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2795
     For example, in Unicode, character U+01F3 is LATIN SMALL LETTER DZ.
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2796
     (Let us write this compound character using ASCII as 'dz'.)
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2797
     This character uppercases to character U+01F1, LATIN CAPITAL LETTER DZ.
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2798
     (Which is basically 'DZ'.)
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2799
     But it titlecases to to character U+01F2, LATIN CAPITAL LETTER D WITH SMALL LETTER Z.
8026
96cc838078ba comment
Claus Gittinger <cg@exept.de>
parents: 8025
diff changeset
  2800
     (Which we can write 'Dz'.)
96cc838078ba comment
Claus Gittinger <cg@exept.de>
parents: 8025
diff changeset
  2801
96cc838078ba comment
Claus Gittinger <cg@exept.de>
parents: 8025
diff changeset
  2802
      character uppercase titlecase
96cc838078ba comment
Claus Gittinger <cg@exept.de>
parents: 8025
diff changeset
  2803
      --------- --------- ---------
96cc838078ba comment
Claus Gittinger <cg@exept.de>
parents: 8025
diff changeset
  2804
      dz        DZ        Dz
96cc838078ba comment
Claus Gittinger <cg@exept.de>
parents: 8025
diff changeset
  2805
    "
96cc838078ba comment
Claus Gittinger <cg@exept.de>
parents: 8025
diff changeset
  2806
8023
c991d56bbaec +asTitlecaseFirst
Claus Gittinger <cg@exept.de>
parents: 8003
diff changeset
  2807
    |newString firstChar firstCharAsTitlecase|
c991d56bbaec +asTitlecaseFirst
Claus Gittinger <cg@exept.de>
parents: 8003
diff changeset
  2808
c991d56bbaec +asTitlecaseFirst
Claus Gittinger <cg@exept.de>
parents: 8003
diff changeset
  2809
    firstChar := (self at:1).
8025
04d9b6ef3012 comments
Claus Gittinger <cg@exept.de>
parents: 8024
diff changeset
  2810
    firstCharAsTitlecase := firstChar asTitlecase.
8023
c991d56bbaec +asTitlecaseFirst
Claus Gittinger <cg@exept.de>
parents: 8003
diff changeset
  2811
    firstChar == firstCharAsTitlecase ifTrue:[ ^ self].
8037
8cce25b1059c care for wide chars in asXXXFirst
Claus Gittinger <cg@exept.de>
parents: 8032
diff changeset
  2812
8cce25b1059c care for wide chars in asXXXFirst
Claus Gittinger <cg@exept.de>
parents: 8032
diff changeset
  2813
    firstCharAsTitlecase bitsPerCharacter > self bitsPerCharacter ifTrue:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2814
	newString := firstCharAsTitlecase stringSpecies fromString:self.
8037
8cce25b1059c care for wide chars in asXXXFirst
Claus Gittinger <cg@exept.de>
parents: 8032
diff changeset
  2815
    ] ifFalse:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2816
	newString := self stringSpecies fromString:self.
8037
8cce25b1059c care for wide chars in asXXXFirst
Claus Gittinger <cg@exept.de>
parents: 8032
diff changeset
  2817
    ].
8023
c991d56bbaec +asTitlecaseFirst
Claus Gittinger <cg@exept.de>
parents: 8003
diff changeset
  2818
    newString at:1 put:firstCharAsTitlecase.
c991d56bbaec +asTitlecaseFirst
Claus Gittinger <cg@exept.de>
parents: 8003
diff changeset
  2819
    ^ newString
c991d56bbaec +asTitlecaseFirst
Claus Gittinger <cg@exept.de>
parents: 8003
diff changeset
  2820
c991d56bbaec +asTitlecaseFirst
Claus Gittinger <cg@exept.de>
parents: 8003
diff changeset
  2821
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2822
     'helloWorld' asTitlecaseFirst
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2823
     'HelloWorld' asTitlecaseFirst
8023
c991d56bbaec +asTitlecaseFirst
Claus Gittinger <cg@exept.de>
parents: 8003
diff changeset
  2824
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2825
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2826
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2827
asTwoByteString
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2828
    "return the receiver converted to a two-byte string.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2829
     Will be obsolete soon."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2830
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2831
    ^ TwoByteString fromString:self
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2832
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2833
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2834
asURI
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2835
    "return an URI with string taken from the receiver"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2836
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2837
    ^ URI fromString:self
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2838
!
8710
Stefan Vogel <sv@exept.de>
parents: 8646
diff changeset
  2839
5776
7169165b44f2 added #asURL
Claus Gittinger <cg@exept.de>
parents: 5759
diff changeset
  2840
asURL
7169165b44f2 added #asURL
Claus Gittinger <cg@exept.de>
parents: 5759
diff changeset
  2841
    "return an URL-object from myself."
7169165b44f2 added #asURL
Claus Gittinger <cg@exept.de>
parents: 5759
diff changeset
  2842
7169165b44f2 added #asURL
Claus Gittinger <cg@exept.de>
parents: 5759
diff changeset
  2843
    ^ URL fromString:self
7169165b44f2 added #asURL
Claus Gittinger <cg@exept.de>
parents: 5759
diff changeset
  2844
7169165b44f2 added #asURL
Claus Gittinger <cg@exept.de>
parents: 5759
diff changeset
  2845
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2846
     'http://www.exept.de:80/index.html' asURL host
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2847
     'http://www.exept.de:80/index.html' asURL port
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2848
     'http://www.exept.de:80/index.html' asURL method
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2849
     'http://www.exept.de:80/index.html' asURL path
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2850
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2851
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2852
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2853
asUnicode16String
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2854
    "thats not really true - characters above ascii 16r7F may need special treatment"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2855
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2856
    ^ ((Unicode16String new:self size) replaceFrom:1 to:self size with:self startingAt:1)
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2857
!
8295
8433d819226b Define #asUnicode16String and #asUnicode32String in CharacterArray
Stefan Vogel <sv@exept.de>
parents: 8222
diff changeset
  2858
8433d819226b Define #asUnicode16String and #asUnicode32String in CharacterArray
Stefan Vogel <sv@exept.de>
parents: 8222
diff changeset
  2859
asUnicode32String
8433d819226b Define #asUnicode16String and #asUnicode32String in CharacterArray
Stefan Vogel <sv@exept.de>
parents: 8222
diff changeset
  2860
    "thats not really true - characters above ascii 16r7F may need special treatment"
8433d819226b Define #asUnicode16String and #asUnicode32String in CharacterArray
Stefan Vogel <sv@exept.de>
parents: 8222
diff changeset
  2861
8433d819226b Define #asUnicode16String and #asUnicode32String in CharacterArray
Stefan Vogel <sv@exept.de>
parents: 8222
diff changeset
  2862
    ^ ((Unicode32String new:self size) replaceFrom:1 to:self size with:self startingAt:1)
8433d819226b Define #asUnicode16String and #asUnicode32String in CharacterArray
Stefan Vogel <sv@exept.de>
parents: 8222
diff changeset
  2863
!
8433d819226b Define #asUnicode16String and #asUnicode32String in CharacterArray
Stefan Vogel <sv@exept.de>
parents: 8222
diff changeset
  2864
8433d819226b Define #asUnicode16String and #asUnicode32String in CharacterArray
Stefan Vogel <sv@exept.de>
parents: 8222
diff changeset
  2865
asUnicodeString
8433d819226b Define #asUnicode16String and #asUnicode32String in CharacterArray
Stefan Vogel <sv@exept.de>
parents: 8222
diff changeset
  2866
    "thats not really true - characters above ascii 16r7F may need special treatment"
8433d819226b Define #asUnicode16String and #asUnicode32String in CharacterArray
Stefan Vogel <sv@exept.de>
parents: 8222
diff changeset
  2867
8433d819226b Define #asUnicode16String and #asUnicode32String in CharacterArray
Stefan Vogel <sv@exept.de>
parents: 8222
diff changeset
  2868
    ^ ((UnicodeString new:self size) replaceFrom:1 to:self size with:self startingAt:1)
8433d819226b Define #asUnicode16String and #asUnicode32String in CharacterArray
Stefan Vogel <sv@exept.de>
parents: 8222
diff changeset
  2869
!
8433d819226b Define #asUnicode16String and #asUnicode32String in CharacterArray
Stefan Vogel <sv@exept.de>
parents: 8222
diff changeset
  2870
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2871
asUppercase
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2872
    "return a copy of myself in uppercase letters"
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2873
8003
6e690f4b79f1 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7995
diff changeset
  2874
    |newStr c bitsPerCharacter
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2875
     mySize "{ Class: SmallInteger }" |
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2876
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2877
    mySize := self size.
8954
12e701d7b5ac allow for receiver to be empty in asLowercase and asUppercase.
Claus Gittinger <cg@exept.de>
parents: 8938
diff changeset
  2878
    mySize == 0 ifTrue:[^ self].
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2879
    newStr := self species new:mySize.
8003
6e690f4b79f1 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7995
diff changeset
  2880
    bitsPerCharacter := newStr bitsPerCharacter.
6e690f4b79f1 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7995
diff changeset
  2881
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2882
    1 to:mySize do:[:i |
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  2883
	c := (self at:i) asUppercase.
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  2884
	c bitsPerCharacter > bitsPerCharacter ifTrue:[
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  2885
	    newStr := c stringSpecies fromString:newStr.
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  2886
	].
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  2887
	newStr at:i put:c
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2888
    ].
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2889
    ^ newStr
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2890
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2891
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2892
     'helloWorld' asUppercase
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2893
     'helloWorld' asUppercaseFirst
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2894
     (Character value:16rB5) asString asUppercase   -- needs 16 bits !!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2895
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2896
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2897
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2898
asUppercaseFirst
8003
6e690f4b79f1 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7995
diff changeset
  2899
    "return a version of the receiver, where the first character is converted to uppercase.
6e690f4b79f1 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7995
diff changeset
  2900
     If the first character is already uppercase, or there is no uppercase for it, return the
6e690f4b79f1 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7995
diff changeset
  2901
     receiver."
6e690f4b79f1 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7995
diff changeset
  2902
6e690f4b79f1 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7995
diff changeset
  2903
    |newString firstChar firstCharAsUppercase|
6e690f4b79f1 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7995
diff changeset
  2904
17751
b2273fa8d59f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17747
diff changeset
  2905
    self isEmpty ifTrue:[^ self].
b2273fa8d59f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17747
diff changeset
  2906
    firstChar := self at:1.  
8003
6e690f4b79f1 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7995
diff changeset
  2907
    firstCharAsUppercase := firstChar asUppercase.
6e690f4b79f1 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7995
diff changeset
  2908
    firstChar == firstCharAsUppercase ifTrue:[ ^ self].
6e690f4b79f1 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7995
diff changeset
  2909
17751
b2273fa8d59f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17747
diff changeset
  2910
    "/ very seldom, the uppercase-char needs more bits than the lowercase one (turkish y-diaresis)
8037
8cce25b1059c care for wide chars in asXXXFirst
Claus Gittinger <cg@exept.de>
parents: 8032
diff changeset
  2911
    firstCharAsUppercase bitsPerCharacter > self bitsPerCharacter ifTrue:[
17734
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  2912
        newString := firstCharAsUppercase stringSpecies fromString:self.
8037
8cce25b1059c care for wide chars in asXXXFirst
Claus Gittinger <cg@exept.de>
parents: 8032
diff changeset
  2913
    ] ifFalse:[
17734
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  2914
        newString := self stringSpecies fromString:self.
8037
8cce25b1059c care for wide chars in asXXXFirst
Claus Gittinger <cg@exept.de>
parents: 8032
diff changeset
  2915
    ].
8003
6e690f4b79f1 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7995
diff changeset
  2916
    newString at:1 put:firstCharAsUppercase.
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2917
    ^ newString
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2918
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2919
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2920
     'helloWorld' asUppercase
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2921
     'helloWorld' asUppercaseFirst
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  2922
     'HelloWorld' asUppercaseFirst
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  2923
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2924
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2925
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2926
asUppercaseLast
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2927
    "return a copy of myself where the last character is
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2928
     converted to uppercase."
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2929
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2930
    |newString sz|
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2931
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2932
    sz := self size.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2933
    newString := self copyFrom:1 to:sz.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2934
    sz > 0 ifTrue:[
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2935
	newString at:sz put:(newString at:sz) asUppercase
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2936
    ].
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2937
    ^ newString
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2938
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2939
    "
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2940
     'HelloWorld' asUppercase
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2941
     'HelloWorld' asUppercaseLast
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2942
    "
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2943
!
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2944
11062
c28d0630abf5 lifted #literalArrayEncoding
fm
parents: 11049
diff changeset
  2945
literalArrayEncoding
c28d0630abf5 lifted #literalArrayEncoding
fm
parents: 11049
diff changeset
  2946
    "encode myself as an array literal, from which a copy of the receiver
c28d0630abf5 lifted #literalArrayEncoding
fm
parents: 11049
diff changeset
  2947
     can be reconstructed with #decodeAsLiteralArray."
c28d0630abf5 lifted #literalArrayEncoding
fm
parents: 11049
diff changeset
  2948
c28d0630abf5 lifted #literalArrayEncoding
fm
parents: 11049
diff changeset
  2949
    ^ self
c28d0630abf5 lifted #literalArrayEncoding
fm
parents: 11049
diff changeset
  2950
c28d0630abf5 lifted #literalArrayEncoding
fm
parents: 11049
diff changeset
  2951
    "Modified: 1.9.1995 / 02:25:45 / claus"
c28d0630abf5 lifted #literalArrayEncoding
fm
parents: 11049
diff changeset
  2952
    "Modified: 22.4.1996 / 13:00:50 / cg"
c28d0630abf5 lifted #literalArrayEncoding
fm
parents: 11049
diff changeset
  2953
!
c28d0630abf5 lifted #literalArrayEncoding
fm
parents: 11049
diff changeset
  2954
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2955
string
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2956
    "return the receiver - for ST-80 compatibility"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2957
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2958
    ^ self
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2959
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2960
    "Modified: 27.4.1996 / 13:29:30 / cg"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2961
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2962
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2963
tokensBasedOn:aCharacter
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2964
    "this is an ST-80 alias for the ST/X method
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2965
	asCollectionOfSubstringsSeparatedBy:"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2966
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2967
    ^ self asCollectionOfSubstringsSeparatedBy:aCharacter
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2968
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2969
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2970
     'hello:world:isnt:this nice' tokensBasedOn:$:
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2971
     'foo,bar,baz' tokensBasedOn:$,
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2972
     '/etc/passwd' asFilename readStream nextLine tokensBasedOn:$:
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  2973
    "
11320
0cf84c372ccf Unicode handling:
Stefan Vogel <sv@exept.de>
parents: 11292
diff changeset
  2974
!
0cf84c372ccf Unicode handling:
Stefan Vogel <sv@exept.de>
parents: 11292
diff changeset
  2975
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2976
withoutAllSpaces
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2977
    ^ self asCollectionOfWords asStringWith:''.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2978
"/    |col string|
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2979
"/
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2980
"/    col := self asCollectionOfWords.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2981
"/    string := String new.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2982
"/    col do:[:el |
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2983
"/       string := string,el
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2984
"/    ].
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2985
"/    ^string
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2986
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2987
    "
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2988
     'hello wwww'  withoutAllSpaces
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2989
     'hel   lo www   w'  withoutAllSpaces
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2990
    "
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2991
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2992
    "Modified: / 18.7.1998 / 22:53:08 / cg"
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2993
!
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  2994
11320
0cf84c372ccf Unicode handling:
Stefan Vogel <sv@exept.de>
parents: 11292
diff changeset
  2995
writeStream
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2996
    "return a stream for writing onto the receiver.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2997
     Redefined to return a CharacterWriteStream which automatically checks for the bytesPerCharacter
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2998
     and replaces the stream-buffer as required."
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  2999
11320
0cf84c372ccf Unicode handling:
Stefan Vogel <sv@exept.de>
parents: 11292
diff changeset
  3000
    ^ CharacterWriteStream on:self
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3001
! !
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3002
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3003
!CharacterArray methodsFor:'copying'!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3004
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3005
, aStringOrCharacter
2720
98c21d9a07c0 allow mixed strings to be concatenated using comma
Claus Gittinger <cg@exept.de>
parents: 2692
diff changeset
  3006
    "redefined to allow characters and mixed strings to be appended.
1050
2f14bbd792a9 , now accepts a character-argument
Claus Gittinger <cg@exept.de>
parents: 1028
diff changeset
  3007
     This is nonStandard, but convenient"
2f14bbd792a9 , now accepts a character-argument
Claus Gittinger <cg@exept.de>
parents: 1028
diff changeset
  3008
2720
98c21d9a07c0 allow mixed strings to be concatenated using comma
Claus Gittinger <cg@exept.de>
parents: 2692
diff changeset
  3009
    |myWidth otherWidth|
98c21d9a07c0 allow mixed strings to be concatenated using comma
Claus Gittinger <cg@exept.de>
parents: 2692
diff changeset
  3010
1050
2f14bbd792a9 , now accepts a character-argument
Claus Gittinger <cg@exept.de>
parents: 1028
diff changeset
  3011
    aStringOrCharacter isCharacter ifTrue:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3012
	^ self copyWith:aStringOrCharacter
1050
2f14bbd792a9 , now accepts a character-argument
Claus Gittinger <cg@exept.de>
parents: 1028
diff changeset
  3013
    ].
1396
5b5386311dbd concatenating mixed texts & strings
Claus Gittinger <cg@exept.de>
parents: 1393
diff changeset
  3014
    aStringOrCharacter isText ifTrue:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3015
	^ aStringOrCharacter concatenateFromString:self
1396
5b5386311dbd concatenating mixed texts & strings
Claus Gittinger <cg@exept.de>
parents: 1393
diff changeset
  3016
    ].
2720
98c21d9a07c0 allow mixed strings to be concatenated using comma
Claus Gittinger <cg@exept.de>
parents: 2692
diff changeset
  3017
    aStringOrCharacter isString ifTrue:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3018
	(otherWidth := aStringOrCharacter bitsPerCharacter) ~~ (myWidth := self bitsPerCharacter) ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3019
	    otherWidth > myWidth ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3020
		^ (aStringOrCharacter species fromString:self) , aStringOrCharacter
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3021
	    ].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3022
	    ^ self , (self species fromString:aStringOrCharacter)
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3023
	].
2720
98c21d9a07c0 allow mixed strings to be concatenated using comma
Claus Gittinger <cg@exept.de>
parents: 2692
diff changeset
  3024
    ].
1050
2f14bbd792a9 , now accepts a character-argument
Claus Gittinger <cg@exept.de>
parents: 1028
diff changeset
  3025
    ^ super , aStringOrCharacter
2f14bbd792a9 , now accepts a character-argument
Claus Gittinger <cg@exept.de>
parents: 1028
diff changeset
  3026
2f14bbd792a9 , now accepts a character-argument
Claus Gittinger <cg@exept.de>
parents: 1028
diff changeset
  3027
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3028
     'hello' , $1
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3029
     'hello' , '1'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3030
     'hello' , (' world' asText allBold)
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3031
     'hello' , (JISEncodedString fromString:' world')
2720
98c21d9a07c0 allow mixed strings to be concatenated using comma
Claus Gittinger <cg@exept.de>
parents: 2692
diff changeset
  3032
     (JISEncodedString fromString:'hello') , ' world'
1411
a3b3ab3044c6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1396
diff changeset
  3033
1422
9a0b792f2953 showCr: -> showCR:
Claus Gittinger <cg@exept.de>
parents: 1411
diff changeset
  3034
     Transcript showCR:
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3035
	 (Text string:'hello' emphasis:#italic) , (Text string:' world' emphasis:#bold)
1050
2f14bbd792a9 , now accepts a character-argument
Claus Gittinger <cg@exept.de>
parents: 1028
diff changeset
  3036
    "
2f14bbd792a9 , now accepts a character-argument
Claus Gittinger <cg@exept.de>
parents: 1028
diff changeset
  3037
2720
98c21d9a07c0 allow mixed strings to be concatenated using comma
Claus Gittinger <cg@exept.de>
parents: 2692
diff changeset
  3038
    "Modified: 28.6.1997 / 00:13:17 / cg"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3039
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3040
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3041
,, aString
7020
f51001115a54 comment
penk
parents: 6998
diff changeset
  3042
    "concatenate with a newLine in between"
6965
c40f18fdb4bb New; #,,
Stefan Vogel <sv@exept.de>
parents: 6948
diff changeset
  3043
c40f18fdb4bb New; #,,
Stefan Vogel <sv@exept.de>
parents: 6948
diff changeset
  3044
    ^ (self copyWith:Character cr) , aString
c40f18fdb4bb New; #,,
Stefan Vogel <sv@exept.de>
parents: 6948
diff changeset
  3045
c40f18fdb4bb New; #,,
Stefan Vogel <sv@exept.de>
parents: 6948
diff changeset
  3046
   "
c40f18fdb4bb New; #,,
Stefan Vogel <sv@exept.de>
parents: 6948
diff changeset
  3047
     hello ,, world
7020
f51001115a54 comment
penk
parents: 6998
diff changeset
  3048
     'hello' ,, 'world'
6965
c40f18fdb4bb New; #,,
Stefan Vogel <sv@exept.de>
parents: 6948
diff changeset
  3049
   "
c40f18fdb4bb New; #,,
Stefan Vogel <sv@exept.de>
parents: 6948
diff changeset
  3050
!
c40f18fdb4bb New; #,,
Stefan Vogel <sv@exept.de>
parents: 6948
diff changeset
  3051
11329
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3052
chopTo:maxLen
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3053
    "if the receivers size is less or equal to maxLen, return it.
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3054
     Otherwise, return a copy of the receiver, where some characters
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3055
     in the middle have been removed for a total string length
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3056
     of maxLen."
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3057
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3058
    |sz n1 n2|
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3059
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3060
    (sz := self size) <= maxLen ifTrue:[ ^ self ].
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3061
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3062
    n1 := n2 := maxLen // 2.
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3063
    maxLen odd ifTrue:[
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3064
	n2 := n1 + 1
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3065
    ].
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3066
    ^ (self copyFrom:1 to:n1) , (self copyFrom:sz - n2 + 1)
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3067
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3068
    "
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3069
     '12345678901234'   chopTo:15
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3070
     '123456789012345'  chopTo:15
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3071
     '1234567890123456' chopTo:15
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3072
     'aShortString' chopTo:15
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3073
     'aVeryLongNameForAStringThatShouldBeShortened' chopTo:15
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3074
    "
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3075
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3076
    "Modified: / 24-10-2006 / 12:32:01 / cg"
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3077
!
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3078
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  3079
concatenate:string1 and:string2
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  3080
    "return the concatenation of myself and the arguments, string1 and string2.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  3081
     This is equivalent to self , string1 , string2
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  3082
     - generated by compiler when such a construct is detected and the receiver
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  3083
     is known to be a string."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  3084
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  3085
    ^ self , string1 , string2
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  3086
!
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  3087
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  3088
concatenate:string1 and:string2 and:string3
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  3089
    "return the concatenation of myself and the string arguments.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  3090
     This is equivalent to self , string1 , string2 , string3
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  3091
     - generated by compiler when such a construct is detected and the receiver
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  3092
     is known to be a string."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  3093
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  3094
    ^ self , string1 , string2 , string3
8040
f10cca439066 copyWith for mixed-width string/character
Claus Gittinger <cg@exept.de>
parents: 8037
diff changeset
  3095
!
f10cca439066 copyWith for mixed-width string/character
Claus Gittinger <cg@exept.de>
parents: 8037
diff changeset
  3096
11329
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3097
contractAtBeginningTo:maxLen
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3098
    "if the receivers size is less or equal to maxLen, return it.
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3099
     Otherwise, return a copy of the receiver, where some characters
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3100
     at the beginning have been replaced by '...' for a total string length
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3101
     of maxLen. Can be used to abbreviate long entries in tables."
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3102
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3103
    |sz|
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3104
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3105
    (sz := self size) <= maxLen ifTrue:[ ^ self ].
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3106
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3107
    ^ '...' , (self copyFrom:(sz - (maxLen - 4)))
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3108
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3109
    "
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3110
     '12345678901234' contractAtBeginningTo:15
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3111
     '123456789012345' contractAtBeginningTo:15
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3112
     '1234567890123456' contractAtBeginningTo:15
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3113
     'aShortString' contractAtBeginningTo:15
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3114
     'aVeryLongNameForAStringThatShouldBeShortened' contractAtBeginningTo:15
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3115
    "
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3116
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3117
    "Modified: / 24-10-2006 / 12:32:13 / cg"
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3118
!
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3119
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3120
contractAtEndTo:maxLen
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3121
    "if the receivers size is less or equal to maxLen, return it.
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3122
     Otherwise, return a copy of the receiver, where some characters
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3123
     at the end have been replaced by '...' for a total string length
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3124
     of maxLen. Can be used to abbreviate long entries in tables."
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3125
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3126
    |sz|
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3127
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3128
    (sz := self size) <= maxLen ifTrue:[ ^ self ].
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3129
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3130
    ^ (self copyTo:maxLen-3),'...'
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3131
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3132
    "
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3133
     '12345678901234' contractAtEndTo:15
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3134
     '123456789012345' contractAtEndTo:15
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3135
     '1234567890123456' contractAtEndTo:15
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3136
     'aShortString' contractAtEndTo:15
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3137
     'aVeryLongNameForAStringThatShouldBeShortened' contractAtEndTo:15
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3138
    "
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3139
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3140
    "Modified: / 24-10-2006 / 12:32:26 / cg"
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3141
!
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3142
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3143
contractLeftTo:maxLen
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3144
    "if the receivers size is less or equal to maxLen, return it.
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3145
     Otherwise, return a copy of the receiver, where some characters
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3146
     near the first quarter have been replaced by '...' for a total string length
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3147
     of maxLen.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3148
     Very similar to contractTo:, but better to abbreviate long filename entries,
11329
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3149
     where the right part is of more use than the left."
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3150
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3151
    |sz "{ SmallInteger }"
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3152
     halfSize quarterSize "{ SmallInteger }"
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3153
     leftEnd rightEnd rightStart|
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3154
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3155
    (sz := self size) <= maxLen ifTrue:[ ^ self ].
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3156
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3157
    halfSize := maxLen // 2.
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3158
    quarterSize := maxLen // 4.
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3159
    leftEnd := quarterSize-1.
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3160
    rightEnd := maxLen - leftEnd - 3.
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3161
    rightStart := sz - rightEnd + 1.
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3162
    ^ (self copyTo:leftEnd),'...',(self copyFrom:rightStart)
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3163
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3164
    "
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3165
     '12345678901234' contractLeftTo:15
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3166
     '123456789012345' contractLeftTo:15
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3167
     '1234567890123456' contractLeftTo:15
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3168
     'aShortString' contractLeftTo:15
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3169
     'aVeryLongNameForAStringThatShouldBeShortened' contractLeftTo:15
11329
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3170
     'C:\Dokumente und Einstellungen\cg\work\bosch\dapas\hw_schnittstellen\DAPAS__HpibDLL.st' contractLeftTo:40
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3171
    "
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3172
!
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3173
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3174
contractTo:maxLen
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3175
    "if the receivers size is less or equal to maxLen, return it.
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3176
     Otherwise, return a copy of the receiver, where some characters
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3177
     in the middle have been replaced by '...' for a total string length
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3178
     of maxLen. Can be used to abbreviate long entries in tables."
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3179
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3180
    |sz "{ SmallInteger }"
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3181
     halfSize "{ SmallInteger }"
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3182
     leftEnd rightStart|
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3183
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3184
    (sz := self size) <= maxLen ifTrue:[ ^ self ].
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3185
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3186
    halfSize := maxLen // 2.
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3187
    leftEnd := halfSize-1.
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3188
    rightStart := sz-halfSize+2.
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3189
    halfSize even ifTrue:[
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3190
	rightStart := rightStart+1.
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3191
    ].
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3192
    ^ (self copyTo:leftEnd),'...',(self copyFrom:rightStart)
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3193
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3194
    "
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3195
     '12345678901234' contractTo:15
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3196
     '123456789012345' contractTo:15
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3197
     '1234567890123456' contractTo:15
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3198
     'aShortString' contractTo:15
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3199
     'aVeryLongNameForAStringThatShouldBeShortened' contractTo:15
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3200
     'C:\Dokumente und Einstellungen\cg\work\bosch\dapas\hw_schnittstellen\DAPAS__HpibDLL.st' contractTo:40
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3201
    "
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3202
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3203
    "Modified: / 24-10-2006 / 12:23:56 / cg"
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3204
!
28cf7ddd8b44 category changes
Claus Gittinger <cg@exept.de>
parents: 11326
diff changeset
  3205
8347
3ae935723b46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8310
diff changeset
  3206
copyReplaceString:subString withString:newString
3ae935723b46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8310
diff changeset
  3207
    "return a copy of the receiver, with all sequences of subString replaced
3ae935723b46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8310
diff changeset
  3208
     by newString (i.e. slice in the newString in place of the oldString)."
3ae935723b46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8310
diff changeset
  3209
3ae935723b46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8310
diff changeset
  3210
    |tmpStream idx idx1|
3ae935723b46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8310
diff changeset
  3211
11348
366457915f90 care for wide-character strings in copyReplaceStringWithString
Claus Gittinger <cg@exept.de>
parents: 11345
diff changeset
  3212
    tmpStream := CharacterWriteStream on:(self class new).
8347
3ae935723b46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8310
diff changeset
  3213
    idx := 1.
3ae935723b46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8310
diff changeset
  3214
    [idx ~~ 0] whileTrue:[
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3215
	idx1 := idx.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3216
	idx := self indexOfSubCollection:subString startingAt:idx.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3217
	idx ~~ 0 ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3218
	    tmpStream nextPutAll:(self copyFrom:idx1 to:idx-1).
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3219
	    tmpStream nextPutAll:newString.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3220
	    idx := idx + subString size
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3221
	]
8347
3ae935723b46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8310
diff changeset
  3222
    ].
3ae935723b46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8310
diff changeset
  3223
    tmpStream nextPutAll:(self copyFrom:idx1).
3ae935723b46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8310
diff changeset
  3224
    ^ tmpStream contents
3ae935723b46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8310
diff changeset
  3225
3ae935723b46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8310
diff changeset
  3226
   "
9306
de9b438212b8 comment
Stefan Vogel <sv@exept.de>
parents: 9282
diff changeset
  3227
     '12345678901234567890' copyReplaceString:'123' withString:'OneTwoThree'
de9b438212b8 comment
Stefan Vogel <sv@exept.de>
parents: 9282
diff changeset
  3228
     '12345678901234567890' copyReplaceString:'123' withString:'*'
de9b438212b8 comment
Stefan Vogel <sv@exept.de>
parents: 9282
diff changeset
  3229
     '12345678901234567890' copyReplaceString:'234' withString:'foo'
de9b438212b8 comment
Stefan Vogel <sv@exept.de>
parents: 9282
diff changeset
  3230
de9b438212b8 comment
Stefan Vogel <sv@exept.de>
parents: 9282
diff changeset
  3231
     ('a string with spaces' copyReplaceAll:$  withAll:' foo ')
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3232
	copyReplaceString:'foo' withString:'bar'
8347
3ae935723b46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8310
diff changeset
  3233
    "
3ae935723b46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8310
diff changeset
  3234
3ae935723b46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8310
diff changeset
  3235
    "Modified: / 31-05-1999 / 12:33:59 / cg"
3ae935723b46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8310
diff changeset
  3236
    "Created: / 12-05-2004 / 12:00:00 / cg"
3ae935723b46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8310
diff changeset
  3237
!
3ae935723b46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8310
diff changeset
  3238
8040
f10cca439066 copyWith for mixed-width string/character
Claus Gittinger <cg@exept.de>
parents: 8037
diff changeset
  3239
copyWith:aCharacter
f10cca439066 copyWith for mixed-width string/character
Claus Gittinger <cg@exept.de>
parents: 8037
diff changeset
  3240
    "return a new string containing the receivers characters
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3241
     and the single new character, aCharacter.
8040
f10cca439066 copyWith for mixed-width string/character
Claus Gittinger <cg@exept.de>
parents: 8037
diff changeset
  3242
     This is different from concatentation, which expects another string
f10cca439066 copyWith for mixed-width string/character
Claus Gittinger <cg@exept.de>
parents: 8037
diff changeset
  3243
     as argument, but equivalent to copy-and-addLast.
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3244
     The code below cares for different width characters
8040
f10cca439066 copyWith for mixed-width string/character
Claus Gittinger <cg@exept.de>
parents: 8037
diff changeset
  3245
     (i.e. when appending a 16bit char to an 8bit string)"
f10cca439066 copyWith for mixed-width string/character
Claus Gittinger <cg@exept.de>
parents: 8037
diff changeset
  3246
f10cca439066 copyWith for mixed-width string/character
Claus Gittinger <cg@exept.de>
parents: 8037
diff changeset
  3247
    |sz newString|
f10cca439066 copyWith for mixed-width string/character
Claus Gittinger <cg@exept.de>
parents: 8037
diff changeset
  3248
f10cca439066 copyWith for mixed-width string/character
Claus Gittinger <cg@exept.de>
parents: 8037
diff changeset
  3249
    aCharacter bitsPerCharacter > self bitsPerCharacter ifTrue:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3250
	sz := self size.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3251
	newString := aCharacter stringSpecies new:sz + 1.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3252
	newString replaceFrom:1 to:sz with:self startingAt:1.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3253
	newString at:sz+1 put:aCharacter.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3254
	^ newString.
8040
f10cca439066 copyWith for mixed-width string/character
Claus Gittinger <cg@exept.de>
parents: 8037
diff changeset
  3255
    ].
f10cca439066 copyWith for mixed-width string/character
Claus Gittinger <cg@exept.de>
parents: 8037
diff changeset
  3256
    ^ super copyWith:aCharacter
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  3257
! !
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  3258
17727
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3259
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  3260
!CharacterArray methodsFor:'displaying'!
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  3261
2762
59c71fa02ba2 displayOn / displayOpaqueOn fixed
ca
parents: 2760
diff changeset
  3262
displayOn:aGC x:x y:y from:start to:stop
59c71fa02ba2 displayOn / displayOpaqueOn fixed
ca
parents: 2760
diff changeset
  3263
    "display the receiver on a GC"
59c71fa02ba2 displayOn / displayOpaqueOn fixed
ca
parents: 2760
diff changeset
  3264
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3265
    self displayOn:aGC x:x y:y from:start to:stop opaque:false
2762
59c71fa02ba2 displayOn / displayOpaqueOn fixed
ca
parents: 2760
diff changeset
  3266
59c71fa02ba2 displayOn / displayOpaqueOn fixed
ca
parents: 2760
diff changeset
  3267
    "Modified: 12.5.1996 / 12:49:33 / cg"
59c71fa02ba2 displayOn / displayOpaqueOn fixed
ca
parents: 2760
diff changeset
  3268
!
59c71fa02ba2 displayOn / displayOpaqueOn fixed
ca
parents: 2760
diff changeset
  3269
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3270
displayOn:aGC x:x y:y from:start to:stop opaque:opaque
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3271
    "display the receiver on a GC"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3272
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3273
    "q&d hack"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3274
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3275
    (start == 1 and:[stop == self size]) ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3276
	self displayOn:aGC x:x y:y opaque:opaque.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3277
    ] ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3278
	(self copyFrom:start to:stop) displayOn:aGC x:x y:y opaque:opaque.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3279
    ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3280
!
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3281
7082
675482728016 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7022
diff changeset
  3282
displayOn:aGc x:x y:y opaque:opaque
2762
59c71fa02ba2 displayOn / displayOpaqueOn fixed
ca
parents: 2760
diff changeset
  3283
    "display the receiver in a graphicsContext - this method allows
59c71fa02ba2 displayOn / displayOpaqueOn fixed
ca
parents: 2760
diff changeset
  3284
     strings to be used like DisplayObjects."
59c71fa02ba2 displayOn / displayOpaqueOn fixed
ca
parents: 2760
diff changeset
  3285
59c71fa02ba2 displayOn / displayOpaqueOn fixed
ca
parents: 2760
diff changeset
  3286
    |s|
59c71fa02ba2 displayOn / displayOpaqueOn fixed
ca
parents: 2760
diff changeset
  3287
59c71fa02ba2 displayOn / displayOpaqueOn fixed
ca
parents: 2760
diff changeset
  3288
    s := self string.
7082
675482728016 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7022
diff changeset
  3289
    opaque ifTrue:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3290
	aGc displayOpaqueString:s x:x y:y.
2762
59c71fa02ba2 displayOn / displayOpaqueOn fixed
ca
parents: 2760
diff changeset
  3291
    ] ifFalse:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3292
	aGc displayString:s x:x y:y.
2762
59c71fa02ba2 displayOn / displayOpaqueOn fixed
ca
parents: 2760
diff changeset
  3293
    ].
1381
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  3294
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  3295
    "Modified: 11.5.1996 / 14:42:48 / cg"
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  3296
!
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  3297
2762
59c71fa02ba2 displayOn / displayOpaqueOn fixed
ca
parents: 2760
diff changeset
  3298
displayOpaqueOn:aGC x:x y:y from:start to:stop
59c71fa02ba2 displayOn / displayOpaqueOn fixed
ca
parents: 2760
diff changeset
  3299
    "display the receiver on a GC"
59c71fa02ba2 displayOn / displayOpaqueOn fixed
ca
parents: 2760
diff changeset
  3300
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3301
    self displayOn:aGC x:x y:y from:start to:stop opaque:true
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  3302
! !
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  3303
1375
f035bb7468f5 additions for new Text class
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3304
!CharacterArray methodsFor:'emphasis'!
f035bb7468f5 additions for new Text class
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3305
11632
b82e9f3cabd1 new: #actionForAll: #emphasisAtPoint:on:
Stefan Vogel <sv@exept.de>
parents: 11630
diff changeset
  3306
actionForAll:aBlock
17734
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3307
    "change the action block of all characters.
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3308
     Some widgets use this like a href if clicked onto the text."
11632
b82e9f3cabd1 new: #actionForAll: #emphasisAtPoint:on:
Stefan Vogel <sv@exept.de>
parents: 11630
diff changeset
  3309
b82e9f3cabd1 new: #actionForAll: #emphasisAtPoint:on:
Stefan Vogel <sv@exept.de>
parents: 11630
diff changeset
  3310
    ^ self asText actionForAll:aBlock
b82e9f3cabd1 new: #actionForAll: #emphasisAtPoint:on:
Stefan Vogel <sv@exept.de>
parents: 11630
diff changeset
  3311
!
b82e9f3cabd1 new: #actionForAll: #emphasisAtPoint:on:
Stefan Vogel <sv@exept.de>
parents: 11630
diff changeset
  3312
5732
7b5effa6816e allBold added
Claus Gittinger <cg@exept.de>
parents: 5714
diff changeset
  3313
allBold
17734
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3314
    "return a text object representing the receiver, but all boldified"
5732
7b5effa6816e allBold added
Claus Gittinger <cg@exept.de>
parents: 5714
diff changeset
  3315
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3316
    "this test allows for small non-gui apps to be built without libbasic2 (where Text is)"
6187
d4788adb7a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6184
diff changeset
  3317
    Text isNil ifTrue:[^ self].
5732
7b5effa6816e allBold added
Claus Gittinger <cg@exept.de>
parents: 5714
diff changeset
  3318
    ^ self asText allBold
7b5effa6816e allBold added
Claus Gittinger <cg@exept.de>
parents: 5714
diff changeset
  3319
7b5effa6816e allBold added
Claus Gittinger <cg@exept.de>
parents: 5714
diff changeset
  3320
    "
7b5effa6816e allBold added
Claus Gittinger <cg@exept.de>
parents: 5714
diff changeset
  3321
     Transcript showCR:'hello' asText allBold
7b5effa6816e allBold added
Claus Gittinger <cg@exept.de>
parents: 5714
diff changeset
  3322
     Transcript showCR:'hello' allBold
7b5effa6816e allBold added
Claus Gittinger <cg@exept.de>
parents: 5714
diff changeset
  3323
    "
7b5effa6816e allBold added
Claus Gittinger <cg@exept.de>
parents: 5714
diff changeset
  3324
!
7b5effa6816e allBold added
Claus Gittinger <cg@exept.de>
parents: 5714
diff changeset
  3325
5898
7bc4f1593b4e allItalic now understood by CharacterArray
Claus Gittinger <cg@exept.de>
parents: 5848
diff changeset
  3326
allItalic
17734
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3327
    "return a text object representing the receiver, but all in italic"
5898
7bc4f1593b4e allItalic now understood by CharacterArray
Claus Gittinger <cg@exept.de>
parents: 5848
diff changeset
  3328
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3329
    "this test allows for small non-gui apps to be built without libbasic2 (where Text is)"
6187
d4788adb7a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6184
diff changeset
  3330
    Text isNil ifTrue:[^ self].
5898
7bc4f1593b4e allItalic now understood by CharacterArray
Claus Gittinger <cg@exept.de>
parents: 5848
diff changeset
  3331
    ^ self asText allItalic
7bc4f1593b4e allItalic now understood by CharacterArray
Claus Gittinger <cg@exept.de>
parents: 5848
diff changeset
  3332
7bc4f1593b4e allItalic now understood by CharacterArray
Claus Gittinger <cg@exept.de>
parents: 5848
diff changeset
  3333
    "
7bc4f1593b4e allItalic now understood by CharacterArray
Claus Gittinger <cg@exept.de>
parents: 5848
diff changeset
  3334
     Transcript showCR:'hello' asText allItalic
7bc4f1593b4e allItalic now understood by CharacterArray
Claus Gittinger <cg@exept.de>
parents: 5848
diff changeset
  3335
     Transcript showCR:'hello' allItalic
7bc4f1593b4e allItalic now understood by CharacterArray
Claus Gittinger <cg@exept.de>
parents: 5848
diff changeset
  3336
    "
7bc4f1593b4e allItalic now understood by CharacterArray
Claus Gittinger <cg@exept.de>
parents: 5848
diff changeset
  3337
!
7bc4f1593b4e allItalic now understood by CharacterArray
Claus Gittinger <cg@exept.de>
parents: 5848
diff changeset
  3338
11345
3f5e4cc6ae91 changed #allStrikedOut
Claus Gittinger <cg@exept.de>
parents: 11329
diff changeset
  3339
allStrikedOut
17734
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3340
    "return a text object representing the receiver, but all in strikeout"
11345
3f5e4cc6ae91 changed #allStrikedOut
Claus Gittinger <cg@exept.de>
parents: 11329
diff changeset
  3341
3f5e4cc6ae91 changed #allStrikedOut
Claus Gittinger <cg@exept.de>
parents: 11329
diff changeset
  3342
    "this test allows for small non-gui apps to be built without libbasic2 (where Text is)"
3f5e4cc6ae91 changed #allStrikedOut
Claus Gittinger <cg@exept.de>
parents: 11329
diff changeset
  3343
    Text isNil ifTrue:[^ self].
3f5e4cc6ae91 changed #allStrikedOut
Claus Gittinger <cg@exept.de>
parents: 11329
diff changeset
  3344
    ^ self asText allStrikedOut
3f5e4cc6ae91 changed #allStrikedOut
Claus Gittinger <cg@exept.de>
parents: 11329
diff changeset
  3345
3f5e4cc6ae91 changed #allStrikedOut
Claus Gittinger <cg@exept.de>
parents: 11329
diff changeset
  3346
    "
3f5e4cc6ae91 changed #allStrikedOut
Claus Gittinger <cg@exept.de>
parents: 11329
diff changeset
  3347
     Transcript showCR:'hello' asText allStrikedOut
3f5e4cc6ae91 changed #allStrikedOut
Claus Gittinger <cg@exept.de>
parents: 11329
diff changeset
  3348
     Transcript showCR:'hello' allStrikedOut
3f5e4cc6ae91 changed #allStrikedOut
Claus Gittinger <cg@exept.de>
parents: 11329
diff changeset
  3349
    "
3f5e4cc6ae91 changed #allStrikedOut
Claus Gittinger <cg@exept.de>
parents: 11329
diff changeset
  3350
!
3f5e4cc6ae91 changed #allStrikedOut
Claus Gittinger <cg@exept.de>
parents: 11329
diff changeset
  3351
10862
0fa5e12415af *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10841
diff changeset
  3352
allUnderlined
17734
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3353
    "return a text object representing the receiver, but all with underline"
10862
0fa5e12415af *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10841
diff changeset
  3354
0fa5e12415af *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10841
diff changeset
  3355
    "this test allows for small non-gui apps to be built without libbasic2 (where Text is)"
0fa5e12415af *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10841
diff changeset
  3356
    Text isNil ifTrue:[^ self].
0fa5e12415af *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10841
diff changeset
  3357
    ^ self asText allUnderlined
0fa5e12415af *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10841
diff changeset
  3358
0fa5e12415af *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10841
diff changeset
  3359
    "
0fa5e12415af *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10841
diff changeset
  3360
     Transcript showCR:'hello' asText allUnderlined
0fa5e12415af *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10841
diff changeset
  3361
     Transcript showCR:'hello' allUnderlined
0fa5e12415af *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10841
diff changeset
  3362
    "
0fa5e12415af *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10841
diff changeset
  3363
!
0fa5e12415af *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10841
diff changeset
  3364
6228
3b39832651c9 added #colorizeAllWith:
Claus Gittinger <cg@exept.de>
parents: 6187
diff changeset
  3365
colorizeAllWith:aColor
17734
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3366
    "return a text object representing the receiver, but all colorized"
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3367
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3368
    "this test allows for small non-gui apps to be built without libbasic2 (where Text is)"
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3369
    Text isNil ifTrue:[^ self].
6228
3b39832651c9 added #colorizeAllWith:
Claus Gittinger <cg@exept.de>
parents: 6187
diff changeset
  3370
    ^ self asText colorizeAllWith:aColor
3b39832651c9 added #colorizeAllWith:
Claus Gittinger <cg@exept.de>
parents: 6187
diff changeset
  3371
3b39832651c9 added #colorizeAllWith:
Claus Gittinger <cg@exept.de>
parents: 6187
diff changeset
  3372
    "
3b39832651c9 added #colorizeAllWith:
Claus Gittinger <cg@exept.de>
parents: 6187
diff changeset
  3373
     Transcript showCR:('hello' colorizeAllWith:Color red)
3b39832651c9 added #colorizeAllWith:
Claus Gittinger <cg@exept.de>
parents: 6187
diff changeset
  3374
     Transcript showCR:('world' colorizeAllWith:Color green darkened)
3b39832651c9 added #colorizeAllWith:
Claus Gittinger <cg@exept.de>
parents: 6187
diff changeset
  3375
    "
3b39832651c9 added #colorizeAllWith:
Claus Gittinger <cg@exept.de>
parents: 6187
diff changeset
  3376
!
3b39832651c9 added #colorizeAllWith:
Claus Gittinger <cg@exept.de>
parents: 6187
diff changeset
  3377
17734
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3378
colorizeAllWith:fgColor on:bgColor
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3379
    "return a text object representing the receiver, but all colorized with
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3380
     both fg and background color"
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3381
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3382
    "this test allows for small non-gui apps to be built without libbasic2 (where Text is)"
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3383
    Text isNil ifTrue:[^ self].
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3384
    ^ self asText colorizeAllWith:fgColor on:bgColor
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3385
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3386
    "
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3387
     Transcript showCR:('hello' colorizeAllWith:Color red on:Color yellow)
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3388
     Transcript showCR:('world' colorizeAllWith:Color red)
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3389
    "
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3390
!
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3391
1396
5b5386311dbd concatenating mixed texts & strings
Claus Gittinger <cg@exept.de>
parents: 1393
diff changeset
  3392
emphasis
5b5386311dbd concatenating mixed texts & strings
Claus Gittinger <cg@exept.de>
parents: 1393
diff changeset
  3393
    "return the emphasis.
5b5386311dbd concatenating mixed texts & strings
Claus Gittinger <cg@exept.de>
parents: 1393
diff changeset
  3394
     Since characterArrays do not hold any emphasis information,
5b5386311dbd concatenating mixed texts & strings
Claus Gittinger <cg@exept.de>
parents: 1393
diff changeset
  3395
     nil (no emphasis) is returned here."
5b5386311dbd concatenating mixed texts & strings
Claus Gittinger <cg@exept.de>
parents: 1393
diff changeset
  3396
5b5386311dbd concatenating mixed texts & strings
Claus Gittinger <cg@exept.de>
parents: 1393
diff changeset
  3397
    ^ RunArray new:self size withAll:nil
5b5386311dbd concatenating mixed texts & strings
Claus Gittinger <cg@exept.de>
parents: 1393
diff changeset
  3398
5b5386311dbd concatenating mixed texts & strings
Claus Gittinger <cg@exept.de>
parents: 1393
diff changeset
  3399
    "Created: 14.5.1996 / 13:58:58 / cg"
5b5386311dbd concatenating mixed texts & strings
Claus Gittinger <cg@exept.de>
parents: 1393
diff changeset
  3400
!
5b5386311dbd concatenating mixed texts & strings
Claus Gittinger <cg@exept.de>
parents: 1393
diff changeset
  3401
6655
08e098ce6534 +emphasis:
Michael Beyl <mb@exept.de>
parents: 6653
diff changeset
  3402
emphasis:emphasisCollection
08e098ce6534 +emphasis:
Michael Beyl <mb@exept.de>
parents: 6653
diff changeset
  3403
    ^ self asText emphasis:emphasisCollection
08e098ce6534 +emphasis:
Michael Beyl <mb@exept.de>
parents: 6653
diff changeset
  3404
08e098ce6534 +emphasis:
Michael Beyl <mb@exept.de>
parents: 6653
diff changeset
  3405
    "
08e098ce6534 +emphasis:
Michael Beyl <mb@exept.de>
parents: 6653
diff changeset
  3406
     Transcript showCR:('hello' emphasis:#(bold bold bold bold bold))
08e098ce6534 +emphasis:
Michael Beyl <mb@exept.de>
parents: 6653
diff changeset
  3407
    "
08e098ce6534 +emphasis:
Michael Beyl <mb@exept.de>
parents: 6653
diff changeset
  3408
!
08e098ce6534 +emphasis:
Michael Beyl <mb@exept.de>
parents: 6653
diff changeset
  3409
1375
f035bb7468f5 additions for new Text class
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3410
emphasisAt:characterIndex
f035bb7468f5 additions for new Text class
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3411
    "return the emphasis at some index.
f035bb7468f5 additions for new Text class
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3412
     Since characterArrays do not hold any emphasis information,
f035bb7468f5 additions for new Text class
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3413
     nil (no emphasis) is returned here."
f035bb7468f5 additions for new Text class
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3414
f035bb7468f5 additions for new Text class
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3415
    ^ nil
f035bb7468f5 additions for new Text class
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3416
f035bb7468f5 additions for new Text class
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3417
    "Created: 11.5.1996 / 14:13:27 / cg"
1396
5b5386311dbd concatenating mixed texts & strings
Claus Gittinger <cg@exept.de>
parents: 1393
diff changeset
  3418
!
5b5386311dbd concatenating mixed texts & strings
Claus Gittinger <cg@exept.de>
parents: 1393
diff changeset
  3419
11632
b82e9f3cabd1 new: #actionForAll: #emphasisAtPoint:on:
Stefan Vogel <sv@exept.de>
parents: 11630
diff changeset
  3420
emphasisAtPoint:aPoint on:aGC
b82e9f3cabd1 new: #actionForAll: #emphasisAtPoint:on:
Stefan Vogel <sv@exept.de>
parents: 11630
diff changeset
  3421
    "return the emphasis at a given point, or nil if there is none"
b82e9f3cabd1 new: #actionForAll: #emphasisAtPoint:on:
Stefan Vogel <sv@exept.de>
parents: 11630
diff changeset
  3422
b82e9f3cabd1 new: #actionForAll: #emphasisAtPoint:on:
Stefan Vogel <sv@exept.de>
parents: 11630
diff changeset
  3423
    ^ nil
b82e9f3cabd1 new: #actionForAll: #emphasisAtPoint:on:
Stefan Vogel <sv@exept.de>
parents: 11630
diff changeset
  3424
!
b82e9f3cabd1 new: #actionForAll: #emphasisAtPoint:on:
Stefan Vogel <sv@exept.de>
parents: 11630
diff changeset
  3425
1396
5b5386311dbd concatenating mixed texts & strings
Claus Gittinger <cg@exept.de>
parents: 1393
diff changeset
  3426
emphasisCollection
5b5386311dbd concatenating mixed texts & strings
Claus Gittinger <cg@exept.de>
parents: 1393
diff changeset
  3427
    "return the emphasis.
5b5386311dbd concatenating mixed texts & strings
Claus Gittinger <cg@exept.de>
parents: 1393
diff changeset
  3428
     Since characterArrays do not hold any emphasis information,
5b5386311dbd concatenating mixed texts & strings
Claus Gittinger <cg@exept.de>
parents: 1393
diff changeset
  3429
     nil (no emphasis) is returned here."
5b5386311dbd concatenating mixed texts & strings
Claus Gittinger <cg@exept.de>
parents: 1393
diff changeset
  3430
5b5386311dbd concatenating mixed texts & strings
Claus Gittinger <cg@exept.de>
parents: 1393
diff changeset
  3431
    ^ RunArray new:(self size)
5b5386311dbd concatenating mixed texts & strings
Claus Gittinger <cg@exept.de>
parents: 1393
diff changeset
  3432
5b5386311dbd concatenating mixed texts & strings
Claus Gittinger <cg@exept.de>
parents: 1393
diff changeset
  3433
    "Created: 14.5.1996 / 13:58:58 / cg"
5b5386311dbd concatenating mixed texts & strings
Claus Gittinger <cg@exept.de>
parents: 1393
diff changeset
  3434
    "Modified: 14.5.1996 / 15:02:29 / cg"
3404
5a9ab54bcbd5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3337
diff changeset
  3435
!
5a9ab54bcbd5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3337
diff changeset
  3436
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3437
emphasiseFrom:start to:stop with:newEmphasis
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3438
    "set to the emphasis within some range. return the receiver"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3439
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3440
    ^ self asText emphasiseFrom:start to:stop with:newEmphasis
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3441
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3442
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3443
     'hello' emphasiseFrom:2 with:#italic
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3444
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3445
     Transcript showCR:('hello' emphasiseFrom:2 with:#italic)
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3446
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3447
!
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3448
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3449
emphasiseFrom:start with:newEmphasis
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3450
    "set to the emphasis within some range. return the receiver"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3451
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3452
    ^ self emphasiseFrom:start to:(self size) with:newEmphasis
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3453
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3454
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3455
     'hello' emphasiseFrom:2 with:#italic
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3456
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3457
     Transcript showCR:('hello' emphasiseFrom:2 with:#italic)
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3458
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3459
!
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3460
3404
5a9ab54bcbd5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3337
diff changeset
  3461
emphasizeAllWith:emphasis
17734
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3462
    "return a text object representing the receiver, but all emphasized"
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3463
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3464
    "this test allows for small non-gui apps to be built without libbasic2 (where Text is)"
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3465
    Text isNil ifTrue:[^ self].
3404
5a9ab54bcbd5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3337
diff changeset
  3466
    ^ self asText emphasizeAllWith:emphasis
5a9ab54bcbd5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3337
diff changeset
  3467
5a9ab54bcbd5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3337
diff changeset
  3468
    "
5a9ab54bcbd5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3337
diff changeset
  3469
     Transcript showCR:('hello' emphasizeAllWith:#bold)
3599
fea09a812f55 comment
Claus Gittinger <cg@exept.de>
parents: 3578
diff changeset
  3470
     Transcript showCR:('hello' emphasizeAllWith:(#color -> Color red))
fea09a812f55 comment
Claus Gittinger <cg@exept.de>
parents: 3578
diff changeset
  3471
     Transcript showCR:('hello' emphasizeAllWith:(#color -> Color red))
fea09a812f55 comment
Claus Gittinger <cg@exept.de>
parents: 3578
diff changeset
  3472
    "
fea09a812f55 comment
Claus Gittinger <cg@exept.de>
parents: 3578
diff changeset
  3473
fea09a812f55 comment
Claus Gittinger <cg@exept.de>
parents: 3578
diff changeset
  3474
    "Modified: / 17.6.1998 / 12:51:44 / cg"
5097
4aa597a8a724 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4989
diff changeset
  3475
!
4aa597a8a724 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4989
diff changeset
  3476
4aa597a8a724 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4989
diff changeset
  3477
makeSelectorBoldIn:aClass
4aa597a8a724 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4989
diff changeset
  3478
    "the receiver represents some source code for
4aa597a8a724 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4989
diff changeset
  3479
     a method in aClass.
4aa597a8a724 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4989
diff changeset
  3480
     Change myself to boldify the selector.
4aa597a8a724 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4989
diff changeset
  3481
     Not yet implemented (could easily use the syntaxHighlighter
4aa597a8a724 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4989
diff changeset
  3482
     for this ...)"
4aa597a8a724 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4989
diff changeset
  3483
4aa597a8a724 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4989
diff changeset
  3484
    ^ self
4aa597a8a724 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4989
diff changeset
  3485
4aa597a8a724 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4989
diff changeset
  3486
    "Modified: / 13.12.1999 / 21:49:11 / cg"
4aa597a8a724 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4989
diff changeset
  3487
    "Created: / 13.12.1999 / 21:49:24 / cg"
6653
2e77e6bd99a1 +withoutEmphasis:
Michael Beyl <mb@exept.de>
parents: 6643
diff changeset
  3488
!
2e77e6bd99a1 +withoutEmphasis:
Michael Beyl <mb@exept.de>
parents: 6643
diff changeset
  3489
17734
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3490
withoutBackgroundColorEmphasis
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3491
    ^ self
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3492
!
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3493
6653
2e77e6bd99a1 +withoutEmphasis:
Michael Beyl <mb@exept.de>
parents: 6643
diff changeset
  3494
withoutEmphasis:emphasisToRemove
2e77e6bd99a1 +withoutEmphasis:
Michael Beyl <mb@exept.de>
parents: 6643
diff changeset
  3495
    ^ self
17734
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3496
!
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3497
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3498
withoutForegroundColorEmphasis
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  3499
    ^ self
1375
f035bb7468f5 additions for new Text class
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3500
! !
f035bb7468f5 additions for new Text class
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3501
7265
3b007758ff5b method category rename
Claus Gittinger <cg@exept.de>
parents: 7261
diff changeset
  3502
!CharacterArray methodsFor:'encoding & decoding'!
991
f0b45a4b82d2 first attempt in encoding/decoding for different character representations (mac/msdos etc.)
Claus Gittinger <cg@exept.de>
parents: 986
diff changeset
  3503
17754
5322906cdb6a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17751
diff changeset
  3504
decodeAsLiteralArray
5322906cdb6a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17751
diff changeset
  3505
    "given a literalEncoding in the receiver,
5322906cdb6a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17751
diff changeset
  3506
     create & return the corresponding object.
5322906cdb6a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17751
diff changeset
  3507
     The inverse operation to #literalArrayEncoding."
5322906cdb6a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17751
diff changeset
  3508
5322906cdb6a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17751
diff changeset
  3509
    ^ self
5322906cdb6a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17751
diff changeset
  3510
!
5322906cdb6a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17751
diff changeset
  3511
991
f0b45a4b82d2 first attempt in encoding/decoding for different character representations (mac/msdos etc.)
Claus Gittinger <cg@exept.de>
parents: 986
diff changeset
  3512
decodeFrom:encodingSymbol
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3513
    "given the receiver encoded as described by encodingSymbol,
8124
ca774158b317 code cleanup (removed old obsolete encoding stuff)
Claus Gittinger <cg@exept.de>
parents: 8102
diff changeset
  3514
     convert it into internal ST/X (unicode) encoding and return a corresponding CharacterArray."
ca774158b317 code cleanup (removed old obsolete encoding stuff)
Claus Gittinger <cg@exept.de>
parents: 8102
diff changeset
  3515
ca774158b317 code cleanup (removed old obsolete encoding stuff)
Claus Gittinger <cg@exept.de>
parents: 8102
diff changeset
  3516
    |myEncoding encoder|
7950
1a64875be502 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7945
diff changeset
  3517
1a64875be502 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7945
diff changeset
  3518
    encodingSymbol isNil ifTrue:[^ self].
1a64875be502 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7945
diff changeset
  3519
    myEncoding := self encoding.
1a64875be502 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7945
diff changeset
  3520
    encodingSymbol == myEncoding ifTrue:[^ self].
1a64875be502 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7945
diff changeset
  3521
1a64875be502 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7945
diff changeset
  3522
    encoder := CharacterEncoder encoderToEncodeFrom:(self encoding) into:encodingSymbol.
8124
ca774158b317 code cleanup (removed old obsolete encoding stuff)
Claus Gittinger <cg@exept.de>
parents: 8102
diff changeset
  3523
    encoder isNil ifTrue:[^ self].
ca774158b317 code cleanup (removed old obsolete encoding stuff)
Claus Gittinger <cg@exept.de>
parents: 8102
diff changeset
  3524
    ^ encoder decodeString:self.
991
f0b45a4b82d2 first attempt in encoding/decoding for different character representations (mac/msdos etc.)
Claus Gittinger <cg@exept.de>
parents: 986
diff changeset
  3525
!
f0b45a4b82d2 first attempt in encoding/decoding for different character representations (mac/msdos etc.)
Claus Gittinger <cg@exept.de>
parents: 986
diff changeset
  3526
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3527
encodeFrom:oldEncoding into:newEncoding
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3528
    ^ CharacterEncoder encodeString:self from:oldEncoding into:newEncoding
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3529
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3530
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3531
rot13
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3532
     "Usenet: from `rotate alphabet 13 places']
6835
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3533
      The simple Caesar-cypher encryption that replaces each English
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3534
      letter with the one 13 places forward or back along the alphabet,
6835
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3535
      so that 'The butler did it!!' becomes 'Gur ohgyre qvq vg!!'
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3536
      Most Usenet news reading and posting programs include a rot13 feature.
6835
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3537
      It is used to enclose the text in a sealed wrapper that the reader must choose
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3538
      to open -- e.g., for posting things that might offend some readers, or spoilers.
6835
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3539
      A major advantage of rot13 over rot(N) for other N is that it
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3540
      is self-inverse, so the same code can be used for encoding and decoding."
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3541
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  3542
    ^ self rot:13
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3543
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3544
    "
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3545
     'hello world' rot13
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3546
     'hello world' rot13 rot13
6835
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3547
    "
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3548
!
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3549
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  3550
rot:n
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  3551
     "Usenet: from `rotate alphabet N places']
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  3552
      The simple Caesar-cypher encryption that replaces each English
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  3553
      letter with the one N places forward or back along the alphabet,
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  3554
      so that 'The butler did it!!' becomes 'Gur ohgyre qvq vg!!' by rot 13
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  3555
      Most Usenet news reading and posting programs include a rot13 feature.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  3556
      It is used to enclose the text in a sealed wrapper that the reader must choose
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  3557
      to open -- e.g., for posting things that might offend some readers, or spoilers.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  3558
      A major advantage of rot13 over rot(N) for other N is that it
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  3559
      is self-inverse, so the same code can be used for encoding and decoding."
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  3560
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  3561
    ^ self species
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3562
	streamContents:[:aStream |
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3563
	    self do:[:char |
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3564
		aStream nextPut:(char rot:n) ]]
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  3565
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  3566
    "
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  3567
     'hello world' rot:13
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  3568
     ('hello world' rot:13) rot:13
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  3569
    "
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  3570
!
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  3571
6835
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3572
utf8Decoded
7950
1a64875be502 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7945
diff changeset
  3573
    "Interpreting myself as an UTF-8 representation, decode and return the decoded string."
6835
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3574
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3575
    |in out is16Bit c|
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3576
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3577
    is16Bit := false.
11326
11ce7ae19315 changed #utf8Decoded - use CharacterWriteStream
Stefan Vogel <sv@exept.de>
parents: 11320
diff changeset
  3578
    out := CharacterWriteStream on:(String uninitializedNew:self size).
6835
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3579
    in := self readStream.
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3580
    [in atEnd] whileFalse:[
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3581
	c := Character utf8DecodeFrom:in.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3582
	out nextPut:c.
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3583
    ].
6835
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3584
    ^ out contents
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3585
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3586
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3587
     #[16rC8 16rA0] asString utf8Decoded
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3588
     (Character value:16r220) utf8Encoded
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3589
     (Character value:16r220) utf8Encoded utf8Decoded
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3590
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3591
     (Character value:16r800) utf8Encoded
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3592
     (Character value:16r220) utf8Encoded utf8Decoded
6835
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3593
    "
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3594
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3595
    "test:
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3596
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3597
      |utf8Encoding original readBack|
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3598
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3599
      1 to:16rFFFF do:[:ascii |
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3600
	original := (Character value:ascii) asString.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3601
	utf8Encoding := original utf8Encoded.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3602
	readBack := utf8Encoding utf8Decoded.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3603
	readBack = original ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3604
	    self halt
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3605
	]
6835
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3606
      ]
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3607
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3608
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3609
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3610
utf8DecodedWithTwoByteCharactersReplacedBy:replacementCharacter
6835
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3611
    "Interpreting myself as an UTF-8 representation, decode and return
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3612
     the decoded string. Suppress all 2-byte (above 16rFF) characters,
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3613
     and replace them with replacementCharacter"
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3614
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3615
    |in out c|
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3616
8222
f2c454a9a038 replaced '' writeStream by String writeStream
Claus Gittinger <cg@exept.de>
parents: 8124
diff changeset
  3617
    out := WriteStream on:(String uninitializedNew:self size).
6835
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3618
    in := self readStream.
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3619
    [in atEnd] whileFalse:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3620
	c := Character utf8DecodeFrom:in.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3621
	c codePoint > 16rFF ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3622
	    c := replacementCharacter
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3623
	].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3624
	out nextPut:c.
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3625
    ].
6835
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3626
    ^ out contents
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3627
bdb2cb03200c added utf8Decode with 8-bit chars only
Claus Gittinger <cg@exept.de>
parents: 6834
diff changeset
  3628
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  3629
     (Character value:16r220) utf8Encoded
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3630
	utf8DecodedWithTwoByteCharactersReplacedBy:(Character space)
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3631
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3632
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3633
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3634
utf8Encoded
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3635
    "Return my UTF-8 representation as a new String"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3636
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3637
    |s|
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3638
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3639
    s := WriteStream on:(String uninitializedNew:self size).
11320
0cf84c372ccf Unicode handling:
Stefan Vogel <sv@exept.de>
parents: 11292
diff changeset
  3640
    s nextPutAllUtf8:self.
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3641
    ^ s contents
11320
0cf84c372ccf Unicode handling:
Stefan Vogel <sv@exept.de>
parents: 11292
diff changeset
  3642
0cf84c372ccf Unicode handling:
Stefan Vogel <sv@exept.de>
parents: 11292
diff changeset
  3643
    "
17763
019bb9c842c5 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17761
diff changeset
  3644
	'abcde' utf8Encoded
11320
0cf84c372ccf Unicode handling:
Stefan Vogel <sv@exept.de>
parents: 11292
diff changeset
  3645
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3646
! !
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  3647
17727
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3648
!CharacterArray methodsFor:'helpers'!
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3649
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3650
reindent: indent
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3651
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3652
    ^String streamContents:
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3653
        [:s|
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3654
        self reindent: indent on: s]
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3655
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3656
    "Created: / 15-08-2009 / 12:55:04 / Jan Vrany <vranyj1@fel.cvut.cz>"
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3657
!
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3658
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3659
reindent: indent on: stream
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3660
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3661
    ^self reindent: indent using: Character tab on: stream
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3662
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3663
    "Created: / 15-08-2009 / 12:41:22 / Jan Vrany <vranyj1@fel.cvut.cz>"
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3664
!
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3665
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3666
reindent: indent using: indentCharOrString
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3667
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3668
    ^String streamContents:
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3669
        [:s|
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3670
        self reindent: indent using: indentCharOrString on: s]
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3671
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3672
    "Created: / 15-08-2009 / 12:55:31 / Jan Vrany <vranyj1@fel.cvut.cz>"
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3673
!
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3674
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3675
reindent: indent using: indentCharOrString on: stream
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3676
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3677
    (self includes: Character cr)
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3678
        ifFalse:
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3679
            [|start|
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3680
            start := self indexOfNonSeparator.
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3681
            start = 0 ifTrue:[start := 1].
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3682
            indent timesRepeat: [stream nextPutAll: indentCharOrString asString].
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3683
            stream 
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3684
                nextPutBytes: (self size - start + 1)
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3685
                from: self
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3686
                startingAt: start]
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3687
        ifTrue:
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3688
            [self asStringCollection
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3689
                reindent: indent using: indentCharOrString on: stream]
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3690
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3691
    "Created: / 15-08-2009 / 12:29:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3692
! !
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
  3693
11345
3f5e4cc6ae91 changed #allStrikedOut
Claus Gittinger <cg@exept.de>
parents: 11329
diff changeset
  3694
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3695
!CharacterArray methodsFor:'matching - glob expressions'!
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3696
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3697
compoundMatch:aString
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3698
    "like match, but the receiver may be a compound match pattern,
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3699
     consisting of multiple simple GLOB patterns, separated by semicolons.
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3700
     This is usable with fileName pattern fields.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3701
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3702
     NOTICE: match-meta character interpretation is like in unix-matching (glob),
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3703
             NOT the ST-80 meaning.
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3704
     NOTICE: this is GLOB, which is different from regex matching (see matchesRegex:)
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3705
     NOTICE: the receiver is the match pattern"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3706
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3707
    ^self compoundMatch:aString ignoreCase:false
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3708
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3709
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3710
     'f*' match:'foo'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3711
     'b*' match:'foo'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3712
     'f*;b*' match:'foo'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3713
     'f*;b*' match:'bar'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3714
     'f*;b*' compoundMatch:'foo'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3715
     'f*;b*' compoundMatch:'bar'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3716
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3717
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3718
    "Modified: / 30.1.1998 / 11:40:18 / stefan"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3719
    "Modified: / 16.12.1999 / 01:22:08 / cg"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3720
!
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3721
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3722
compoundMatch:aString ignoreCase:ignoreCase
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3723
    "like match, but the receiver may be a compound match pattern,
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3724
     consisting of multiple simple GLOB patterns, separated by semicolons.
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3725
     This is usable with fileName pattern fields.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3726
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3727
     NOTICE: match-meta character interpretation is like in unix-matching (glob),
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3728
             NOT the ST-80 meaning.
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3729
     NOTICE: this is GLOB, which is different from regex matching (see matchesRegex:)
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3730
     NOTICE: the receiver is the match pattern"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3731
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3732
    |matchers|
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3733
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3734
    matchers := self asCollectionOfSubstringsSeparatedBy:$;.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3735
    ^ matchers contains:[:aPattern |
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3736
        aPattern match:aString ignoreCase:ignoreCase escapeCharacter:nil
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3737
      ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3738
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3739
"/    matchers do:[:aPattern |
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3740
"/        (aPattern match:aString ignoreCase:ignoreCase) ifTrue:[^ true].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3741
"/    ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3742
"/    ^ false.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3743
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3744
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3745
     'f*' match:'foo'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3746
     'b*' match:'foo'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3747
     'f*;b*' match:'foo'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3748
     'f*;b*' match:'bar'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3749
     'f*;b*' compoundMatch:'foo'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3750
     'f*;b*' compoundMatch:'bar'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3751
     'f*;b*' compoundMatch:'Foo' ignoreCase:true
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3752
     'f*;b*' compoundMatch:'Bar' ignoreCase:true
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3753
     'f*;b*' compoundMatch:'ccc' ignoreCase:true
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3754
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3755
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3756
    "Modified: / 15.4.1997 / 15:50:33 / cg"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3757
    "Modified: / 30.1.1998 / 11:40:18 / stefan"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3758
    "Created: / 16.12.1999 / 01:21:35 / cg"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3759
!
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3760
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3761
findMatchString:matchString
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3762
    "like findString/indexOfSubCollection, but allowing GLOB match patterns.
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3763
     find matchstring; if found, return the index;
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3764
     if not found, return 0.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3765
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3766
     NOTICE: match-meta character interpretation is like in unix-matching,
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3767
             NOT the ST-80 meaning.
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3768
     NOTICE: this GLOB, which is different from regex matching (see matchesRegex:)
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3769
     NOTICE: the argument is the match pattern"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3770
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3771
    ^ self findMatchString:matchString startingAt:1 ignoreCase:false ifAbsent:0
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3772
!
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3773
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3774
findMatchString:matchString startingAt:index
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3775
    "like findString, but allowing GLOB match patterns.
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3776
     find matchstring, starting at index. if found, return the index;
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3777
     if not found, return 0.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3778
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3779
     NOTICE: match-meta character interpretation is like in unix-matching (glob),
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3780
             NOT the ST-80 meaning.
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3781
     NOTICE: this is GLOB, which is different from regex matching (see matchesRegex:)
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3782
     NOTICE: the argument is the match pattern"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3783
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3784
    ^ self findMatchString:matchString startingAt:index ignoreCase:false ifAbsent:0
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3785
!
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3786
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3787
findMatchString:matchString startingAt:index ignoreCase:ignoreCase ifAbsent:exceptionBlock
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3788
    "like findString, but allowing GLOB match patterns.
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3789
     find matchstring, starting at index. if found, return the index;
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3790
     if not found, return the result of evaluating exceptionBlock.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3791
     This is a q&d hack - not very efficient.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3792
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3793
     NOTICE: match-meta character interpretation is like in unix-matching (glob),
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3794
             NOT the ST-80 meaning.
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3795
     NOTICE: this is GLOB, which is different from regex matching (see matchesRegex:)
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3796
     NOTICE: the argument is the match pattern"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3797
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3798
    |firstChar firstSet
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3799
     startIndex "{ Class: SmallInteger }"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3800
     matchSize  "{ Class: SmallInteger }"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3801
     mySize     "{ Class: SmallInteger }"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3802
     realMatchString lcChar ucChar|
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3803
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3804
    matchSize := matchString size.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3805
    matchSize == 0 ifTrue:[^ index]. "empty string matches"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3806
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3807
    realMatchString := matchString.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3808
    (realMatchString endsWith:$*) ifFalse:[
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3809
        realMatchString := realMatchString , '*'.
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3810
        matchSize := matchSize + 1
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3811
    ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3812
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3813
    mySize := self size.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3814
    firstChar := realMatchString at:1.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3815
    firstChar == self class matchEscapeCharacter ifTrue:[
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3816
        firstChar := realMatchString at:2.
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3817
    ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3818
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3819
    firstChar asString includesMatchCharacters ifTrue:[
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3820
        index to:mySize do:[:col |
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3821
            (realMatchString match:self from:col to:mySize ignoreCase:ignoreCase)
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3822
            ifTrue:[^ col]
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3823
        ].
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3824
        ^ exceptionBlock value.
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3825
    ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3826
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3827
    lcChar := firstChar asLowercase.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3828
    ucChar := firstChar asUppercase.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3829
    (ignoreCase and:[ lcChar ~= ucChar]) ifTrue:[
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3830
        firstSet := Array with:ucChar with:lcChar.
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3831
        startIndex := self indexOfAny:firstSet startingAt:index.
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3832
    ] ifFalse:[
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3833
        startIndex := self indexOf:firstChar startingAt:index.
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3834
    ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3835
    [startIndex == 0] whileFalse:[
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3836
        (realMatchString match:self from:startIndex to:mySize ignoreCase:ignoreCase)
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3837
        ifTrue:[^ startIndex].
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3838
        firstSet notNil ifTrue:[
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3839
            startIndex := self indexOfAny:firstSet startingAt:(startIndex + 1).
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3840
        ] ifFalse:[
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3841
            startIndex := self indexOf:firstChar startingAt:(startIndex + 1).
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3842
        ].
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3843
    ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3844
    ^ exceptionBlock value
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3845
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3846
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3847
     'one two three four' findMatchString:'o[nu]'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3848
     'one two three four' findMatchString:'o[nu]' startingAt:3
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3849
     'one two three four one' findMatchString:'ONE' startingAt:3 ignoreCase:true ifAbsent:0
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3850
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3851
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3852
    "Modified: 13.9.1997 / 06:31:22 / cg"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3853
!
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3854
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3855
includesMatchString:matchString
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3856
    "like includesString, but allowing GLOB match patterns.
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3857
     find matchstring; if found, return true, otherwise return false.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3858
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3859
     NOTICE: match-meta character interpretation is like in unix-matching (glob),
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3860
             NOT the ST-80 meaning.
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3861
     NOTICE: this is GLOB, which is different from regex matching (see matchesRegex:)
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3862
     NOTICE: the argument is the match pattern"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3863
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3864
    ^ (self findMatchString:matchString) ~~ 0
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3865
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3866
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3867
     'hello world' includesMatchString:'h*'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3868
     'hello world' includesMatchString:'h[aeiou]llo'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3869
     'hello world' includesMatchString:'wor*'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3870
     'hello world' includesMatchString:'woR*'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3871
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3872
!
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3873
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3874
includesMatchString:matchString caseSensitive:caseSensitive
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3875
    "like includesString, but allowing GLOB match patterns.
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3876
     find matchstring; if found, return true, otherwise return false.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3877
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3878
     NOTICE: match-meta character interpretation is like in unix-matching (glob),
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3879
             NOT the ST-80 meaning.
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3880
     NOTICE: this is GLOB, which is different from regex matching (see matchesRegex:)
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3881
     NOTICE: the argument is the match pattern"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3882
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3883
    ^ (self findMatchString:matchString startingAt:1 ignoreCase:caseSensitive not ifAbsent:0) ~~ 0
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3884
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3885
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3886
     'hello world' includesMatchString:'h*' caseSensitive:true
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3887
     'hello world' includesMatchString:'h*' caseSensitive:false
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3888
     'Hello world' includesMatchString:'h*' caseSensitive:true
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3889
     'Hello world' includesMatchString:'h*' caseSensitive:false
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3890
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3891
     'hello world' includesMatchString:'h[aeiou]llo' caseSensitive:true
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3892
     'hello world' includesMatchString:'h[aeiou]llo' caseSensitive:false
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3893
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3894
     'hello world' includesMatchString:'wor*' caseSensitive:true
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3895
     'hello world' includesMatchString:'wor*' caseSensitive:false
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3896
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3897
     'hello world' includesMatchString:'woR*' caseSensitive:true
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3898
     'hello world' includesMatchString:'woR*' caseSensitive:false
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3899
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3900
!
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3901
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3902
match:aString
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3903
    "return true if aString matches self, where self may contain GLOB meta-match
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3904
     characters $* (to match any string) or $# (to match any character).
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3905
     or [...] to match a set of characters.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3906
     Lower/uppercase are considered different.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3907
     The escape character is the backQuote.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3908
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3909
     NOTICE: match-meta character interpretation is like in unix-matching (glob),
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3910
             NOT the ST-80 meaning.
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3911
     NOTICE: this is GLOB, which is different from regex matching (see matchesRegex:)
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3912
     NOTICE: the receiver is the match pattern"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3913
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3914
    ^ self match:aString from:1 to:aString size ignoreCase:false
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3915
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3916
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3917
     '\*f*' match:'f'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3918
     '\*f*' match:'*f'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3919
     '*\*f*' match:'*f'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3920
     '*f*' match:'*f'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3921
     '*ute*' match:'computer'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3922
     '*uter' match:'computer'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3923
     'uter*' match:'computer'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3924
     '*ute*' match:''
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3925
     '[abcd]*' match:'computer'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3926
     '[abcd]*' match:'komputer'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3927
     '*some*compl*ern*' match:'this is some more complicated pattern match'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3928
     '*some*compl*ern*' match:'this is another complicated pattern match'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3929
     '*-hh' match:'anton-h'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3930
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3931
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3932
    "Modified: / 9.6.1998 / 18:50:00 / cg"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3933
!
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3934
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3935
match:aString escapeCharacter:escape
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3936
    "return true if aString matches self, where self may contain GLOB meta-match
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3937
     characters $* (to match any string) or $# (to match any character).
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3938
     or [...] to match a set of characters.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3939
     Lower/uppercase are considered different.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3940
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3941
     NOTICE: match-meta character interpretation is like in unix-matching (glob),
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3942
             NOT the ST-80 meaning.
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3943
     NOTICE: this is GLOB, which is different from regex matching (see matchesRegex:)
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3944
     NOTICE: the receiver is the match pattern"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3945
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3946
    ^ self match:aString from:1 to:aString size ignoreCase:false escapeCharacter:escape
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3947
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3948
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3949
     'a\b\c\*' match:'a\b\c\d'
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3950
     'a\b\c\*' match:'a\b\c\d' escapeCharacter:nil
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3951
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3952
!
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3953
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3954
match:aString from:start to:stop ignoreCase:ignoreCase
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3955
    "return true if part of aString matches myself,
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3956
     where self may contain GLOB meta-match
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3957
     characters $* (to match any string) or $# (to match any character)
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3958
     or [...] to match a set of characters.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3959
     If ignoreCase is true, lower/uppercase are considered the same.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3960
     The escape character is the backQuote.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3961
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3962
     NOTICE: match-meta character interpretation is like in unix-matching (glob),
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3963
             NOT the ST-80 meaning.
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3964
     NOTICE: this is GLOB, which is different from regex matching (see matchesRegex:)
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3965
     NOTICE: the receiver is the match pattern"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3966
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3967
    ^ self
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3968
        match:aString from:start to:stop ignoreCase:ignoreCase
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3969
        escapeCharacter:(self class matchEscapeCharacter)
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3970
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3971
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3972
     '*ute*' match:'12345COMPUTER' from:1 to:5 ignoreCase:true
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3973
     '*ute*' match:'12345COMPUTER' from:6 to:13 ignoreCase:true
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3974
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3975
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3976
    "Modified: / 10.11.1998 / 21:43:46 / cg"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3977
!
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3978
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3979
match:aString from:start to:stop ignoreCase:ignoreCase escapeCharacter:escape
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3980
    "return true if part of aString matches myself,
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3981
     where self may contain GLOB meta-match
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3982
     characters $* (to match any string) or $# (to match any character)
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3983
     or [...] to match a set of characters.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3984
     If ignoreCase is true, lower/uppercase are considered the same.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3985
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3986
     NOTICE: match-meta character interpretation is like in unix-matching (glob),
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3987
             NOT the ST-80 meaning.
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  3988
     NOTICE: this is GLOB, which is different from regex matching (see matchesRegex:)
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3989
     NOTICE: the receiver is the match pattern"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3990
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3991
    |matchScanArray|
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3992
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3993
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3994
     keep the matchScanArray from the most recent match -
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3995
     avoids parsing the pattern over-and over if multiple searches
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3996
     are done with the same pattern.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3997
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3998
    (PreviousMatch notNil
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  3999
    and:[PreviousMatch key = self]) ifTrue:[
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4000
        matchScanArray := PreviousMatch value
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4001
    ] ifFalse:[
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4002
        matchScanArray := self class matchScanArrayFrom:self escapeCharacter:escape.
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4003
        matchScanArray isNil ifTrue:[
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4004
            'CharacterArray [info]: invalid matchpattern:''' infoPrint. self infoPrint. ''' comparing for equality.' infoPrintCR.
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4005
            ^ self = aString
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4006
"/            ^ false
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4007
        ].
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4008
        PreviousMatch := self -> matchScanArray.
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4009
    ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4010
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4011
    ^ self class
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4012
        matchScan:matchScanArray
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4013
        from:1 to:matchScanArray size
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4014
        with:aString
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4015
        from:start to:stop
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4016
        ignoreCase:ignoreCase
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4017
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4018
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4019
     '*ute*' match:'12345COMPUTER' from:1 to:5 ignoreCase:true
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4020
     '*ute*' match:'12345COMPUTER' from:6 to:13 ignoreCase:true
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4021
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4022
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4023
    "Modified: / 10.11.1998 / 21:43:46 / cg"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4024
!
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4025
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4026
match:aString ignoreCase:ignoreCase
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4027
    "return true if aString matches self, where self may contain GLOB meta-match
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4028
     characters $* (to match any string) or $# (to match any character)
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4029
     or [...] to match a set of characters.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4030
     If ignoreCase is true, lower/uppercase are considered the same.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4031
     The escape character is the backQuote.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4032
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4033
     NOTICE: match-meta character interpretation is like in unix-matching (glob),
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4034
             NOT the ST-80 meaning.
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4035
     NOTICE: this is GLOB, which is different from regex matching (see matchesRegex:)
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4036
     NOTICE: the receiver is the match pattern"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4037
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4038
    ^ self match:aString from:1 to:aString size ignoreCase:ignoreCase
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4039
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4040
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4041
     '*ute*' match:'COMPUTER' ignoreCase:true
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4042
     '*uter' match:'COMPUTER' ignoreCase:false
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4043
     '[abcd]*' match:'computer' ignoreCase:false
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4044
     '[abcd]*' match:'Computer' ignoreCase:false
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4045
     '[a-k]*' match:'komputer' ignoreCase:false
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4046
     '[a-k]*' match:'zomputer' ignoreCase:false
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4047
     '[a-k]*' match:'Komputer' ignoreCase:false
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4048
     '[a-k]*' match:'Komputer' ignoreCase:true
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4049
     '*some*compl*ern*' match:'this is some more complicated pattern match' ignoreCase:true
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4050
     '*some*compl*ern*' match:'this is another complicated pattern match' ignoreCase:true
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4051
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4052
     Time millisecondsToRun:[
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4053
        Symbol allInstancesDo:[:sym |
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4054
            '[ab]*' match:sym ignoreCase:false
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4055
        ]
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4056
     ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4057
     Time millisecondsToRun:[
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4058
        Symbol allInstancesDo:[:sym |
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4059
            '*at:*' match:sym ignoreCase:false
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4060
        ]
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4061
     ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4062
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4063
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4064
    "Modified: 2.4.1997 / 17:28:58 / cg"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4065
!
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4066
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4067
match:aString ignoreCase:ignoreCase escapeCharacter:escape
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4068
    "return true if aString matches self, where self may contain GLOB meta-match
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4069
     characters $* (to match any string) or $# (to match any character)
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4070
     or [...] to match a set of characters.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4071
     If ignoreCase is true, lower/uppercase are considered the same.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4072
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4073
     NOTICE: match-meta character interpretation is like in unix-matching (glob),
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4074
             NOT the ST-80 meaning.
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4075
     NOTICE: this is GLOB, which is different from regex matching (see matchesRegex:)
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4076
     NOTICE: the receiver is the match pattern"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4077
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4078
    ^ self match:aString from:1 to:aString size ignoreCase:ignoreCase escapeCharacter:escape
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4079
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4080
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4081
     '*ute*' match:'COMPUTER' ignoreCase:true
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4082
     '*uter' match:'COMPUTER' ignoreCase:false
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4083
     '[abcd]*' match:'computer' ignoreCase:false
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4084
     '[abcd]*' match:'Computer' ignoreCase:false
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4085
     '[a-k]*' match:'komputer' ignoreCase:false
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4086
     '[a-k]*' match:'zomputer' ignoreCase:false
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4087
     '[a-k]*' match:'Komputer' ignoreCase:false
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4088
     '[a-k]*' match:'Komputer' ignoreCase:true
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4089
     '*some*compl*ern*' match:'this is some more complicated pattern match' ignoreCase:true
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4090
     '*some*compl*ern*' match:'this is another complicated pattern match' ignoreCase:true
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4091
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4092
     Time millisecondsToRun:[
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4093
        Symbol allInstancesDo:[:sym |
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4094
            '[ab]*' match:sym ignoreCase:false
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4095
        ]
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4096
     ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4097
     Time millisecondsToRun:[
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4098
        Symbol allInstancesDo:[:sym |
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4099
            '*at:*' match:sym ignoreCase:false
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4100
        ]
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4101
     ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4102
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4103
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4104
    "Modified: 2.4.1997 / 17:28:58 / cg"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4105
!
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4106
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4107
matches:aPatternString
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4108
    "return true if the receiver matches aString, where aPatternString may contain GLOB meta-match
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4109
     characters $* (to match any string) or $# (to match any character).
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4110
     or [...] to match a set of characters.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4111
     Lower/uppercase are considered different.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4112
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4113
     NOTICE: match-meta character interpretation is like in unix-matching (glob),
17735
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4114
             NOT the ST-80 meaning.
6a5bc05f696a Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17734
diff changeset
  4115
     NOTICE: this is GLOB, which is different from regex matching (see matchesRegex:)
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4116
     NOTICE: the receiver is the match pattern"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4117
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4118
    ^ aPatternString match:self
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4119
! !
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4120
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4121
17761
b0e5971141bc Added Lookup and BuiltinLookup classes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17754
diff changeset
  4122
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4123
!CharacterArray methodsFor:'padded copying'!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4124
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4125
centerPaddedTo:newSize
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4126
     "return a new string consisting of the receivers characters,
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4127
     plus spaces up to length and center the receivers characters in
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4128
     the resulting string.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4129
     If the receivers size is equal or greater than the length argument,
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4130
     the original receiver is returned unchanged."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4131
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4132
     ^ self centerPaddedTo:newSize with:(Character space)
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4133
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4134
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4135
     'foo' centerPaddedTo:10
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4136
     123 printString centerPaddedTo:10
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4137
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4138
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4139
    "Created: 25.11.1995 / 10:53:57 / cg"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4140
!
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4141
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4142
centerPaddedTo:size with:padCharacter
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4143
    "return a new string of length size, which contains the receiver
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4144
     centered (i.e. padded on both sides).
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4145
     Characters are filled with padCharacter.
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4146
     If the receivers size is equal or greater than the length argument,
815
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4147
     the original receiver is returned unchanged."
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4148
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4149
    |len s|
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4150
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4151
    len := self size.
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4152
    (len < size) ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4153
	s := self species new:size withAll:padCharacter.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4154
	s replaceFrom:(size - len) // 2  + 1 with:self.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4155
	^ s
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4156
    ]
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4157
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4158
    "
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4159
     'foo' centerPaddedTo:11 with:$.
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4160
     'fooBar' centerPaddedTo:5 with:$.
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4161
     123 printString centerPaddedTo:10 with:$.
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4162
     (' ' , 123 printString) centerPaddedTo:10 with:$.
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4163
     (Float pi printString) centerPaddedTo:15 with:(Character space)
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4164
     (Float pi printString) centerPaddedTo:15 with:$-
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4165
     (' ' , Float pi class name) centerPaddedTo:15 with:$.
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4166
    "
815
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4167
!
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4168
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4169
decimalPaddedTo:size and:afterPeriod at:decimalCharacter
815
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4170
    "return a new string of overall length size, which contains the receiver
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4171
     aligned at the decimal-period column and afterPeriod characters to the right
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4172
     of the period. The periodCharacter is passed as arguments (allowing for US and European formats
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4173
     to be padded).
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4174
     If the receivers size is equal or greater than the length argument,
815
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4175
     the original receiver is returned unchanged.
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4176
     (sounds complicated ? -> see examples below)."
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4177
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4178
    ^ self
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4179
	decimalPaddedTo:size
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4180
	and:afterPeriod
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4181
	at:decimalCharacter
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4182
	withLeft:(Character space)
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4183
	right:$0
815
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4184
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4185
    "
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4186
     '123' decimalPaddedTo:10 and:3 at:$.      -> '   123    '
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4187
     '123' decimalPaddedTo:10 and:3 at:$.      -> '   123.000'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4188
     '123.' decimalPaddedTo:10 and:3 at:$.     -> '   123.000'
815
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4189
     '123.1' decimalPaddedTo:10 and:3 at:$.    -> '   123.100'
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4190
     '123.1' decimalPaddedTo:10 and:3 at:$.    -> '   123.1  '
815
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4191
     '123.123' decimalPaddedTo:10 and:3 at:$.  -> '   123.123'
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4192
    "
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4193
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4194
    "Created: 23.12.1995 / 13:11:52 / cg"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4195
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4196
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4197
decimalPaddedTo:size and:afterPeriod at:decimalCharacter withLeft:leftPadChar right:rightPadChar
815
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4198
    "return a new string of overall length size, which contains the receiver
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4199
     aligned at the decimal-period column and afterPeriod characters to the right
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4200
     of the period.
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4201
     Characters on the left are filled with leftPadChar.
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4202
     If rightPadChar is nil, characters on the right are filled with leftPadCharacter too;
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4203
     otherwise, if missing, a decimal point is added and right characters filled with this.
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4204
     If the receivers size is equal or greater than the length argument,
815
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4205
     the original receiver is returned unchanged.
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4206
     (sounds complicated ? -> see examples below)."
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4207
5230
655c21ffe6cc care for negative size of rest-string when decimalPadding
Claus Gittinger <cg@exept.de>
parents: 5221
diff changeset
  4208
    |s idx n rest|
815
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4209
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4210
    idx := self indexOf:decimalCharacter.
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4211
    idx == 0 ifTrue:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4212
	"/
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4213
	"/ no decimal point found; adjust string to the left of the period column
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4214
	"/
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4215
	rightPadChar isNil ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4216
	    s := self , (self species new:afterPeriod + 1 withAll:leftPadChar)
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4217
	] ifFalse:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4218
	    s:= self , decimalCharacter asString , (self species new:afterPeriod withAll:rightPadChar).
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4219
	].
815
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4220
    ] ifFalse:[
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4221
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4222
	"/ the number of after-decimalPoint characters
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4223
	n := self size - idx.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4224
	rest := afterPeriod - n.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4225
	rest > 0 ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4226
	    s := (self species new:rest withAll:(rightPadChar ? leftPadChar)).
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4227
	] ifFalse:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4228
	    s := ''
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4229
	].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4230
	s := self , s.
815
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4231
    ].
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4232
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4233
    ^ s leftPaddedTo:size with:leftPadChar
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4234
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4235
    "
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4236
     '123' decimalPaddedTo:10 and:3 at:$. withLeft:(Character space) right:nil     -> '   123    '
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4237
     '123' decimalPaddedTo:10 and:3 at:$. withLeft:(Character space) right:$0      -> '   123.000'
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4238
     '123.' decimalPaddedTo:10 and:3 at:$. withLeft:(Character space) right:$0     -> '   123.000'
815
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4239
     '123.1' decimalPaddedTo:10 and:3 at:$. withLeft:(Character space) right:$0    -> '   123.100'
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4240
     '123.1' decimalPaddedTo:10 and:3 at:$. withLeft:(Character space) right:nil   -> '   123.1  '
815
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4241
     '123.123' decimalPaddedTo:10 and:3 at:$. withLeft:(Character space) right:$0  -> '   123.123'
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4242
    "
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4243
997a02c135e7 support for decimal padding added
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
  4244
    "Modified: 23.12.1995 / 13:08:18 / cg"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4245
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4246
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4247
leftPaddedTo:size
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4248
    "return a new string of length size, which contains the receiver
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4249
     right-adjusted (i.e. padded on the left).
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4250
     Characters on the left are filled with spaces.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4251
     If the receivers size is equal or greater than the length argument,
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4252
     the original receiver is returned unchanged."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4253
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4254
    ^ self leftPaddedTo:size with:(Character space)
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4255
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4256
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4257
     'foo' leftPaddedTo:10
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4258
     'fooBar' leftPaddedTo:5
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4259
     123 printString leftPaddedTo:10
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4260
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4261
!
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4262
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4263
paddedTo:newSize
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4264
     "return a new string consisting of the receivers characters,
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4265
     plus spaces up to length.
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4266
     If the receivers size is equal or greater than the length argument,
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4267
     the original receiver is returned unchanged."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4268
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4269
     ^ self paddedTo:newSize with:(Character space)
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4270
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4271
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4272
     'foo' paddedTo:10
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4273
     123 printString paddedTo:10
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4274
    "
64
af7aeb79b25e Initial revision
claus
parents:
diff changeset
  4275
! !
af7aeb79b25e Initial revision
claus
parents:
diff changeset
  4276
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4277
!CharacterArray methodsFor:'printing & storing'!
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4278
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4279
article
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4280
    "return an article string for the receiver."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4281
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4282
    |firstChar|
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4283
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4284
    firstChar := (self at:1) asLowercase.
5848
ef81d77ca1ad UTF-8 Stuff
Stefan Vogel <sv@exept.de>
parents: 5843
diff changeset
  4285
    ((firstChar isVowel and:[firstChar ~~ $u]) or:[firstChar == $x]) ifTrue:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4286
	^ 'an'
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4287
    ].
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4288
    ^ 'a'
5848
ef81d77ca1ad UTF-8 Stuff
Stefan Vogel <sv@exept.de>
parents: 5843
diff changeset
  4289
ef81d77ca1ad UTF-8 Stuff
Stefan Vogel <sv@exept.de>
parents: 5843
diff changeset
  4290
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4291
	'uboot' article.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4292
	'xmas' article.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4293
	'alarm' article.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4294
	'baby' article.
5848
ef81d77ca1ad UTF-8 Stuff
Stefan Vogel <sv@exept.de>
parents: 5843
diff changeset
  4295
    "
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4296
!
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4297
8049
ccd0e8f26439 printing - migrating towards unicodeSupport in ST-code
Claus Gittinger <cg@exept.de>
parents: 8040
diff changeset
  4298
basicStoreString
ccd0e8f26439 printing - migrating towards unicodeSupport in ST-code
Claus Gittinger <cg@exept.de>
parents: 8040
diff changeset
  4299
    "return a String for storing myself"
ccd0e8f26439 printing - migrating towards unicodeSupport in ST-code
Claus Gittinger <cg@exept.de>
parents: 8040
diff changeset
  4300
ccd0e8f26439 printing - migrating towards unicodeSupport in ST-code
Claus Gittinger <cg@exept.de>
parents: 8040
diff changeset
  4301
    |s n index|
ccd0e8f26439 printing - migrating towards unicodeSupport in ST-code
Claus Gittinger <cg@exept.de>
parents: 8040
diff changeset
  4302
ccd0e8f26439 printing - migrating towards unicodeSupport in ST-code
Claus Gittinger <cg@exept.de>
parents: 8040
diff changeset
  4303
    n := self occurrencesOf:$'.
11320
0cf84c372ccf Unicode handling:
Stefan Vogel <sv@exept.de>
parents: 11292
diff changeset
  4304
    n ~~ 0 ifTrue:[
17742
3fef0ed4c2d5 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17735
diff changeset
  4305
        s := self class new:(n + 2 + self size).
3fef0ed4c2d5 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17735
diff changeset
  4306
        s at:1 put:$'.
3fef0ed4c2d5 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17735
diff changeset
  4307
        index := 2.
3fef0ed4c2d5 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17735
diff changeset
  4308
        self do:[:thisChar |
3fef0ed4c2d5 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17735
diff changeset
  4309
            (thisChar == $') ifTrue:[
3fef0ed4c2d5 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17735
diff changeset
  4310
                s at:index put:thisChar.
3fef0ed4c2d5 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17735
diff changeset
  4311
                index := index + 1.
3fef0ed4c2d5 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17735
diff changeset
  4312
            ].
3fef0ed4c2d5 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17735
diff changeset
  4313
            s at:index put:thisChar.
3fef0ed4c2d5 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17735
diff changeset
  4314
            index := index + 1.
3fef0ed4c2d5 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17735
diff changeset
  4315
        ].
3fef0ed4c2d5 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17735
diff changeset
  4316
        s at:index put:$'.
3fef0ed4c2d5 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17735
diff changeset
  4317
        ^ s
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4318
    ].
11320
0cf84c372ccf Unicode handling:
Stefan Vogel <sv@exept.de>
parents: 11292
diff changeset
  4319
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4320
    ^ '''' , self , ''''
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4321
!
8049
ccd0e8f26439 printing - migrating towards unicodeSupport in ST-code
Claus Gittinger <cg@exept.de>
parents: 8040
diff changeset
  4322
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4323
displayOn:aGCOrStream
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4324
    "Compatibility
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4325
     append a printed desription on some stream (Dolphin,  Squeak)
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4326
     OR:
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4327
     display the receiver in a graphicsContext at 0@0 (ST80).
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4328
     This method allows for any object to be displayed in some view
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4329
     (although the fallBack is to display its printString ...)"
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4330
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4331
    "/ what a kludge - Dolphin and Squeak mean: printOn: a stream;
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4332
    "/ ST/X (and some old ST80's) mean: draw-yourself on a GC.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4333
    (aGCOrStream isStream or:[aGCOrStream == Transcript]) ifTrue:[
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4334
	self storeOn:aGCOrStream.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4335
	^ self
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4336
    ].
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4337
    ^ super displayOn:aGCOrStream
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4338
!
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4339
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4340
displayString
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4341
    "return a string to display the receiver in a view (inspector).
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4342
     Here, we use storeString to have quotes around."
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4343
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4344
    ^ self storeString
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4345
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4346
    "
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4347
     'foo' displayString
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4348
    "
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4349
!
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4350
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4351
printOn:aStream
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4352
    "print the receiver on aStream"
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4353
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4354
    aStream nextPutAll:self
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4355
!
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4356
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4357
printString
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4358
    "return a string for printing - thats myself"
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4359
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4360
    ^ self
3578
46dc8399fdf8 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3537
diff changeset
  4361
!
46dc8399fdf8 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3537
diff changeset
  4362
46dc8399fdf8 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3537
diff changeset
  4363
printWithQuotesDoubledOn:aStream
46dc8399fdf8 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3537
diff changeset
  4364
    "put the raw storeString of myself on aStream"
46dc8399fdf8 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3537
diff changeset
  4365
46dc8399fdf8 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3537
diff changeset
  4366
    self do:[:thisChar |
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4367
	(thisChar == $') ifTrue:[aStream nextPut:thisChar].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4368
	aStream nextPut:thisChar
3578
46dc8399fdf8 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3537
diff changeset
  4369
    ]
46dc8399fdf8 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3537
diff changeset
  4370
46dc8399fdf8 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3537
diff changeset
  4371
    "Modified: / 15.6.1998 / 17:21:17 / cg"
46dc8399fdf8 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3537
diff changeset
  4372
    "Created: / 15.6.1998 / 17:22:13 / cg"
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4373
!
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4374
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4375
printfWith:arg1 with:arg2 with:arg3 with:arg4 with:arg5
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4376
    "Format and print the receiver with <argI> formatted in C style,
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4377
     as specified in the Unix C-language manual page for printf(3).
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4378
     Return the resulting string."
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4379
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4380
    ^ self printf:(Array with:arg1 with:arg2 with:arg3 with:arg4 with:arg5)
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4381
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4382
    "
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4383
     Transcript showCR:('%d %05x %08o %b' printfWith:123 with:234 with:345 with:123)
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4384
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4385
! !
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4386
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4387
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4388
!CharacterArray methodsFor:'queries'!
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4389
4429
564b0fd9168e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4410
diff changeset
  4390
bitsPerCharacter
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4391
    "return the underlying strings bitsPerCharacter
4429
564b0fd9168e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4410
diff changeset
  4392
     (i.e. is it a regular String or a TwoByteString)"
564b0fd9168e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4410
diff changeset
  4393
8457
a00113e2f7bd +contains8BitCharacter
penk
parents: 8395
diff changeset
  4394
    |string max|
a00113e2f7bd +contains8BitCharacter
penk
parents: 8395
diff changeset
  4395
a00113e2f7bd +contains8BitCharacter
penk
parents: 8395
diff changeset
  4396
    (string := self string) ~~ self ifTrue:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4397
	^ string bitsPerCharacter
8457
a00113e2f7bd +contains8BitCharacter
penk
parents: 8395
diff changeset
  4398
    ].
a00113e2f7bd +contains8BitCharacter
penk
parents: 8395
diff changeset
  4399
a00113e2f7bd +contains8BitCharacter
penk
parents: 8395
diff changeset
  4400
    max := 8.
a00113e2f7bd +contains8BitCharacter
penk
parents: 8395
diff changeset
  4401
    self do:[:eachCharacter |
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4402
	max := max max:(eachCharacter bitsPerCharacter)
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4403
    ].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4404
    ^ max
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4405
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4406
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4407
     'hello' bitsPerCharacter
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4408
     'hello' asText allBold bitsPerCharacter
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4409
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4410
!
8457
a00113e2f7bd +contains8BitCharacter
penk
parents: 8395
diff changeset
  4411
a00113e2f7bd +contains8BitCharacter
penk
parents: 8395
diff changeset
  4412
contains8BitCharacters
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4413
    "return true, if the underlying string contains 8BitCharacters (or widers)
8457
a00113e2f7bd +contains8BitCharacter
penk
parents: 8395
diff changeset
  4414
     (i.e. if it is non-ascii)"
a00113e2f7bd +contains8BitCharacter
penk
parents: 8395
diff changeset
  4415
a00113e2f7bd +contains8BitCharacter
penk
parents: 8395
diff changeset
  4416
    |string|
a00113e2f7bd +contains8BitCharacter
penk
parents: 8395
diff changeset
  4417
a00113e2f7bd +contains8BitCharacter
penk
parents: 8395
diff changeset
  4418
    (string := self string) ~~ self ifTrue:[
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  4419
	^ string contains8BitCharacters
8457
a00113e2f7bd +contains8BitCharacter
penk
parents: 8395
diff changeset
  4420
    ].
8900
8b669296f3eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8899
diff changeset
  4421
    ^ self contains:[:aCharacter | aCharacter codePoint > 16r7F ].
8457
a00113e2f7bd +contains8BitCharacter
penk
parents: 8395
diff changeset
  4422
a00113e2f7bd +contains8BitCharacter
penk
parents: 8395
diff changeset
  4423
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4424
     'hello' contains8BitCharacters
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4425
     'hello' asText allBold contains8BitCharacters
9191
7f1797f8d0a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9190
diff changeset
  4426
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4427
!
4429
564b0fd9168e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4410
diff changeset
  4428
10903
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4429
continuesWith:aString startingAt:startIndex
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4430
    "return true, if the receiver beginning at startIndex
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4431
     contains the characters in aString."
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4432
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4433
    |sz  "{Class: SmallInteger }"
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4434
     idx "{Class: SmallInteger }"|
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4435
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4436
    sz := aString size.
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4437
    idx := startIndex.
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4438
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4439
    1 to:sz do:[:i |
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4440
	(self at:idx) ~~ (aString at:i) ifTrue:[^ false].
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4441
	idx := idx + 1
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4442
    ].
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4443
    ^ true
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4444
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4445
    "
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4446
     'hello world' continuesWith:'world' startingAt:6
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4447
     'hello world' continuesWith:'world' startingAt:7
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4448
    "
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4449
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4450
    "Created: 12.5.1996 / 15:46:40 / cg"
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4451
    "Modified: 26.7.1996 / 19:08:36 / cg"
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4452
!
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4453
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4454
countWords
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4455
    "return the number of words, which are separated by separators"
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4456
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4457
    |tally "{ Class: SmallInteger }"
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4458
     start "{ Class: SmallInteger }"
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4459
     mySize "{ Class: SmallInteger }"
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4460
     stop ch|
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4461
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4462
    tally := 0.
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4463
    start := 1.
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4464
    mySize := self size.
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4465
    [start <= mySize] whileTrue:[
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4466
	ch := self at:start.
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4467
	ch isSeparator ifTrue:[
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4468
	    start := start + 1
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4469
	] ifFalse:[
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4470
	    stop := self indexOfSeparatorStartingAt:start.
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4471
	    (stop == 0) ifTrue:[
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4472
		stop := mySize + 1
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4473
	    ].
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4474
	    tally := tally + 1.
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4475
	    start := stop
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4476
	]
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4477
    ].
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4478
    ^ tally
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4479
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4480
    "
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4481
     'hello world isnt this nice' countWords'
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4482
    "
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4483
!
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  4484
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4485
defaultElement
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4486
    ^ Character space
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4487
!
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4488
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4489
encoding
1311
367f740d21e7 commentary
Claus Gittinger <cg@exept.de>
parents: 1308
diff changeset
  4490
    "return the strings encoding, as a symbol.
7982
0412a26c4621 encoding now unicode
Claus Gittinger <cg@exept.de>
parents: 7977
diff changeset
  4491
     Here, by default, we assume unicode-encoding.
0412a26c4621 encoding now unicode
Claus Gittinger <cg@exept.de>
parents: 7977
diff changeset
  4492
     Notice, that iso8859-1 is a true subset of unicode,
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4493
     and that singleByteStrings are therefore both unicode AND
7982
0412a26c4621 encoding now unicode
Claus Gittinger <cg@exept.de>
parents: 7977
diff changeset
  4494
     8859-1 encoded."
0412a26c4621 encoding now unicode
Claus Gittinger <cg@exept.de>
parents: 7977
diff changeset
  4495
0412a26c4621 encoding now unicode
Claus Gittinger <cg@exept.de>
parents: 7977
diff changeset
  4496
    ^ #'unicode'
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4497
!
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4498
1375
f035bb7468f5 additions for new Text class
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  4499
hasChangeOfEmphasis
f035bb7468f5 additions for new Text class
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  4500
    ^ false
f035bb7468f5 additions for new Text class
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  4501
1381
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  4502
    "Created: 12.5.1996 / 12:31:39 / cg"
1375
f035bb7468f5 additions for new Text class
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  4503
!
f035bb7468f5 additions for new Text class
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  4504
7995
8ddbb403d67b +hasIcon and hasImage for LabelAndIcon compatibility
Claus Gittinger <cg@exept.de>
parents: 7991
diff changeset
  4505
hasIcon
9191
7f1797f8d0a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9190
diff changeset
  4506
    "for LabelAndIcon compatibility"
7f1797f8d0a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9190
diff changeset
  4507
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4508
    ^ false
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4509
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4510
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4511
hasImage
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4512
    "for LabelAndIcon compatibility"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4513
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4514
    ^ false
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4515
!
7995
8ddbb403d67b +hasIcon and hasImage for LabelAndIcon compatibility
Claus Gittinger <cg@exept.de>
parents: 7991
diff changeset
  4516
1388
e47b4b894530 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1381
diff changeset
  4517
heightOn:aGC
e47b4b894530 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1381
diff changeset
  4518
    "return the size of the recevier in device units if displayed on aGC"
e47b4b894530 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1381
diff changeset
  4519
6528
cf4e93b8104b #on: -> #onDevice
Claus Gittinger <cg@exept.de>
parents: 6523
diff changeset
  4520
    ^ (aGC font onDevice:aGC device) heightOf:self
1388
e47b4b894530 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1381
diff changeset
  4521
e47b4b894530 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1381
diff changeset
  4522
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4523
     'hello world' heightOn:(View new)
1388
e47b4b894530 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1381
diff changeset
  4524
    "
e47b4b894530 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1381
diff changeset
  4525
e47b4b894530 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1381
diff changeset
  4526
    "Created: 12.5.1996 / 20:09:29 / cg"
e47b4b894530 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1381
diff changeset
  4527
    "Modified: 12.5.1996 / 20:32:05 / cg"
e47b4b894530 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1381
diff changeset
  4528
!
e47b4b894530 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1381
diff changeset
  4529
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4530
isLowercaseFirst
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4531
    "return true, if the first character is a lowercase character."
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4532
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4533
    ^ self size ~~ 0 and:[ self first isLowercase ]
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4534
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4535
    "
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4536
     'helloWorld' isLowercaseFirst
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4537
     'HelloWorld' isLowercaseFirst
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4538
    "
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4539
!
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4540
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4541
isUppercaseFirst
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4542
    "return true, if the first character is an uppercase character."
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4543
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4544
    ^ self size ~~ 0 and:[ self first isUppercase ]
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4545
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4546
    "
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4547
     'helloWorld' isUppercaseFirst
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  4548
     'HelloWorld' isUppercaseFirst
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4549
    "
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4550
!
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17727
diff changeset
  4551
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4552
knownAsSymbol
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4553
    "for now, only single character strings are allowed as symbols.
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4554
     This method is redefined in String."
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4555
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4556
    ^ false
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4557
!
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4558
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4559
leftIndent
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4560
    "if the receiver starts with spaces, return the number of spaces
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4561
     at the left - otherwise, return 0.
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4562
     If the receiver consists of spaces only, return the receivers size."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4563
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4564
    |index "{Class: SmallInteger }"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4565
     end   "{Class: SmallInteger }"|
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4566
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4567
    index := 1.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4568
    end := self size.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4569
    [index <= end] whileTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4570
	(self at:index) isSeparator ifFalse:[^ index - 1].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4571
	index := index + 1
8350
d9aaa0c937cb +isValidSmalltalkIdentifier
Claus Gittinger <cg@exept.de>
parents: 8347
diff changeset
  4572
    ].
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4573
    ^ end
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4574
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4575
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4576
     '    hello' leftIndent
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4577
     'foo      ' leftIndent
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4578
     '         ' leftIndent
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4579
    "
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4580
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4581
    "Modified: 20.4.1996 / 19:28:43 / cg"
8350
d9aaa0c937cb +isValidSmalltalkIdentifier
Claus Gittinger <cg@exept.de>
parents: 8347
diff changeset
  4582
!
d9aaa0c937cb +isValidSmalltalkIdentifier
Claus Gittinger <cg@exept.de>
parents: 8347
diff changeset
  4583
10437
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4584
nameSpaceSelectorParts
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4585
    "Answer the namespace and baseSelector parts of a namespace selector.
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4586
     Namespace selectors are those generated by sends from a method in a different
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4587
     namespace; they are prefixed by ':'<ns>'::'.
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4588
     You cannot easily change this algorithm here, as it is also known by the VM's lookup function.
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4589
     Experimental"
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4590
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4591
    |nsPart selPart idx|
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4592
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4593
    (self at:1) == $: ifFalse:[^ Array with:'' with:self].
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4594
    idx := self indexOf:$: startingAt:3.
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4595
    idx == 0 ifTrue:[^ Array with:'' with:self].
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4596
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4597
    (idx+2 > self size) ifTrue:[^ Array with:'' with:self].
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4598
    (self at:idx+1) == $: ifFalse:[^ Array with:'' with:self].
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4599
    nsPart := self copyFrom:2 to:idx-1.
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4600
    selPart := self copyFrom:idx+2.
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4601
    ^ Array with:nsPart with:selPart
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4602
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4603
    "test:
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  4604
     self assert:('+' nameSpaceSelectorParts) = #('' '+').
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  4605
     self assert:(':+' nameSpaceSelectorParts) = #('' ':+').
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  4606
     self assert:(':Foo:+' nameSpaceSelectorParts) = #('' ':Foo:+').
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  4607
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  4608
     self assert:(':Foo::+' nameSpaceSelectorParts) = #('Foo' '+').
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  4609
     self assert:(':Foo::bar:baz:' nameSpaceSelectorParts) = #('Foo' 'bar:baz:').
10437
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4610
    "
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4611
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4612
    "Created: / 05-03-2007 / 17:16:58 / cg"
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4613
    "Modified: / 06-03-2007 / 11:51:15 / cg"
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4614
!
0dfcdb4359ce +nameSpaceSelectorParts
Claus Gittinger <cg@exept.de>
parents: 10431
diff changeset
  4615
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  4616
stringSpecies
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4617
    "return the underlying strings bitsPerCharacter
8037
8cce25b1059c care for wide chars in asXXXFirst
Claus Gittinger <cg@exept.de>
parents: 8032
diff changeset
  4618
     (i.e. is it a regular String or a TwoByteString)"
8cce25b1059c care for wide chars in asXXXFirst
Claus Gittinger <cg@exept.de>
parents: 8032
diff changeset
  4619
8cce25b1059c care for wide chars in asXXXFirst
Claus Gittinger <cg@exept.de>
parents: 8032
diff changeset
  4620
    |string|
8cce25b1059c care for wide chars in asXXXFirst
Claus Gittinger <cg@exept.de>
parents: 8032
diff changeset
  4621
8cce25b1059c care for wide chars in asXXXFirst
Claus Gittinger <cg@exept.de>
parents: 8032
diff changeset
  4622
    (string := self string) == self ifTrue:[^ self class].
8cce25b1059c care for wide chars in asXXXFirst
Claus Gittinger <cg@exept.de>
parents: 8032
diff changeset
  4623
    ^ string stringSpecies
8cce25b1059c care for wide chars in asXXXFirst
Claus Gittinger <cg@exept.de>
parents: 8032
diff changeset
  4624
8cce25b1059c care for wide chars in asXXXFirst
Claus Gittinger <cg@exept.de>
parents: 8032
diff changeset
  4625
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4626
     'hello' stringSpecies
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4627
     'hello' asText allBold stringSpecies
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4628
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4629
!
8037
8cce25b1059c care for wide chars in asXXXFirst
Claus Gittinger <cg@exept.de>
parents: 8032
diff changeset
  4630
6653
2e77e6bd99a1 +withoutEmphasis:
Michael Beyl <mb@exept.de>
parents: 6643
diff changeset
  4631
widthFrom:startIndex to:endIndex on:aGC
2e77e6bd99a1 +withoutEmphasis:
Michael Beyl <mb@exept.de>
parents: 6643
diff changeset
  4632
    "return ths size of part of the recevier in device units if displayed on aGC"
2e77e6bd99a1 +withoutEmphasis:
Michael Beyl <mb@exept.de>
parents: 6643
diff changeset
  4633
2e77e6bd99a1 +withoutEmphasis:
Michael Beyl <mb@exept.de>
parents: 6643
diff changeset
  4634
    ^ (aGC font onDevice:aGC device) widthOf:self from:startIndex to:endIndex
2e77e6bd99a1 +withoutEmphasis:
Michael Beyl <mb@exept.de>
parents: 6643
diff changeset
  4635
2e77e6bd99a1 +withoutEmphasis:
Michael Beyl <mb@exept.de>
parents: 6643
diff changeset
  4636
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4637
     'hello world' widthFrom:1 to:5 on:(View new)
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4638
     'hello' widthOn:(View new)
6653
2e77e6bd99a1 +withoutEmphasis:
Michael Beyl <mb@exept.de>
parents: 6643
diff changeset
  4639
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4640
!
6653
2e77e6bd99a1 +withoutEmphasis:
Michael Beyl <mb@exept.de>
parents: 6643
diff changeset
  4641
1388
e47b4b894530 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1381
diff changeset
  4642
widthOn:aGC
e47b4b894530 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1381
diff changeset
  4643
    "return ths size of the recevier in device units if displayed on aGC"
e47b4b894530 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1381
diff changeset
  4644
6528
cf4e93b8104b #on: -> #onDevice
Claus Gittinger <cg@exept.de>
parents: 6523
diff changeset
  4645
    ^ (aGC font onDevice:aGC device) widthOf:self
1388
e47b4b894530 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1381
diff changeset
  4646
e47b4b894530 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1381
diff changeset
  4647
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4648
     'hello world' widthOn:(View new)
1388
e47b4b894530 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1381
diff changeset
  4649
    "
e47b4b894530 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1381
diff changeset
  4650
e47b4b894530 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1381
diff changeset
  4651
    "Created: 12.5.1996 / 20:09:29 / cg"
2554
309ee6707322 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2551
diff changeset
  4652
    "Modified: 17.4.1997 / 12:50:23 / cg"
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4653
! !
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4654
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4655
!CharacterArray methodsFor:'special string converting'!
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4656
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4657
expandPlaceholdersWith:argArrayOrDictionary
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4658
    "return a copy of the receiver, where all %i escapes are
4410
2bdc0c89a42e enhanced #exapndPlaceHolders, to allow for a dictionary arg
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
  4659
     replaced by corresponding arguments' printStrings from the argArrayOrDictionary.
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4660
     I.e. 'hello %1; how is %2' expandPlaceholdersWith:#('world' 'this') results
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4661
     in the new string 'hello world; how is this'.
4410
2bdc0c89a42e enhanced #exapndPlaceHolders, to allow for a dictionary arg
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
  4662
     As an extension, the argument may also be a dictionary, providing
7313
9be9b35f5370 comment
Claus Gittinger <cg@exept.de>
parents: 7312
diff changeset
  4663
     values for symbolic keys.
4842
0086acd80497 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4682
diff changeset
  4664
     In this case, %a .. %z and %(...) are also allowed.
4410
2bdc0c89a42e enhanced #exapndPlaceHolders, to allow for a dictionary arg
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
  4665
     (%1..%9 require a numeric key in the dictionary, however)
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4666
     To get a '%' character, use a '%%'-escape.
7313
9be9b35f5370 comment
Claus Gittinger <cg@exept.de>
parents: 7312
diff changeset
  4667
     To get an integer-indexed placeHolder followed by another digit,
9be9b35f5370 comment
Claus Gittinger <cg@exept.de>
parents: 7312
diff changeset
  4668
     or an index > 9, you must use %(digit).
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4669
     See also bindWith:... for VisualAge compatibility."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4670
10906
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4671
    |stream|
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4672
17742
3fef0ed4c2d5 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17735
diff changeset
  4673
    stream := (TextStream ? WriteStream) on:(self species new:self size + 20).
10906
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4674
    self expandPlaceholdersWith:argArrayOrDictionary on:stream.
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4675
    ^ stream contents.
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4676
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4677
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4678
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4679
     'hello %1' expandPlaceholdersWith:#('world')
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4680
     'hello %1; how is %2' expandPlaceholdersWith:#('world' 'this')
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4681
     'hello %2; how is %1' expandPlaceholdersWith:#('world' 'this')
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4682
     '%1 plus %2 gives %3 ' expandPlaceholdersWith:#(4 5 9)
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4683
     '%%(1)0 gives %(1)0' expandPlaceholdersWith:#(123)
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4684
     '%%10 gives %10' expandPlaceholdersWith:#(123)
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4685
     '%%(10) gives %(10)' expandPlaceholdersWith:#(123)
8938
860bbcbd3bd8 Fix #expandPlaceHoldersWith:, when a %a is encountered and and an Array
Stefan Vogel <sv@exept.de>
parents: 8913
diff changeset
  4686
     '%test gives %1' expandPlaceholdersWith:#(123)
11028
cb1ee3ddd91a expandPlaceHolders: care fr Text with emphasis
Claus Gittinger <cg@exept.de>
parents: 11018
diff changeset
  4687
     'bla %1 bla' expandPlaceholdersWith:{ 'hello' allBold }
cb1ee3ddd91a expandPlaceHolders: care fr Text with emphasis
Claus Gittinger <cg@exept.de>
parents: 11018
diff changeset
  4688
     'bla %1 bla' expandPlaceholdersWith:{ 'hello' }
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4689
    "
1026
455c9f609f4d care for 16bit strings in expandPlaceHolders
Claus Gittinger <cg@exept.de>
parents: 1025
diff changeset
  4690
4410
2bdc0c89a42e enhanced #exapndPlaceHolders, to allow for a dictionary arg
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
  4691
    "
2bdc0c89a42e enhanced #exapndPlaceHolders, to allow for a dictionary arg
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
  4692
     |dict|
2bdc0c89a42e enhanced #exapndPlaceHolders, to allow for a dictionary arg
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
  4693
2bdc0c89a42e enhanced #exapndPlaceHolders, to allow for a dictionary arg
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
  4694
     dict := Dictionary new.
2bdc0c89a42e enhanced #exapndPlaceHolders, to allow for a dictionary arg
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
  4695
     dict at:1 put:'one'.
2bdc0c89a42e enhanced #exapndPlaceHolders, to allow for a dictionary arg
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
  4696
     dict at:$a put:'AAAAA'.
8794
a5df33935142 nindWith supports blocks in the value dictionary
Claus Gittinger <cg@exept.de>
parents: 8710
diff changeset
  4697
     dict at:$b put:[ Time now ].
17734
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  4698
     dict at:'foo' put:[ Date today ].
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  4699
     'hello %1 %a %b %(foo)' expandPlaceholdersWith:dict   
4410
2bdc0c89a42e enhanced #exapndPlaceHolders, to allow for a dictionary arg
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
  4700
    "
2bdc0c89a42e enhanced #exapndPlaceHolders, to allow for a dictionary arg
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
  4701
2737
9f29aecea39d care for % at end in expandPlaceHolders.
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4702
    "Modified: 1.7.1997 / 00:53:24 / cg"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4703
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4704
10906
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4705
expandPlaceholdersWith:argArrayOrDictionary on:aStream
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4706
    "write the receiver to aStream, where all %i escapes are
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4707
     replaced by corresponding arguments' printStrings from the argArrayOrDictionary.
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4708
     I.e. 'hello %1; how is %2' expandPlaceholdersWith:#('world' 'this') results
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4709
     in the new string 'hello world; how is this'.
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4710
     As an extension, the argument may also be a dictionary, providing
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4711
     values for symbolic keys.
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4712
     In this case, %a .. %z and %(...) are also allowed.
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4713
     (%1..%9 require a numeric key in the dictionary, however)
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4714
     To get a '%' character, use a '%%'-escape.
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4715
     To get an integer-indexed placeHolder followed by another digit,
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4716
     or an index > 9, you must use %(digit).
10935
7142eab95639 #expandPlaceHoldersWith:in:
Stefan Vogel <sv@exept.de>
parents: 10929
diff changeset
  4717
     See also bindWith:... for VisualAge compatibility.
10939
d0ca31c1d1e9 #expandPlaceHoldersWith: handle %<cr> %<tab> etc
Stefan Vogel <sv@exept.de>
parents: 10935
diff changeset
  4718
     Use %<cr> to insert a CR and %<tab> to insert a TAB."
10906
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4719
17747
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4720
    |next v key 
10906
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4721
     idx   "{ SmallInteger }"
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4722
     idx2  "{ SmallInteger }"
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4723
     start "{ SmallInteger }"
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4724
     stop  "{ SmallInteger }"|
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4725
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4726
    stop := self size.
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4727
    start := 1.
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4728
    [start <= stop] whileTrue:[
17747
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4729
        idx := self indexOf:$% startingAt:start.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4730
        (idx == 0 or:[idx == stop]) ifTrue:[
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4731
            aStream nextPutAll:self startingAt:start to:stop.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4732
            ^ self.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4733
        ].
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4734
        "found a %"
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4735
        aStream nextPutAll:self startingAt:start to:(idx - 1).
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4736
        next := self at:(idx + 1).
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4737
        (next == $%) ifTrue:[
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4738
            aStream nextPut:$%.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4739
        ] ifFalse:[
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4740
        next == $< ifTrue:[
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4741
            idx2 := self indexOf:$> startingAt:idx+2.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4742
            key := self copyFrom:idx+2 to:idx2-1.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4743
            idx := idx2 - 1.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4744
            key := key asSymbolIfInterned.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4745
            (#(cr tab nl return lf ff null) includesIdentical:key) ifTrue:[
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4746
                aStream nextPut:(Character perform:key).
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4747
            ].
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4748
        ] ifFalse:[
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4749
            (next between:$1 and:$9) ifTrue:[
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4750
                v := argArrayOrDictionary at:(next digitValue) ifAbsent:nil
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4751
            ] ifFalse:[
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4752
                next == $( ifTrue:[
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4753
                    idx2 := self indexOf:$) startingAt:idx+2.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4754
                    key := self copyFrom:idx+2 to:idx2-1.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4755
                    idx := idx2 - 1.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4756
                    key := key asSymbolIfInterned ? key.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4757
                    (argArrayOrDictionary includesKey:key) ifTrue:[
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4758
                        v := argArrayOrDictionary at:key
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4759
                    ] ifFalse:[
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4760
                        (key size == 1 and:[ argArrayOrDictionary includesKey:(key at:1)]) ifTrue:[
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4761
                            v := argArrayOrDictionary at:(key at:1)
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4762
                        ] ifFalse:[
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4763
                            key isNumeric ifTrue:[
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4764
                                key := Integer readFrom:key onError:nil.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4765
                            ].
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4766
                            v := argArrayOrDictionary at:key ifAbsent:nil
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4767
                        ]
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4768
                    ].
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4769
                ] ifFalse:[
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4770
                    "so next is a non-numeric single character.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4771
                     This would not work with Arrays, since they have integer indizes"
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4772
                    argArrayOrDictionary isSequenceable ifFalse:[
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4773
                        v := argArrayOrDictionary at:next ifAbsent:[
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4774
                                "try symbol instead of character"
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4775
                                argArrayOrDictionary at:next asSymbol ifAbsent:[String with:$% with:next].
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4776
                             ].
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4777
                    ] ifTrue:[
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4778
                        v := String with:$% with:next. "No match, keep original sequence"
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4779
                    ].
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4780
                ]
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4781
            ].
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4782
            v notNil ifTrue:[
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4783
                v isBlock ifTrue:[
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4784
                    v := v value
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4785
                ].
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4786
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4787
                v printOn:aStream.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4788
            ].
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4789
        ]].
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4790
        start := idx + 2
10906
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4791
    ].
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4792
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4793
    "
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4794
     String streamContents:[:s|
17747
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4795
        'hello %1' expandPlaceholdersWith:#('world') on:s.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4796
        s cr.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4797
        'hello %1; how is %2' expandPlaceholdersWith:#('world' 'this') on:s.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4798
        s cr.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4799
        'hello %2; how is %1' expandPlaceholdersWith:#('world' 'this') on:s.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4800
        s cr.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4801
        '%1 plus %2 gives %3 ' expandPlaceholdersWith:#(4 5 9) on:s.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4802
        s cr.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4803
        '%%(1)0 gives %(1)0' expandPlaceholdersWith:#(123) on:s.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4804
        s cr.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4805
        '%%10 gives %10' expandPlaceholdersWith:#(123) on:s.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4806
        s cr.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4807
        '%%(10) gives %(10) %<cr>%<tab>next line' expandPlaceholdersWith:#(123) on:s.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4808
        s cr.
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4809
        '%test gives %1' expandPlaceholdersWith:#(123) on:s.
10906
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4810
     ]
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4811
    "
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4812
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4813
    "
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4814
     |dict|
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4815
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4816
     dict := Dictionary new.
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4817
     dict at:1 put:'one'.
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4818
     dict at:$a put:'AAAAA'.
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4819
     dict at:$b put:[ Time now ].
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4820
     String streamContents:[:s|
17747
f978415ba3d3 Merged with trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17742
diff changeset
  4821
         'hello %1 %a %b' expandPlaceholdersWith:dict on:s.
10906
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4822
     ].
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4823
    "
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4824
!
6468fe197af0 CharacterArray>>#expandMacrosWith:on:
Stefan Vogel <sv@exept.de>
parents: 10903
diff changeset
  4825
9230
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  4826
firstLine
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  4827
    ^ self asCollectionOfSubCollectionsSeparatedBy:Character cr do:[:line | ^ line].
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  4828
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  4829
    "
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  4830
     'hello' firstLine
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  4831
     '1\2\3' withCRs firstLine
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  4832
     '\1\2\3' withCRs firstLine
9230
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  4833
    "
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  4834
!
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  4835
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4836
withCRs
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4837
    "return a new string consisting of receivers characters
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4838
     with all \-characters replaced by cr-characters."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4839
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4840
    ^ self copyReplaceAll:$\ with:(Character cr)
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4841
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4842
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4843
     'hello\world' withCRs
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4844
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4845
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4846
    "Modified: / 18.7.1998 / 22:53:02 / cg"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4847
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4848
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4849
withEscapes
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4850
    "return a new string consisting of receivers characters
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4851
     with all \X-character escapes replaced by corresponding-characters.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4852
     (similar to the way C-language Strings are converted).
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4853
     The following escapes are supported:
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4854
	\r      return character
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4855
	\n      newline character
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4856
	\b      backspace character
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4857
	\f      formfeed character
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4858
	\t      tab character
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4859
	\e      escape character
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4860
	\\      the \ character itself
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4861
	\nnn    three digit octal number defining the characters ascii value
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4862
	\other  other
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4863
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4864
     Notice, that \' is NOT a valid escape, since the general syntax of
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4865
     string constants is not affected by this method.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4866
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4867
     Although easily implementable, this is NOT done automatically
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4868
     by the compiler (due to a lack of a language standard for this).
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4869
     However, the compiler may detect sends ot #withEscapes to string literals
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4870
     and place a modified string constant into the binary/byte-code.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4871
     Therefore, no runtime penalty will be payed for using these escapes.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4872
     (not in pre 2.11 versions)
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4873
    "
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4874
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4875
    |sz      "{ SmallInteger }"
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4876
     newSize "{ SmallInteger }"
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4877
     srcIdx  "{ SmallInteger }"
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4878
     dstIdx  "{ SmallInteger }"
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4879
     val     "{ SmallInteger }"
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4880
     newString next hasEmphasis e|
359
claus
parents: 357
diff changeset
  4881
claus
parents: 357
diff changeset
  4882
    "
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4883
     first, count the number of escapes, to allow preallocation
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4884
     of the new string ...
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4885
     (it is faster to scan the string twice than to reallocate it multiple
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4886
      times in a WriteStream)
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4887
    "
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4888
    sz := newSize := self size.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4889
    srcIdx := 1.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4890
    [(srcIdx := self indexOf:$\ startingAt:srcIdx) ~~ 0] whileTrue:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4891
	srcIdx == sz ifFalse:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4892
	    newSize := newSize - 1.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4893
	    srcIdx := srcIdx + 1.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4894
	    next := self at:srcIdx.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4895
	    next == $0 ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4896
		[srcIdx < sz and:[next isDigit]] whileTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4897
		    newSize := newSize - 1. srcIdx := srcIdx + 1. next := self at:srcIdx.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4898
		]
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4899
	    ].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4900
	].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4901
	srcIdx := srcIdx + 1.
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4902
    ].
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4903
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4904
    newSize == sz ifTrue:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4905
	^ self
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4906
    ].
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4907
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4908
    newString := self species new:newSize.
1381
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  4909
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  4910
    hasEmphasis := self hasChangeOfEmphasis.
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  4911
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4912
    "
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4913
     copy over, replace escapes
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4914
    "
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4915
    srcIdx := dstIdx := 1.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4916
    [srcIdx <= sz] whileTrue:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4917
	next := self at:srcIdx.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4918
	hasEmphasis ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4919
	    e := self emphasisAt:srcIdx
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4920
	].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4921
	srcIdx := srcIdx + 1.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4922
	next == $\ ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4923
	    srcIdx <= sz ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4924
		next := self at:srcIdx.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4925
		srcIdx := srcIdx + 1.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4926
		next == $r ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4927
		    next := Character return
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4928
		] ifFalse:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4929
		    next == $n ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4930
			next := Character nl
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4931
		    ] ifFalse:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4932
			next == $b ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4933
			    next := Character backspace
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4934
			] ifFalse:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4935
			    next == $f ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4936
				next := Character newPage
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4937
			    ] ifFalse:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4938
				next == $t ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4939
				    next := Character tab
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4940
				] ifFalse:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4941
				    next == $e ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4942
					next := Character esc
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4943
				    ] ifFalse:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4944
					next == $0 ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4945
					    val := 0.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4946
					    [next notNil and:[next isDigit]] whileTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4947
						val := val * 8 + next digitValue.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4948
						srcIdx <= sz ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4949
						    next := self at:srcIdx.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4950
						    srcIdx := srcIdx + 1.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4951
						] ifFalse:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4952
						    next := nil
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4953
						]
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4954
					    ].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4955
					    next := Character value:val.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4956
					]
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4957
				    ]
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4958
				]
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4959
			    ]
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4960
			]
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4961
		    ]
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4962
		].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4963
	    ].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4964
	].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4965
	newString at:dstIdx put:next.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4966
	hasEmphasis ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4967
	    newString emphasisAt:dstIdx put:e
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4968
	].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4969
	dstIdx := dstIdx + 1.
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4970
    ].
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4971
    ^ newString
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4972
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4973
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4974
     'hello world' withEscapes
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4975
     'hello\world' withEscapes
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4976
     'hello\world\' withEscapes
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4977
     'hello world\' withEscapes
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4978
     'hello\tworld' withEscapes
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4979
     'hello\nworld\na\n\tnice\n\t\tstring' withEscapes
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4980
     'hello\tworld\n' withEscapes
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4981
     'hello\010world' withEscapes
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  4982
     'hello\r\nworld' withEscapes
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  4983
    "
1008
1bd95ea83cac add \e in #withEscapes
Claus Gittinger <cg@exept.de>
parents: 1006
diff changeset
  4984
1381
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  4985
    "Modified: 12.5.1996 / 12:53:34 / cg"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4986
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4987
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  4988
withMatchEscapes
4117
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  4989
    "return a copy of the receiver with all match characters escaped
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  4990
     by $\ characters (to be usable as a match string).
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  4991
     Return the receiver, if there are none."
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  4992
5342
5010cea0ffd4 match-escape character definition in one place
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  4993
    |in out c escape|
5010cea0ffd4 match-escape character definition in one place
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  4994
5010cea0ffd4 match-escape character definition in one place
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  4995
    escape := self class matchEscapeCharacter.
4117
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  4996
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  4997
    in := self readStream.
7986
715c72e62d58 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7982
diff changeset
  4998
    out := WriteStream on:(self species new:self size).
4117
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  4999
    [in atEnd] whileFalse:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5000
	c := in next.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5001
	(c == escape or:['*[#' includes:c]) ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5002
	    out nextPut:$\.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5003
	].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5004
	out nextPut:c.
4117
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  5005
    ].
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  5006
    ^ out contents.
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  5007
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  5008
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5009
     '*foo' withMatchEscapes
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5010
     '\*foo' withMatchEscapes
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5011
     '*foo' withMatchEscapes
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5012
     '\\*foo' withMatchEscapes
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5013
     'foo*' withMatchEscapes
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5014
     'foo\*' withMatchEscapes
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5015
     'foo\' withMatchEscapes
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5016
     'f*o*o' withMatchEscapes
4117
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  5017
    "
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  5018
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  5019
    "Modified: 2.4.1997 / 18:13:04 / cg"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5020
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5021
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5022
withTabs
735
362ce9e28d89 expandTabs now handles multiline strings
Claus Gittinger <cg@exept.de>
parents: 678
diff changeset
  5023
    "return a string consisting of the receivers characters
362ce9e28d89 expandTabs now handles multiline strings
Claus Gittinger <cg@exept.de>
parents: 678
diff changeset
  5024
     where leading spaces are replaced by tabulator characters (assuming 8-col tabs).
362ce9e28d89 expandTabs now handles multiline strings
Claus Gittinger <cg@exept.de>
parents: 678
diff changeset
  5025
     Notice: if the receiver does not contain any tabs, it is returned unchanged;
362ce9e28d89 expandTabs now handles multiline strings
Claus Gittinger <cg@exept.de>
parents: 678
diff changeset
  5026
     otherwise a new string is returned.
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5027
     Limitation: only the very first spaces are replaced
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5028
		 (i.e. if the receiver contains newLine characters,
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5029
		  no tabs are inserted after those lineBreaks)"
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5030
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5031
    |idx   "{ SmallInteger }"
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5032
     nTabs "{ SmallInteger }"
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5033
     newString|
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5034
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5035
    idx := self findFirst:[:c | (c ~~ Character space)].
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5036
    nTabs := (idx-1) // 8.
5815
4acdd87a77d4 // can return negative numbers.
Stefan Vogel <sv@exept.de>
parents: 5795
diff changeset
  5037
    nTabs <= 0 ifTrue:[^ self].
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5038
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5039
    "any tabs"
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5040
    newString := self class new:(self size - (nTabs * 7)).
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5041
    newString atAll:(1 to:nTabs) put:(Character tab).
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5042
    newString replaceFrom:(nTabs + 1) with:self startingAt:(nTabs * 8 + 1).
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5043
    ^ newString
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5044
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5045
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5046
     '12345678901234567890' withTabs
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5047
     '       8901234567890' withTabs
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5048
     '        901234567890' withTabs
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5049
     '               67890' withTabs
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5050
     '                7890' withTabs
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5051
     '                 890' withTabs
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5052
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5053
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5054
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5055
withTabsExpanded
735
362ce9e28d89 expandTabs now handles multiline strings
Claus Gittinger <cg@exept.de>
parents: 678
diff changeset
  5056
    "return a string consisting of the receivers characters,
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5057
     where all tabulator characters are expanded into spaces (assuming 8-col tabs).
735
362ce9e28d89 expandTabs now handles multiline strings
Claus Gittinger <cg@exept.de>
parents: 678
diff changeset
  5058
     Notice: if the receiver does not contain any tabs, it is returned unchanged;
362ce9e28d89 expandTabs now handles multiline strings
Claus Gittinger <cg@exept.de>
parents: 678
diff changeset
  5059
     otherwise a new string is returned.
362ce9e28d89 expandTabs now handles multiline strings
Claus Gittinger <cg@exept.de>
parents: 678
diff changeset
  5060
     This does handle multiline strings."
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5061
5741
3a6086774d38 added #withTabsExpanded: (i.e. arg to specify tab-column width)
Claus Gittinger <cg@exept.de>
parents: 5739
diff changeset
  5062
    ^ self withTabsExpanded:8
3a6086774d38 added #withTabsExpanded: (i.e. arg to specify tab-column width)
Claus Gittinger <cg@exept.de>
parents: 5739
diff changeset
  5063
3a6086774d38 added #withTabsExpanded: (i.e. arg to specify tab-column width)
Claus Gittinger <cg@exept.de>
parents: 5739
diff changeset
  5064
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5065
     ('1' , Character tab asString , 'x') withTabsExpanded
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5066
     ('12345' , Character tab asString , 'x') withTabsExpanded
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5067
     ('123456' , Character tab asString , 'x') withTabsExpanded
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5068
     ('1234567' , Character tab asString , 'x') withTabsExpanded
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5069
     ('12345678' , Character tab asString , 'x') withTabsExpanded
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5070
     ('123456789' , Character tab asString , 'x') withTabsExpanded
5741
3a6086774d38 added #withTabsExpanded: (i.e. arg to specify tab-column width)
Claus Gittinger <cg@exept.de>
parents: 5739
diff changeset
  5071
3a6086774d38 added #withTabsExpanded: (i.e. arg to specify tab-column width)
Claus Gittinger <cg@exept.de>
parents: 5739
diff changeset
  5072
     (String with:Character tab
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5073
	     with:Character tab
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5074
	     with:$1) withTabsExpanded
5741
3a6086774d38 added #withTabsExpanded: (i.e. arg to specify tab-column width)
Claus Gittinger <cg@exept.de>
parents: 5739
diff changeset
  5075
3a6086774d38 added #withTabsExpanded: (i.e. arg to specify tab-column width)
Claus Gittinger <cg@exept.de>
parents: 5739
diff changeset
  5076
     (String with:Character tab
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5077
	     with:$1
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5078
	     with:Character tab
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5079
	     with:$2) withTabsExpanded
5741
3a6086774d38 added #withTabsExpanded: (i.e. arg to specify tab-column width)
Claus Gittinger <cg@exept.de>
parents: 5739
diff changeset
  5080
3a6086774d38 added #withTabsExpanded: (i.e. arg to specify tab-column width)
Claus Gittinger <cg@exept.de>
parents: 5739
diff changeset
  5081
     (String with:Character tab
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5082
	     with:$1
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5083
	     with:Character cr
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5084
	     with:Character tab
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5085
	     with:$2) withTabsExpanded
5741
3a6086774d38 added #withTabsExpanded: (i.e. arg to specify tab-column width)
Claus Gittinger <cg@exept.de>
parents: 5739
diff changeset
  5086
    "
3a6086774d38 added #withTabsExpanded: (i.e. arg to specify tab-column width)
Claus Gittinger <cg@exept.de>
parents: 5739
diff changeset
  5087
3a6086774d38 added #withTabsExpanded: (i.e. arg to specify tab-column width)
Claus Gittinger <cg@exept.de>
parents: 5739
diff changeset
  5088
    "Modified: 12.5.1996 / 13:05:10 / cg"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5089
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5090
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5091
withTabsExpanded:numSpaces
5741
3a6086774d38 added #withTabsExpanded: (i.e. arg to specify tab-column width)
Claus Gittinger <cg@exept.de>
parents: 5739
diff changeset
  5092
    "return a string consisting of the receivers characters,
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5093
     where all tabulator characters are expanded into spaces (assuming numSpaces-col tabs).
5741
3a6086774d38 added #withTabsExpanded: (i.e. arg to specify tab-column width)
Claus Gittinger <cg@exept.de>
parents: 5739
diff changeset
  5094
     Notice: if the receiver does not contain any tabs, it is returned unchanged;
3a6086774d38 added #withTabsExpanded: (i.e. arg to specify tab-column width)
Claus Gittinger <cg@exept.de>
parents: 5739
diff changeset
  5095
     otherwise a new string is returned.
3a6086774d38 added #withTabsExpanded: (i.e. arg to specify tab-column width)
Claus Gittinger <cg@exept.de>
parents: 5739
diff changeset
  5096
     This does handle multiline strings."
3a6086774d38 added #withTabsExpanded: (i.e. arg to specify tab-column width)
Claus Gittinger <cg@exept.de>
parents: 5739
diff changeset
  5097
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5098
    |col    "{ SmallInteger }"
1381
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5099
     str ch
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5100
     dstIdx "{ SmallInteger }"
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5101
     newSz  "{ SmallInteger }"
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5102
     sz "{ SmallInteger }"
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5103
     hasEmphasis e|
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5104
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5105
    (self includes:(Character tab)) ifFalse:[^ self].
1381
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5106
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5107
    sz := self size.
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5108
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5109
    "/ count the new size first, instead of
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5110
    "/ multiple resizing (better for large strings)
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5111
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5112
    col := 1. newSz := 0.
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5113
    1 to:sz do:[:srcIdx |
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5114
	ch := self at:srcIdx.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5115
	ch == Character tab ifFalse:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5116
	    col := col + 1.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5117
	    newSz := newSz + 1.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5118
	    ch == Character cr ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5119
		col := 1
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5120
	    ].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5121
	] ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5122
	    (col \\ numSpaces) to:numSpaces do:[:ii |
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5123
		newSz := newSz + 1.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5124
		col := col + 1
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5125
	    ].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5126
	]
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5127
    ].
1381
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5128
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5129
    str := self species new:newSz.
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5130
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5131
    hasEmphasis := self hasChangeOfEmphasis.
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5132
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5133
    col := 1. dstIdx := 1.
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5134
    1 to:sz do:[:srcIdx |
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5135
	ch := self at:srcIdx.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5136
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5137
	ch == Character tab ifFalse:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5138
	    col := col + 1.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5139
	    ch == Character cr ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5140
		col := 1
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5141
	    ].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5142
	    hasEmphasis ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5143
		e := self emphasisAt:srcIdx.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5144
		str emphasisAt:dstIdx put:e
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5145
	    ].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5146
	    str at:dstIdx put:ch.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5147
	    dstIdx := dstIdx + 1
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5148
	] ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5149
	    (col \\ numSpaces) to:numSpaces do:[:ii |
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5150
		str at:dstIdx put:Character space.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5151
		dstIdx := dstIdx + 1.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5152
		col := col + 1
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5153
	    ].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5154
	]
1381
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5155
    ].
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5156
    ^ str
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5157
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5158
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5159
     ('1' , Character tab asString , 'x') withTabsExpanded
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5160
     ('1' , Character tab asString , 'x') withTabsExpanded:4
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5161
     ('12345' , Character tab asString , 'x') withTabsExpanded
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5162
     ('123456' , Character tab asString , 'x') withTabsExpanded
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5163
     ('1234567' , Character tab asString , 'x') withTabsExpanded
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5164
     ('12345678' , Character tab asString , 'x') withTabsExpanded
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5165
     ('123456789' , Character tab asString , 'x') withTabsExpanded
735
362ce9e28d89 expandTabs now handles multiline strings
Claus Gittinger <cg@exept.de>
parents: 678
diff changeset
  5166
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5167
     (String with:Character tab
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5168
	     with:Character tab
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5169
	     with:$1) withTabsExpanded
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5170
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5171
     (String with:Character tab
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5172
	     with:$1
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5173
	     with:Character tab
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5174
	     with:$2) withTabsExpanded
735
362ce9e28d89 expandTabs now handles multiline strings
Claus Gittinger <cg@exept.de>
parents: 678
diff changeset
  5175
362ce9e28d89 expandTabs now handles multiline strings
Claus Gittinger <cg@exept.de>
parents: 678
diff changeset
  5176
     (String with:Character tab
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5177
	     with:$1
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5178
	     with:Character cr
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5179
	     with:Character tab
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5180
	     with:$2) withTabsExpanded
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5181
    "
735
362ce9e28d89 expandTabs now handles multiline strings
Claus Gittinger <cg@exept.de>
parents: 678
diff changeset
  5182
1381
c920ec16a98f Text fixes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5183
    "Modified: 12.5.1996 / 13:05:10 / cg"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5184
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5185
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5186
withoutCRs
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5187
    "return a new collection consisting of receivers elements
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5188
     with all cr-characters replaced by \-characters.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5189
     This is the reverse operation of withCRs."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5190
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5191
    ^ self copyReplaceAll:(Character cr) with:$\
17734
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  5192
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5193
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5194
     'hello
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5195
world' withoutCRs
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5196
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5197
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5198
    "Modified: / 18.7.1998 / 22:53:08 / cg"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5199
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5200
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5201
withoutLeadingSeparators
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5202
    "return a copy of myself without leading separators.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5203
     Notice: this does remove tabs, newline or any other whitespace.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5204
     Returns an empty string, if the receiver consist only of whitespace."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5205
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5206
    |index|
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5207
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5208
    index := self indexOfNonSeparatorStartingAt:1.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5209
    index ~~ 0 ifTrue:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5210
	index == 1 ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5211
	    ^ self
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5212
	].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5213
	^ self copyFrom:index
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5214
    ].
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5215
    ^ ''
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5216
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5217
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5218
     '    foo    ' withoutLeadingSeparators
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5219
     'foo    '     withoutLeadingSeparators
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5220
     '    foo'     withoutLeadingSeparators
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5221
     '       '     withoutLeadingSeparators
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5222
     'foo'         withoutLeadingSeparators
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5223
     ('  ' , Character tab asString , ' foo   ') withoutLeadingSeparators inspect
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5224
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5225
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5226
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5227
withoutMatchEscapes
4117
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  5228
    "return a copy of the receiver with all $\ removed or
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  5229
     the receiver, if there are none."
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  5230
5342
5010cea0ffd4 match-escape character definition in one place
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  5231
    |in out c escape|
5010cea0ffd4 match-escape character definition in one place
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  5232
5010cea0ffd4 match-escape character definition in one place
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  5233
    escape := self class matchEscapeCharacter.
4117
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  5234
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  5235
    in := self readStream.
8222
f2c454a9a038 replaced '' writeStream by String writeStream
Claus Gittinger <cg@exept.de>
parents: 8124
diff changeset
  5236
    out := self species writeStream.
4117
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  5237
    [in atEnd] whileFalse:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5238
	c := in next.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5239
	c == escape ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5240
	    in atEnd ifFalse:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5241
		c := in next.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5242
	    ]
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5243
	].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5244
	out nextPut:c.
4117
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  5245
    ].
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  5246
    ^ out contents.
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  5247
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  5248
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5249
     '*foo' withoutMatchEscapes
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5250
     '\*foo' withoutMatchEscapes
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5251
     '*foo' withoutMatchEscapes
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5252
     '\\*foo' withoutMatchEscapes
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5253
     'foo*' withoutMatchEscapes
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5254
     'foo\*' withoutMatchEscapes
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5255
     'foo\' withoutMatchEscapes
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5256
     'f\*o\*o' withoutMatchEscapes
4117
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  5257
    "
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  5258
1b98af571a04 comments;
Claus Gittinger <cg@exept.de>
parents: 3987
diff changeset
  5259
    "Modified: 30.6.1997 / 13:40:23 / cg"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5260
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5261
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5262
withoutPrefix:aString
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5263
    "if the receiver startsWith aPrefix, return a copy without it.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5264
     Otherwise return the receiver"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5265
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5266
    (self startsWith:aString) ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5267
	^ self copyFrom:aString size + 1
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5268
    ].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5269
    ^ self
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5270
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5271
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5272
     'helloworld' withoutPrefix:'hello'
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5273
     'helloworld' withoutPrefix:'foo'
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5274
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5275
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5276
10671
90b197d23f1b new: #withoutQuotes
Stefan Vogel <sv@exept.de>
parents: 10569
diff changeset
  5277
withoutQuotes
90b197d23f1b new: #withoutQuotes
Stefan Vogel <sv@exept.de>
parents: 10569
diff changeset
  5278
    "remove quotes ("" and ') from the front and the end of myself"
90b197d23f1b new: #withoutQuotes
Stefan Vogel <sv@exept.de>
parents: 10569
diff changeset
  5279
90b197d23f1b new: #withoutQuotes
Stefan Vogel <sv@exept.de>
parents: 10569
diff changeset
  5280
    |result quote|
90b197d23f1b new: #withoutQuotes
Stefan Vogel <sv@exept.de>
parents: 10569
diff changeset
  5281
90b197d23f1b new: #withoutQuotes
Stefan Vogel <sv@exept.de>
parents: 10569
diff changeset
  5282
    result := self.
90b197d23f1b new: #withoutQuotes
Stefan Vogel <sv@exept.de>
parents: 10569
diff changeset
  5283
    ((result startsWith:$") or:[(result startsWith:$')]) ifTrue:[
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5284
	quote := result at:1.
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5285
	result := result copyFrom:2.
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5286
	(result endsWith:quote) ifTrue:[
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5287
	    result := result copyWithoutLast:1
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5288
	].
10671
90b197d23f1b new: #withoutQuotes
Stefan Vogel <sv@exept.de>
parents: 10569
diff changeset
  5289
    ].
90b197d23f1b new: #withoutQuotes
Stefan Vogel <sv@exept.de>
parents: 10569
diff changeset
  5290
    ^ result
90b197d23f1b new: #withoutQuotes
Stefan Vogel <sv@exept.de>
parents: 10569
diff changeset
  5291
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5292
"/    '"hello"' withoutQuotes
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5293
"/    '''hello''' withoutQuotes
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5294
"/    'hello' withoutQuotes
10671
90b197d23f1b new: #withoutQuotes
Stefan Vogel <sv@exept.de>
parents: 10569
diff changeset
  5295
!
90b197d23f1b new: #withoutQuotes
Stefan Vogel <sv@exept.de>
parents: 10569
diff changeset
  5296
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5297
withoutSeparators
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5298
    "return a copy of myself without leading and trailing whitespace.
4156
3079a5a94617 comments
Claus Gittinger <cg@exept.de>
parents: 4117
diff changeset
  5299
     (but whiteSpace in-between is preserved)
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5300
     Whitespace is space, tab, newline, formfeed.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5301
     Use withoutSpaces, if you want to remove spaces only."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5302
17734
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  5303
    ^ self trimForWhich:[:ch | ch isSeparator]
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5304
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5305
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5306
     '    foo    ' withoutSeparators
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5307
     '    foo' withoutSeparators
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5308
     'foo    ' withoutSeparators
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5309
     '       ' withoutSeparators
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5310
     ('  foo' , Character tab asString , '    ') withoutSeparators inspect
17734
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  5311
     '    foo    ' asUnicode16String withoutSeparators
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5312
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5313
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5314
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5315
withoutSpaces
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5316
    "return a copy of myself without leading and trailing spaces.
4156
3079a5a94617 comments
Claus Gittinger <cg@exept.de>
parents: 4117
diff changeset
  5317
     (but spaces in-between are preserved)
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5318
     Notice: this does NOT remove tabs, newline or any other whitespace.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5319
     Use withoutSeparators for this."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5320
17734
406b1590afe8 Merged with trunk r10476
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17732
diff changeset
  5321
    ^ self trimForWhich:[:ch | ch == Character space]
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5322
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5323
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5324
     '    foo    ' withoutSpaces
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5325
     'foo    '     withoutSpaces
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5326
     '    foo'     withoutSpaces
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5327
     '       '     withoutSpaces
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5328
     'a     b'     withoutSpaces
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5329
     ('  foo' , Character tab asString , '    ') withoutSpaces inspect
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5330
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5331
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5332
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5333
withoutTrailingSeparators
915
1ac1c7e942f4 added withoutTrailingSeparators
Claus Gittinger <cg@exept.de>
parents: 828
diff changeset
  5334
    "return a copy of myself without trailing separators.
1ac1c7e942f4 added withoutTrailingSeparators
Claus Gittinger <cg@exept.de>
parents: 828
diff changeset
  5335
     Notice: this does remove tabs, newline or any other whitespace.
1ac1c7e942f4 added withoutTrailingSeparators
Claus Gittinger <cg@exept.de>
parents: 828
diff changeset
  5336
     Returns an empty string, if the receiver consist only of whitespace."
1ac1c7e942f4 added withoutTrailingSeparators
Claus Gittinger <cg@exept.de>
parents: 828
diff changeset
  5337
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5338
    ^ self withoutTrailingForWhich:[:ch | ch isSeparator]
915
1ac1c7e942f4 added withoutTrailingSeparators
Claus Gittinger <cg@exept.de>
parents: 828
diff changeset
  5339
1ac1c7e942f4 added withoutTrailingSeparators
Claus Gittinger <cg@exept.de>
parents: 828
diff changeset
  5340
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5341
     '    foo    ' withoutTrailingSeparators
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5342
     'foo    '     withoutTrailingSeparators
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5343
     '    foo'     withoutTrailingSeparators
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5344
     '       '     withoutTrailingSeparators
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5345
     'foo'         withoutTrailingSeparators
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5346
     ('  ' , Character tab asString , ' foo   ') withoutTrailingSeparators inspect
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5347
     ('   foo' , Character tab asString) withoutTrailingSeparators inspect
915
1ac1c7e942f4 added withoutTrailingSeparators
Claus Gittinger <cg@exept.de>
parents: 828
diff changeset
  5348
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5349
! !
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5350
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5351
!CharacterArray methodsFor:'substring searching'!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5352
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5353
findString:subString
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5354
    "find a substring. if found, return the index;
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5355
     if not found, return 0."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5356
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5357
    ^ self indexOfSubCollection:subString startingAt:1 ifAbsent:0 caseSensitive:true
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5358
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5359
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5360
     'hello world' findString:'llo'
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5361
     'hello world' findString:'ole'
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5362
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5363
!
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5364
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5365
findString:subString ifAbsent:exceptionBlock
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5366
    "find a substring. If found, return the index;
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5367
     if not found, return the result of evaluating exceptionBlock."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5368
9087
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5369
    ^ self indexOfSubCollection:subString startingAt:1 ifAbsent:exceptionBlock caseSensitive:true
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5370
!
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5371
11018
01c9038023b3 +findString:ignoreCase:
Claus Gittinger <cg@exept.de>
parents: 10940
diff changeset
  5372
findString:subString ignoreCase:ignoreCase
01c9038023b3 +findString:ignoreCase:
Claus Gittinger <cg@exept.de>
parents: 10940
diff changeset
  5373
    "find a substring. if found, return the index;
01c9038023b3 +findString:ignoreCase:
Claus Gittinger <cg@exept.de>
parents: 10940
diff changeset
  5374
     if not found, return 0."
01c9038023b3 +findString:ignoreCase:
Claus Gittinger <cg@exept.de>
parents: 10940
diff changeset
  5375
01c9038023b3 +findString:ignoreCase:
Claus Gittinger <cg@exept.de>
parents: 10940
diff changeset
  5376
    ^ self indexOfSubCollection:subString startingAt:1 ifAbsent:0 caseSensitive:ignoreCase not
01c9038023b3 +findString:ignoreCase:
Claus Gittinger <cg@exept.de>
parents: 10940
diff changeset
  5377
01c9038023b3 +findString:ignoreCase:
Claus Gittinger <cg@exept.de>
parents: 10940
diff changeset
  5378
    "
01c9038023b3 +findString:ignoreCase:
Claus Gittinger <cg@exept.de>
parents: 10940
diff changeset
  5379
     'hello world' findString:'LLo' ignoreCase:false
01c9038023b3 +findString:ignoreCase:
Claus Gittinger <cg@exept.de>
parents: 10940
diff changeset
  5380
     'hello world' findString:'LLo' ignoreCase:true
01c9038023b3 +findString:ignoreCase:
Claus Gittinger <cg@exept.de>
parents: 10940
diff changeset
  5381
    "
01c9038023b3 +findString:ignoreCase:
Claus Gittinger <cg@exept.de>
parents: 10940
diff changeset
  5382
!
01c9038023b3 +findString:ignoreCase:
Claus Gittinger <cg@exept.de>
parents: 10940
diff changeset
  5383
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5384
findString:subString startingAt:index
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5385
    "find a substring, starting at index. if found, return the index;
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5386
     if not found, return 0."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5387
9087
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5388
    ^ self indexOfSubCollection:subString startingAt:index ifAbsent:0 caseSensitive:true
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5389
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5390
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5391
     'hello yello' findString:'llo' startingAt:1
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5392
     'hello yello' findString:'llo' startingAt:5
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5393
     'hello yello' findString:'llo' startingAt:15
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5394
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5395
!
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5396
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5397
findString:subString startingAt:index ifAbsent:exceptionBlock
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5398
    "find a substring, starting at index. if found, return the index;
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5399
     if not found, return the result of evaluating exceptionBlock."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5400
9087
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5401
    ^ self indexOfSubCollection:subString startingAt:index ifAbsent:exceptionBlock caseSensitive:true
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5402
!
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5403
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5404
findString:subString startingAt:index ifAbsent:exceptionBlock caseSensitive:caseSensitive
10929
7f025abfa145 *** empty log message ***
fm
parents: 10906
diff changeset
  5405
    "find a substring, starting at index. if found, return the index;
7f025abfa145 *** empty log message ***
fm
parents: 10906
diff changeset
  5406
     if not found, return the result of evaluating exceptionBlock."
7f025abfa145 *** empty log message ***
fm
parents: 10906
diff changeset
  5407
7f025abfa145 *** empty log message ***
fm
parents: 10906
diff changeset
  5408
    ^ self indexOfSubCollection:subString startingAt:index ifAbsent:exceptionBlock caseSensitive:caseSensitive
7f025abfa145 *** empty log message ***
fm
parents: 10906
diff changeset
  5409
!
7f025abfa145 *** empty log message ***
fm
parents: 10906
diff changeset
  5410
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5411
includesString:aString
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5412
    "return true, if a substring is contained in the receiver"
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5413
9087
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5414
    ^ (self indexOfSubCollection:aString startingAt:1 ifAbsent:0 caseSensitive:true) ~~ 0
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5415
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5416
    "
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5417
     'hello world' includesString:'hel'
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5418
     'hello world' includesString:'rld'
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5419
     'hello world' includesString:'llo'
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5420
     'hello world' includesString:'LLO'
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5421
     'hello world' includesString:''
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5422
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5423
!
9191
7f1797f8d0a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9190
diff changeset
  5424
7f1797f8d0a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9190
diff changeset
  5425
includesString:aString caseSensitive:caseSensitive
9087
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5426
    "return true, if a substring is contained in the receiver"
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5427
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5428
    ^ (self indexOfSubCollection:aString startingAt:1 ifAbsent:0 caseSensitive:caseSensitive) ~~ 0
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5429
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5430
    "
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5431
     'hello world' includesString:'hel' caseSensitive:true
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5432
     'hello world' includesString:'HEL' caseSensitive:true
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5433
     'hello world' includesString:'HEL' caseSensitive:false
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5434
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5435
     'hello world' includesString:'wor' caseSensitive:true
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5436
     'hello world' includesString:'WOR' caseSensitive:true
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5437
     'hello world' includesString:'WOR' caseSensitive:false
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5438
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5439
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5440
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5441
indexOfSubCollection:subString startingAt:index ifAbsent:exceptionBlock
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5442
    "find a substring, starting at index. if found, return the index;
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5443
     if not found, return the result of evaluating exceptionBlock.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5444
     This is a q&d hack - not very efficient"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5445
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5446
    ^ self indexOfSubCollection:subString startingAt:index ifAbsent:exceptionBlock caseSensitive:true.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5447
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5448
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5449
indexOfSubCollection:subString startingAt:index ifAbsent:exceptionBlock caseSensitive:caseSensitive
9087
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5450
    "find a substring, starting at index. if found, return the index;
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5451
     if not found, return the result of evaluating exceptionBlock.
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5452
     This is a q&d hack - not very efficient"
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5453
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5454
    |firstChar found
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5455
     startIndex "{ Class: SmallInteger }"
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5456
     subSize    "{ Class: SmallInteger }"
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5457
     mySize     "{ Class: SmallInteger }"
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5458
     runIdx     "{ Class: SmallInteger }"
9087
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5459
     tester|
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5460
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5461
    subSize := subString size.
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5462
    subSize == 0 ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5463
	subString isString ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5464
	   self error:'non string argument' mayProceed:true.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5465
	].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5466
	"empty string does not match"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5467
	^ 0.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5468
	"empty string matches"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5469
	^ index
6122
a98958f1c85f handle non-string arg to indexOfSubString:
Claus Gittinger <cg@exept.de>
parents: 6119
diff changeset
  5470
    ].
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5471
    tester := caseSensitive
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5472
		ifTrue:[  [:c1 :c2 | c1 = c2 ]  ]
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5473
		ifFalse:[ [:c1 :c2 | c1 sameAs: c2 ] ].
9087
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5474
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5475
    mySize := self size.
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5476
    firstChar := subString at:1.
9087
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5477
    caseSensitive ifTrue:[
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5478
	startIndex := self indexOf:firstChar startingAt:index.
9087
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5479
    ] ifFalse:[
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5480
	startIndex := self findFirst:[:c | c sameAs:firstChar] startingAt:index.
9087
9e28a6168468 case-insensitive search cleanup
Claus Gittinger <cg@exept.de>
parents: 9058
diff changeset
  5481
    ].
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5482
    [startIndex == 0] whileFalse:[
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5483
	runIdx := startIndex.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5484
	found := true.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5485
	1 to:subSize do:[:i |
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5486
	    runIdx > mySize ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5487
		found := false
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5488
	    ] ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5489
		(tester value:(subString at:i) value:(self at:runIdx)) ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5490
		    found := false
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5491
		]
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5492
	    ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5493
	    runIdx := runIdx + 1
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5494
	].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5495
	found ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5496
	    ^ startIndex
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5497
	].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5498
	caseSensitive ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5499
	    startIndex := self indexOf:firstChar startingAt:(startIndex + 1)
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5500
	] ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5501
	    startIndex := self findFirst:[:c | c sameAs:firstChar] startingAt:(startIndex + 1).
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5502
	].
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5503
    ].
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5504
    ^ exceptionBlock value
1005
4507487e0be6 more on encoding/decoding (still unfinished)
Claus Gittinger <cg@exept.de>
parents: 997
diff changeset
  5505
4507487e0be6 more on encoding/decoding (still unfinished)
Claus Gittinger <cg@exept.de>
parents: 997
diff changeset
  5506
    "Modified: 23.2.1996 / 15:35:15 / cg"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5507
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5508
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5509
restAfter:keyword withoutSeparators:strip
651
2093b018dc3a added restAfter:withoutSeparators:
Claus Gittinger <cg@exept.de>
parents: 650
diff changeset
  5510
    "compare the left of the receiver with keyword,
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5511
     if it matches return the right.
651
2093b018dc3a added restAfter:withoutSeparators:
Claus Gittinger <cg@exept.de>
parents: 650
diff changeset
  5512
     Finally, if strip is true, remove whiteSpace.
2093b018dc3a added restAfter:withoutSeparators:
Claus Gittinger <cg@exept.de>
parents: 650
diff changeset
  5513
     This method is used to match and extract lines of the form:
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5514
	something: rest
759
908363ce8a32 interest is written with one 'r' (shame on me)
Claus Gittinger <cg@exept.de>
parents: 735
diff changeset
  5515
     where we are interested in rest, but only if the receiver string
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5516
     begins with something.
651
2093b018dc3a added restAfter:withoutSeparators:
Claus Gittinger <cg@exept.de>
parents: 650
diff changeset
  5517
2093b018dc3a added restAfter:withoutSeparators:
Claus Gittinger <cg@exept.de>
parents: 650
diff changeset
  5518
     You may wonder why such a specialized method exists here
2093b018dc3a added restAfter:withoutSeparators:
Claus Gittinger <cg@exept.de>
parents: 650
diff changeset
  5519
     - this is so common when processing mailboxes,
2093b018dc3a added restAfter:withoutSeparators:
Claus Gittinger <cg@exept.de>
parents: 650
diff changeset
  5520
     rcs files, nntp/pop3 responses, that is was considered worth
2093b018dc3a added restAfter:withoutSeparators:
Claus Gittinger <cg@exept.de>
parents: 650
diff changeset
  5521
     a special method here to avoid having the code below a hundred
2093b018dc3a added restAfter:withoutSeparators:
Claus Gittinger <cg@exept.de>
parents: 650
diff changeset
  5522
     times in variuos places."
2093b018dc3a added restAfter:withoutSeparators:
Claus Gittinger <cg@exept.de>
parents: 650
diff changeset
  5523
2093b018dc3a added restAfter:withoutSeparators:
Claus Gittinger <cg@exept.de>
parents: 650
diff changeset
  5524
    |rest|
2093b018dc3a added restAfter:withoutSeparators:
Claus Gittinger <cg@exept.de>
parents: 650
diff changeset
  5525
2093b018dc3a added restAfter:withoutSeparators:
Claus Gittinger <cg@exept.de>
parents: 650
diff changeset
  5526
    (self startsWith:keyword) ifTrue:[
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5527
	rest := self copyFrom:(keyword size + 1).
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5528
	strip ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5529
	    rest := rest withoutSeparators
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5530
	].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5531
	^ rest
651
2093b018dc3a added restAfter:withoutSeparators:
Claus Gittinger <cg@exept.de>
parents: 650
diff changeset
  5532
    ].
2093b018dc3a added restAfter:withoutSeparators:
Claus Gittinger <cg@exept.de>
parents: 650
diff changeset
  5533
    ^ nil
2093b018dc3a added restAfter:withoutSeparators:
Claus Gittinger <cg@exept.de>
parents: 650
diff changeset
  5534
2093b018dc3a added restAfter:withoutSeparators:
Claus Gittinger <cg@exept.de>
parents: 650
diff changeset
  5535
    "
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5536
     'foo: hello world' restAfter:'foo:' withoutSeparators:true
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5537
     'funny: something' restAfter:'foo:' withoutSeparators:true
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5538
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5539
     'foo:     hello world    ' restAfter:'foo:' withoutSeparators:true
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5540
     'foo:     hello world    ' restAfter:'foo:' withoutSeparators:false
651
2093b018dc3a added restAfter:withoutSeparators:
Claus Gittinger <cg@exept.de>
parents: 650
diff changeset
  5541
    "
2093b018dc3a added restAfter:withoutSeparators:
Claus Gittinger <cg@exept.de>
parents: 650
diff changeset
  5542
2093b018dc3a added restAfter:withoutSeparators:
Claus Gittinger <cg@exept.de>
parents: 650
diff changeset
  5543
    "Created: 25.11.1995 / 11:04:18 / cg"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5544
! !
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5545
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5546
!CharacterArray methodsFor:'testing'!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5547
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5548
isAlphaNumeric
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5549
    "return true, if the receiver is some alphanumeric word;
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5550
     i.e. consists of a letter followed by letters or digits."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5551
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5552
    self size == 0 ifTrue:[
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5553
	"mhmh what is this ?"
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5554
	^ false
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5555
    ].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5556
    (self at:1) isLetter ifFalse:[^ false].
10093
8cff5eca1c6f code cleanup: use #contains/#conform instead of explicit loop
Claus Gittinger <cg@exept.de>
parents: 10088
diff changeset
  5557
    ^ self conform:[:char | char isLetterOrDigit].
8cff5eca1c6f code cleanup: use #contains/#conform instead of explicit loop
Claus Gittinger <cg@exept.de>
parents: 10088
diff changeset
  5558
8cff5eca1c6f code cleanup: use #contains/#conform instead of explicit loop
Claus Gittinger <cg@exept.de>
parents: 10088
diff changeset
  5559
    "
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5560
     'helloWorld' isAlphaNumeric
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5561
     'foo1234' isAlphaNumeric
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5562
     'f1234' isAlphaNumeric
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5563
     '1234' isAlphaNumeric
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5564
     '+' isAlphaNumeric
10093
8cff5eca1c6f code cleanup: use #contains/#conform instead of explicit loop
Claus Gittinger <cg@exept.de>
parents: 10088
diff changeset
  5565
    "
8cff5eca1c6f code cleanup: use #contains/#conform instead of explicit loop
Claus Gittinger <cg@exept.de>
parents: 10088
diff changeset
  5566
8cff5eca1c6f code cleanup: use #contains/#conform instead of explicit loop
Claus Gittinger <cg@exept.de>
parents: 10088
diff changeset
  5567
    "Modified: / 13-10-2006 / 12:53:49 / cg"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5568
!
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  5569
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  5570
isBinarySelector
10903
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5571
    "treating the receiver as a message selector, return true if its a binary selector.
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5572
     Notice, that st/x does not have a size <= 2 limit for unaries"
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  5573
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  5574
    |binopChars|
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  5575
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  5576
    (self size > 3) ifTrue:[^ false].
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  5577
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  5578
    binopChars := Scanner binarySelectorCharacters.
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  5579
    ^ (self conform:[:char | (binopChars includes:char)])
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  5580
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  5581
    "
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  5582
     'foo:bar:' isBinarySelector
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  5583
     #foo:bar: isBinarySelector
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  5584
     'hello' isBinarySelector
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  5585
     '+' isBinarySelector
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  5586
     '|' isBinarySelector
8874
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5587
     '?' isBinarySelector
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5588
     ':' isBinarySelector
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5589
     'a:' isBinarySelector
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5590
     '->' isBinarySelector
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5591
     '<->' isBinarySelector
f1fdda306d51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8862
diff changeset
  5592
     '::' isBinarySelector
7482
e73c296fa7dc + isBinarySelector
Claus Gittinger <cg@exept.de>
parents: 7423
diff changeset
  5593
    "
e73c296fa7dc + isBinarySelector
Claus Gittinger <cg@exept.de>
parents: 7423
diff changeset
  5594
e73c296fa7dc + isBinarySelector
Claus Gittinger <cg@exept.de>
parents: 7423
diff changeset
  5595
    "Modified: 4.1.1997 / 14:16:14 / cg"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5596
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5597
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5598
isBlank
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5599
    "return true, if the receiver contains spaces only"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5600
9230
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5601
    ^ (self contains:[:char | char ~~ Character space]) not
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5602
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5603
    "
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5604
     '' isBlank
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5605
     '   a    ' isBlank
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5606
     '        ' isBlank
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5607
     '        ' asUnicode16String isBlank
9230
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5608
    "
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5609
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5610
10903
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5611
isKeywordSelector
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5612
    "return true, iff there are only alphanumeric or underline characters separated by colons.
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5613
     Must end with a colon."
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5614
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5615
    |state|
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5616
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5617
    state := #initial.
10903
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5618
    self do:[:char |
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5619
	(state == #initial or:[ state == #gotColon]) ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5620
	    (char isLetter or:[ char == $_ ]) ifFalse:[^ false].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5621
	    state := #gotCharacter.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5622
	] ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5623
	    char == $: ifTrue:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5624
		state := #gotColon.
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5625
	    ] ifFalse:[
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5626
		(char isLetterOrDigit or:[char == $_]) ifFalse:[^ false].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5627
	    ].
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5628
	].
10903
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5629
    ].
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5630
    ^ state == #gotColon.
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5631
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5632
    "
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5633
     self assert:(':' isKeywordSelector not).
10903
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5634
     self assert:(':a' isKeywordSelector not).
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5635
     self assert:('1:' isKeywordSelector not).
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5636
     self assert:('a:' isKeywordSelector).
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5637
     self assert:('_:' isKeywordSelector).
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5638
     self assert:('_a:' isKeywordSelector).
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5639
     self assert:('_1:' isKeywordSelector).
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5640
     self assert:('_1::' isKeywordSelector not).
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5641
     self assert:('_:_:' isKeywordSelector).
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5642
     self assert:('a:b:' isKeywordSelector).
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5643
     self assert:('aa:bb:' isKeywordSelector).
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5644
     self assert:('aa:bb:a' isKeywordSelector not).
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5645
     self assert:('1:2:' isKeywordSelector not).
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5646
    "
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5647
!
54a532a1558d isKeywordSelector
Claus Gittinger <cg@exept.de>
parents: 10883
diff changeset
  5648
10431
6b7467f6d2d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10353
diff changeset
  5649
isNameSpaceSelector
6b7467f6d2d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10353
diff changeset
  5650
    "Answer true if the receiver contains chars which form a nameSpace selector name.
6b7467f6d2d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10353
diff changeset
  5651
     These are of the form ':<ns>::<sel>', where ns is the NameSpace and sel is the regular selector.
6b7467f6d2d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10353
diff changeset
  5652
     For example, the #+ selector as seen by the Foo namespace would be actually #':Foo::+'.
6b7467f6d2d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10353
diff changeset
  5653
     You cannot easily change this algorithm here, as it is also known by the VM's lookup function."
6b7467f6d2d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10353
diff changeset
  5654
6b7467f6d2d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10353
diff changeset
  5655
    |i|
6b7467f6d2d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10353
diff changeset
  5656
6b7467f6d2d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10353
diff changeset
  5657
    (self first == $:) ifFalse:[^ false].
6b7467f6d2d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10353
diff changeset
  5658
    i := self indexOf:$: startingAt:2.
6b7467f6d2d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10353
diff changeset
  5659
    i == 0 ifTrue:[^ false].
6b7467f6d2d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10353
diff changeset
  5660
    self size <= (i+1) ifTrue:[^ false].
6b7467f6d2d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10353
diff changeset
  5661
    (self at:i+1) == $: ifFalse:[^ false].
6b7467f6d2d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10353
diff changeset
  5662
    (self at:i+2) == $: ifTrue:[^ false].
6b7467f6d2d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10353
diff changeset
  5663
    "/ could check if the rest after the ns-prefix and colons is a valid selector...
6b7467f6d2d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10353
diff changeset
  5664
    ^ true
6b7467f6d2d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10353
diff changeset
  5665
6b7467f6d2d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10353
diff changeset
  5666
    "test:
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5667
     self assert:('+' isNameSpaceSelector) not.
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5668
     self assert:(':+' isNameSpaceSelector) not.
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5669
     self assert:(':Foo:+' isNameSpaceSelector) not.
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5670
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5671
     self assert:(':Foo::+' isNameSpaceSelector).
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5672
     self assert:(':Foo::bar:baz:' isNameSpaceSelector).
10431
6b7467f6d2d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10353
diff changeset
  5673
    "
6b7467f6d2d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10353
diff changeset
  5674
6b7467f6d2d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10353
diff changeset
  5675
    "Created: / 05-03-2007 / 11:35:31 / cg"
6b7467f6d2d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10353
diff changeset
  5676
!
6b7467f6d2d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10353
diff changeset
  5677
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5678
isNumeric
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5679
    "return true, if the receiver is some numeric word;
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5680
     i.e. consists only of digits."
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5681
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5682
    self size == 0 ifTrue:[
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5683
	^ false
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5684
    ].
10093
8cff5eca1c6f code cleanup: use #contains/#conform instead of explicit loop
Claus Gittinger <cg@exept.de>
parents: 10088
diff changeset
  5685
    ^ self conform:[:char | char isDigit]
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5686
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5687
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5688
     'helloWorld' isNumeric
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5689
     'foo1234' isNumeric
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5690
     'f1234' isNumeric
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5691
     '1234' isNumeric
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5692
     '+' isNumeric
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5693
    "
10093
8cff5eca1c6f code cleanup: use #contains/#conform instead of explicit loop
Claus Gittinger <cg@exept.de>
parents: 10088
diff changeset
  5694
8cff5eca1c6f code cleanup: use #contains/#conform instead of explicit loop
Claus Gittinger <cg@exept.de>
parents: 10088
diff changeset
  5695
    "Modified: / 13-10-2006 / 12:54:12 / cg"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5696
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5697
9230
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5698
isString
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5699
    "return true, if the receiver is some kind of string;
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5700
     true is returned here - redefinition of Object>>isString."
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5701
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5702
    ^ true
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5703
!
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5704
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5705
isUnarySelector
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5706
    "Answer true if the receiver contains only chars in an ANSI unary method selector, false otherwise."
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5707
9471
7b1df2a2a2d7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9425
diff changeset
  5708
    ^ (self first isLetter or:[ self first == $_ ])
9845
361f4b5d7b19 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9522
diff changeset
  5709
      and:[ self conform: [ :chr | chr isLetterOrDigit or:[chr == $_] ]]
361f4b5d7b19 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9522
diff changeset
  5710
361f4b5d7b19 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9522
diff changeset
  5711
    "Modified: / 13-09-2006 / 11:35:15 / cg"
9230
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5712
!
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5713
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5714
isValidSmalltalkIdentifier
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5715
    "return true, if the receivers characters make up a valid smalltalk identifier"
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5716
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5717
    |scanner tok|
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5718
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5719
    scanner := Compiler new.
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5720
    scanner source:(self readStream).
11630
6db5956f188f isValidSmalltalkIdentifier: return true/false (catch parseError)
Claus Gittinger <cg@exept.de>
parents: 11565
diff changeset
  5721
    Parser parseErrorSignal handle:[:ex |
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5722
	tok := nil.
11630
6db5956f188f isValidSmalltalkIdentifier: return true/false (catch parseError)
Claus Gittinger <cg@exept.de>
parents: 11565
diff changeset
  5723
    ] do:[
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5724
	tok := scanner nextToken.
11630
6db5956f188f isValidSmalltalkIdentifier: return true/false (catch parseError)
Claus Gittinger <cg@exept.de>
parents: 11565
diff changeset
  5725
    ].
9230
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5726
    tok ~~ #Identifier ifTrue:[
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5727
	^ false
9230
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5728
    ].
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5729
    scanner tokenPosition == 1 ifFalse:[^ false].
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5730
    ^ scanner sourceStream atEnd.
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5731
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5732
    "
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5733
     'foo' isValidSmalltalkIdentifier
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5734
     '1foo' isValidSmalltalkIdentifier
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5735
     '_foo' isValidSmalltalkIdentifier
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5736
     '_foo_bar_' isValidSmalltalkIdentifier
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5737
     'foo ' isValidSmalltalkIdentifier
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5738
     ' foo' isValidSmalltalkIdentifier
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5739
    "
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5740
!
9c12f7612321 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9195
diff changeset
  5741
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5742
numArgs
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5743
    "treating the receiver as a message selector, return how many arguments would it take"
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5744
9038
d75b89570ec0 numArgs fixed (binOps can now be longer)
Claus Gittinger <cg@exept.de>
parents: 9019
diff changeset
  5745
    |binopChars|
d75b89570ec0 numArgs fixed (binOps can now be longer)
Claus Gittinger <cg@exept.de>
parents: 9019
diff changeset
  5746
d75b89570ec0 numArgs fixed (binOps can now be longer)
Claus Gittinger <cg@exept.de>
parents: 9019
diff changeset
  5747
    (self size <= Scanner maxBinarySelectorSize) ifTrue:[
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5748
	binopChars := Scanner binarySelectorCharacters.
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5749
	(self conform:[:eachChar | (binopChars includes:eachChar)]) ifTrue:[
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5750
	    ^ 1
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5751
	].
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5752
    ].
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5753
    ^ self occurrencesOf:$:
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5754
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5755
    "
10703
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5756
     'foo:bar:' numArgs
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5757
     #foo:bar: numArgs
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5758
     'hello' numArgs
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5759
     '+' numArgs
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5760
     '++' numArgs
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5761
     '+++' numArgs
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5762
     '|' numArgs
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5763
     '?' numArgs
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5764
     '_' numArgs
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5765
     '_:' numArgs
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5766
     '_:_:' numArgs
d1e981878c9c Work around stx bug when compiling hash
Stefan Vogel <sv@exept.de>
parents: 10698
diff changeset
  5767
     '<->' numArgs
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5768
    "
2051
08fd6a693ee3 ask Scanner for valid binarySelector characters in numArgs
Claus Gittinger <cg@exept.de>
parents: 1978
diff changeset
  5769
10088
b8e69093ca13 code cleanup
Claus Gittinger <cg@exept.de>
parents: 10061
diff changeset
  5770
    "Modified: / 13-10-2006 / 11:52:33 / cg"
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5771
!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5772
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5773
partsIfSelector
608
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5774
    "treat the receiver as a message selector, return a collection of parts."
cd5ac440fa95 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
  5775
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5776
    |idx1 "{ Class: SmallInteger }"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5777
     coll idx2 sz|
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5778
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5779
    coll := OrderedCollection new.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5780
    idx1 := 1.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5781
    sz := self size.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5782
    [true] whileTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5783
	idx2 := self indexOf:$: startingAt:idx1 + 1.
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5784
	(idx2 == 0 or:[idx2 == sz]) ifTrue:[
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5785
	    coll add:(self copyFrom:idx1).
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5786
	    ^ coll
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5787
	].
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5788
	coll add:(self copyFrom:idx1 to:idx2).
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5789
	idx1 := idx2 + 1
9190
87dd824f1ebb comments in #asInteger
Claus Gittinger <cg@exept.de>
parents: 9151
diff changeset
  5790
    ].
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5791
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5792
    "
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5793
     'foo:bar:' partsIfSelector
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5794
     #foo:bar: partsIfSelector
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5795
     'hello' partsIfSelector
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5796
     '+' partsIfSelector
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5797
    "
64
af7aeb79b25e Initial revision
claus
parents:
diff changeset
  5798
! !
af7aeb79b25e Initial revision
claus
parents:
diff changeset
  5799
9192
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5800
!CharacterArray methodsFor:'tracing'!
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5801
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5802
traceInto:aRequestor level:level from:referrer
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5803
    "double dispatch into tracer, passing my type implicitely in the selector"
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5804
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5805
    ^ aRequestor traceCharacterArray:self level:level from:referrer
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5806
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5807
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5808
! !
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5809
2fb261f753f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9191
diff changeset
  5810
!CharacterArray methodsFor:'visiting'!
8395
6bd97113cb4c Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8376
diff changeset
  5811
6bd97113cb4c Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8376
diff changeset
  5812
acceptVisitor:aVisitor with:aParameter
6bd97113cb4c Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8376
diff changeset
  5813
6bd97113cb4c Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8376
diff changeset
  5814
    ^ aVisitor visitString:self with:aParameter
6bd97113cb4c Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8376
diff changeset
  5815
! !
6bd97113cb4c Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8376
diff changeset
  5816
1849
9f35f5934ec6 added msdos-latin1 en/decoder (code = #msdos850)
Claus Gittinger <cg@exept.de>
parents: 1669
diff changeset
  5817
!CharacterArray class methodsFor:'documentation'!
629
2ceefe9b5a19 version at the end
Claus Gittinger <cg@exept.de>
parents: 608
diff changeset
  5818
2ceefe9b5a19 version at the end
Claus Gittinger <cg@exept.de>
parents: 608
diff changeset
  5819
version
17763
019bb9c842c5 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17761
diff changeset
  5820
    ^ '$Id: CharacterArray.st 10520 2010-05-04 11:50:05Z vranyj1 $'
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5821
!
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5822
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17728
diff changeset
  5823
version_CVS
17763
019bb9c842c5 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17761
diff changeset
  5824
    ^ 'Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.432 2010/05/03 13:20:52 cg Exp ยง'
17761
b0e5971141bc Added Lookup and BuiltinLookup classes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17754
diff changeset
  5825
!
b0e5971141bc Added Lookup and BuiltinLookup classes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17754
diff changeset
  5826
b0e5971141bc Added Lookup and BuiltinLookup classes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17754
diff changeset
  5827
version_SVN
17763
019bb9c842c5 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17761
diff changeset
  5828
    ^ '$Id: CharacterArray.st 10520 2010-05-04 11:50:05Z vranyj1 $'
629
2ceefe9b5a19 version at the end
Claus Gittinger <cg@exept.de>
parents: 608
diff changeset
  5829
! !
6809
72fee17c14b1 utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6743
diff changeset
  5830
2728
7569e45a4d15 raise error signal if anything goes wrong while decoding.
Claus Gittinger <cg@exept.de>
parents: 2721
diff changeset
  5831
CharacterArray initialize!
17763
019bb9c842c5 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17761
diff changeset
  5832