URI.st
author tm
Wed, 09 Jul 2003 14:40:33 +0200
changeset 1256 f452235ed554
parent 1254 baf01931b9d6
child 1268 48b43aebf125
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1005
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:libbasic2' }"
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     2
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     3
Object subclass:#URI
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:'scheme'
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     7
	category:'Resources'
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     8
!
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     9
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    10
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    11
!URI class methodsFor:'instance creation'!
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    12
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    13
fromString:aString
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    14
    "create an URI from a given String"
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    15
1251
7ee3093b7375 *** empty log message ***
tm
parents: 1249
diff changeset
    16
    |i scheme rest|
7ee3093b7375 *** empty log message ***
tm
parents: 1249
diff changeset
    17
7ee3093b7375 *** empty log message ***
tm
parents: 1249
diff changeset
    18
    i := aString indexOf:$:.
7ee3093b7375 *** empty log message ***
tm
parents: 1249
diff changeset
    19
    i == 0 ifTrue:[ 
7ee3093b7375 *** empty log message ***
tm
parents: 1249
diff changeset
    20
        self error:('Missing scheme in: %1!!' bindWith:aString)
7ee3093b7375 *** empty log message ***
tm
parents: 1249
diff changeset
    21
    ].
7ee3093b7375 *** empty log message ***
tm
parents: 1249
diff changeset
    22
    scheme := aString copyFrom:1 to:i-1.
7ee3093b7375 *** empty log message ***
tm
parents: 1249
diff changeset
    23
    rest := aString copyFrom:i+1.
7ee3093b7375 *** empty log message ***
tm
parents: 1249
diff changeset
    24
7ee3093b7375 *** empty log message ***
tm
parents: 1249
diff changeset
    25
    ^ (self classForScheme:scheme) scheme:scheme fromString:rest
7ee3093b7375 *** empty log message ***
tm
parents: 1249
diff changeset
    26
1249
71aae2f2fbba *** empty log message ***
tm
parents: 1005
diff changeset
    27
71aae2f2fbba *** empty log message ***
tm
parents: 1005
diff changeset
    28
71aae2f2fbba *** empty log message ***
tm
parents: 1005
diff changeset
    29
"
71aae2f2fbba *** empty log message ***
tm
parents: 1005
diff changeset
    30
    self fromString:''
71aae2f2fbba *** empty log message ***
tm
parents: 1005
diff changeset
    31
"
71aae2f2fbba *** empty log message ***
tm
parents: 1005
diff changeset
    32
!
71aae2f2fbba *** empty log message ***
tm
parents: 1005
diff changeset
    33
71aae2f2fbba *** empty log message ***
tm
parents: 1005
diff changeset
    34
fromString:aString onError:exceptionBlock
71aae2f2fbba *** empty log message ***
tm
parents: 1005
diff changeset
    35
    "create an URI from a given String"
71aae2f2fbba *** empty log message ***
tm
parents: 1005
diff changeset
    36
1251
7ee3093b7375 *** empty log message ***
tm
parents: 1249
diff changeset
    37
    |uri|
1249
71aae2f2fbba *** empty log message ***
tm
parents: 1005
diff changeset
    38
1251
7ee3093b7375 *** empty log message ***
tm
parents: 1249
diff changeset
    39
    Error handle:[:ex| 
7ee3093b7375 *** empty log message ***
tm
parents: 1249
diff changeset
    40
        exceptionBlock value.
7ee3093b7375 *** empty log message ***
tm
parents: 1249
diff changeset
    41
    ] do:[
7ee3093b7375 *** empty log message ***
tm
parents: 1249
diff changeset
    42
        uri := self fromString:aString
7ee3093b7375 *** empty log message ***
tm
parents: 1249
diff changeset
    43
    ].
1249
71aae2f2fbba *** empty log message ***
tm
parents: 1005
diff changeset
    44
1251
7ee3093b7375 *** empty log message ***
tm
parents: 1249
diff changeset
    45
    ^ uri
1249
71aae2f2fbba *** empty log message ***
tm
parents: 1005
diff changeset
    46
71aae2f2fbba *** empty log message ***
tm
parents: 1005
diff changeset
    47
"
1251
7ee3093b7375 *** empty log message ***
tm
parents: 1249
diff changeset
    48
    self fromString:'' onError:nil    
1249
71aae2f2fbba *** empty log message ***
tm
parents: 1005
diff changeset
    49
"
1005
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    50
! !
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    51
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    52
!URI class methodsFor:'accessing'!
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    53
1254
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
    54
attributes
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
    55
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
    56
    |dict|
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
    57
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
    58
    dict := Dictionary new.
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
    59
    dict at:#MIME put:'text/plain'.
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
    60
    ^ dict
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
    61
!
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
    62
1005
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    63
classForScheme:aString
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    64
    "find a class for a given scheme name aString"
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    65
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    66
    |s|
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    67
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    68
    s := aString asLowercase.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    69
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    70
    ^ self allSubclasses detect:[:cls| |schemes|
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    71
        schemes := cls schemes.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    72
        schemes size ~~ 0 and:[schemes includes:s]
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    73
    ] ifNone:[HierarchicalURI]
1249
71aae2f2fbba *** empty log message ***
tm
parents: 1005
diff changeset
    74
71aae2f2fbba *** empty log message ***
tm
parents: 1005
diff changeset
    75
"
71aae2f2fbba *** empty log message ***
tm
parents: 1005
diff changeset
    76
    self classForScheme:'file'
71aae2f2fbba *** empty log message ***
tm
parents: 1005
diff changeset
    77
"
1005
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    78
!
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    79
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    80
schemes
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    81
    "answer the schemes supported by an URI-class.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    82
     Concrete subclasses redefine this to answer an array of scheme names"
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    83
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    84
    ^ nil
1256
f452235ed554 *** empty log message ***
tm
parents: 1254
diff changeset
    85
!
f452235ed554 *** empty log message ***
tm
parents: 1254
diff changeset
    86
f452235ed554 *** empty log message ***
tm
parents: 1254
diff changeset
    87
transferBufferSize
f452235ed554 *** empty log message ***
tm
parents: 1254
diff changeset
    88
    ^ 8 * 1024
1005
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    89
! !
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    90
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    91
!URI class methodsFor:'escape'!
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    92
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    93
escape:aString allow:additionalCharacters on:aStream
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    94
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    95
    |val|
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    96
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    97
    aString do:[:c|
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    98
        ((c isLetterOrDigit) 
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    99
         or:[('-_.!!~*''()' includes:c) 
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   100
         or:[additionalCharacters notNil 
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   101
             and:[additionalCharacters includes:c]]]
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   102
        ) ifTrue:[
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   103
            aStream nextPut:c
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   104
        ] ifFalse:[
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   105
            val := c asciiValue.            
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   106
            aStream nextPut:$%; 
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   107
                    nextPut:(Character digitValue:val//16);
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   108
                    nextPut:(Character digitValue:val\\16).
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   109
        ].
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   110
    ].
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   111
        
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   112
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   113
    "
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   114
     self escape:'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   115
          allow:nil on:TextCollector open
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   116
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   117
     self escape:'Ein text mit blanks und @ & #' 
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   118
          allow:nil on:TextCollector open
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   119
    "  
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   120
!
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   121
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   122
unEscape:aStream
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   123
    "convert escape sequences to the original characters"
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   124
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   125
    |s c1 c2|
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   126
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   127
    s := WriteStream on:''.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   128
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   129
    [aStream atEnd] whileFalse:[
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   130
        c1 := aStream next.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   131
        c1 == $% ifTrue:[
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   132
            c1 := aStream next.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   133
            c1 isNil ifTrue:[
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   134
                self error:'escape sequence incomplete'
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   135
            ].
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   136
            c2 := aStream next.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   137
            c2 isNil ifTrue:[
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   138
                self error:'escape sequence incomplete'
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   139
            ].
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   140
            c1 := c1 digitValue.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   141
            c2 := c2 digitValue.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   142
            (c1 > 15 or:[c2 > 15]) ifTrue:[
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   143
                self error:'escape sequence: expect hex digit'
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   144
            ].
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   145
            c1 := Character value:c1*16 + c2.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   146
        ].
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   147
        s nextPut:c1.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   148
    ].
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   149
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   150
    ^ s contents.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   151
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   152
    "
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   153
     self unEscape:(self escape:'   &%@   ' allow:nil) readStream
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   154
    "
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   155
! !
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   156
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   157
!URI methodsFor:'accessing'!
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   158
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   159
scheme
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   160
    "return primary scheme of the class.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   161
     Concrete subclasses may redefine this"
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   162
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   163
    |schemes|
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   164
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   165
    schemes := self class schemes.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   166
    ^ schemes size ~~ 0 ifTrue:[
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   167
        schemes at:1
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   168
    ] ifFalse:[
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   169
        nil
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   170
    ]
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   171
!
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   172
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   173
scheme:aString
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   174
    "set the scheme. This is a noop here and may be 
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   175
     defined by subclasses"
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   176
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   177
    ^ self
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   178
! !
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   179
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   180
!URI methodsFor:'comparing'!
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   181
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   182
= anURI
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   183
    ^ self class == anURI class and:[self asString == anURI asString]
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   184
!
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   185
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   186
hash
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   187
    ^ self asString hash
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   188
! !
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   189
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   190
!URI methodsFor:'converting'!
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   191
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   192
asURI
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   193
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   194
    ^ self
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   195
! !
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   196
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   197
!URI methodsFor:'printing & storing'!
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   198
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   199
printOn:aStream
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   200
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   201
    |scheme|
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   202
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   203
    scheme := self scheme.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   204
    scheme size ~~ 0 ifTrue:[
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   205
        aStream nextPutAll:scheme; nextPut:$:
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   206
    ].
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   207
! !
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   208
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   209
!URI methodsFor:'subclass responsibility'!
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   210
1254
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   211
pathExists
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   212
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   213
    "returns true if path exists"
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   214
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   215
    ^ self subclassResponsibility
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   216
!
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   217
1005
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   218
readStreamDo:aBlock
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   219
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   220
    "evaluate a block with the read stream as first argument
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   221
     and a dictionary containing attributes as second argument.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   222
     The stream is closed after aBlock has been evaluated.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   223
     Attributes may be the mime type (key #MIME)"
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   224
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   225
    ^ self subclassResponsibility
1254
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   226
!
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   227
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   228
readStreamsDo:aBlock
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   229
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   230
    "evaluate the block with a Collection of streams as first argument
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   231
     and a dictionary containing attributes as second argument,
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   232
     - a collection with a stream on a single file,
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   233
     - or a collection with streams on a directorie's files, but not recursive
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   234
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   235
     The streams are closed after aBlock has been evaluated.
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   236
     Attributes may be the mime type (key #MIME)"
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   237
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   238
    ^ self subclassResponsibility
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   239
!
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   240
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   241
writeStreamDo:aBlock
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   242
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   243
    "evaluate a block with the write stream as first argument
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   244
     and a dictionary containing attributes as second argument.
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   245
     The stream is closed after aBlock has been evaluated.
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   246
     Attributes may be the mime type (key #MIME)"
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   247
baf01931b9d6 *** empty log message ***
tm
parents: 1251
diff changeset
   248
    ^ self subclassResponsibility
1005
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   249
! !
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   250
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   251
!URI class methodsFor:'documentation'!
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   252
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   253
version
1256
f452235ed554 *** empty log message ***
tm
parents: 1254
diff changeset
   254
    ^ '$Header: /cvs/stx/stx/libbasic2/URI.st,v 1.5 2003-07-09 12:40:33 tm Exp $'
1005
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   255
! !