Filename.st
author claus
Wed, 30 Mar 1994 11:38:21 +0200
changeset 68 59faa75185ba
parent 54 06dbdeeed4f9
child 77 6c38ca59927f
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
     1
"
5
67342904af11 *** empty log message ***
claus
parents: 3
diff changeset
     2
 COPYRIGHT (c) 1992 by Claus Gittinger
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
     3
              All Rights Reserved
a27a279701f8 Initial revision
claus
parents:
diff changeset
     4
a27a279701f8 Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
a27a279701f8 Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
a27a279701f8 Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
a27a279701f8 Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
a27a279701f8 Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
a27a279701f8 Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
a27a279701f8 Initial revision
claus
parents:
diff changeset
    11
"
a27a279701f8 Initial revision
claus
parents:
diff changeset
    12
a27a279701f8 Initial revision
claus
parents:
diff changeset
    13
Object subclass:#Filename
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
    14
         instanceVariableNames:'nameString'
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    15
         classVariableNames:''
a27a279701f8 Initial revision
claus
parents:
diff changeset
    16
         poolDictionaries:''
a27a279701f8 Initial revision
claus
parents:
diff changeset
    17
         category:'ST-80 compatibility'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    18
a27a279701f8 Initial revision
claus
parents:
diff changeset
    19
Filename comment:'
a27a279701f8 Initial revision
claus
parents:
diff changeset
    20
5
67342904af11 *** empty log message ***
claus
parents: 3
diff changeset
    21
COPYRIGHT (c) 1992 by Claus Gittinger
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    22
             All Rights Reserved
a27a279701f8 Initial revision
claus
parents:
diff changeset
    23
2
claus
parents: 1
diff changeset
    24
Filenames; originally added for ST-80 compatibility, is
claus
parents: 1
diff changeset
    25
taking over functionality from other classes (FileDirectory).
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    26
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
    27
$Header: /cvs/stx/stx/libbasic/Filename.st,v 1.7 1994-03-30 09:32:02 claus Exp $
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    28
'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    29
a27a279701f8 Initial revision
claus
parents:
diff changeset
    30
!Filename class methodsFor:'instance creation'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    31
2
claus
parents: 1
diff changeset
    32
currentDirectory
38
454b1b94a48e *** empty log message ***
claus
parents: 5
diff changeset
    33
    "return a filename for the current directory"
454b1b94a48e *** empty log message ***
claus
parents: 5
diff changeset
    34
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
    35
    ^ (self basicNew) setName:(FileDirectory currentDirectory pathName)
38
454b1b94a48e *** empty log message ***
claus
parents: 5
diff changeset
    36
454b1b94a48e *** empty log message ***
claus
parents: 5
diff changeset
    37
    "Filename currentDirectory"
2
claus
parents: 1
diff changeset
    38
!
claus
parents: 1
diff changeset
    39
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    40
named:aString
38
454b1b94a48e *** empty log message ***
claus
parents: 5
diff changeset
    41
    "return a filename for a directory named aString"
454b1b94a48e *** empty log message ***
claus
parents: 5
diff changeset
    42
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
    43
    ^ (self basicNew) setName:aString
38
454b1b94a48e *** empty log message ***
claus
parents: 5
diff changeset
    44
454b1b94a48e *** empty log message ***
claus
parents: 5
diff changeset
    45
    "Filename named:'/tmp/fooBar'"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    46
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
    47
2
claus
parents: 1
diff changeset
    48
!Filename class methodsFor:'queries'!
claus
parents: 1
diff changeset
    49
claus
parents: 1
diff changeset
    50
separator
claus
parents: 1
diff changeset
    51
    "return the file/directory separator."
claus
parents: 1
diff changeset
    52
claus
parents: 1
diff changeset
    53
     ^ OperatingSystem fileSeparator
38
454b1b94a48e *** empty log message ***
claus
parents: 5
diff changeset
    54
454b1b94a48e *** empty log message ***
claus
parents: 5
diff changeset
    55
     "Filename separator"
2
claus
parents: 1
diff changeset
    56
! !
claus
parents: 1
diff changeset
    57
claus
parents: 1
diff changeset
    58
!Filename methodsFor:'instance creation'!
claus
parents: 1
diff changeset
    59
claus
parents: 1
diff changeset
    60
construct:subname
38
454b1b94a48e *** empty log message ***
claus
parents: 5
diff changeset
    61
    "taking the receiver as a directory name, construct a new
454b1b94a48e *** empty log message ***
claus
parents: 5
diff changeset
    62
     filename for an entry within this directory (i.e. for a file
454b1b94a48e *** empty log message ***
claus
parents: 5
diff changeset
    63
     or a subdirectory in that directory)."
454b1b94a48e *** empty log message ***
claus
parents: 5
diff changeset
    64
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
    65
    ^ (self class basicNew) setName:(nameString , self class separator asString , subname)
38
454b1b94a48e *** empty log message ***
claus
parents: 5
diff changeset
    66
454b1b94a48e *** empty log message ***
claus
parents: 5
diff changeset
    67
    "('/tmp' asFilename construct:'foo') asString"
2
claus
parents: 1
diff changeset
    68
! !
claus
parents: 1
diff changeset
    69
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    70
!Filename methodsFor:'converting'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    71
a27a279701f8 Initial revision
claus
parents:
diff changeset
    72
asString
38
454b1b94a48e *** empty log message ***
claus
parents: 5
diff changeset
    73
    "return the receiver converted to a string"
454b1b94a48e *** empty log message ***
claus
parents: 5
diff changeset
    74
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
    75
    ^ nameString
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    76
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    77
a27a279701f8 Initial revision
claus
parents:
diff changeset
    78
asFilename
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
    79
    "return the receiver converted to a filename."
38
454b1b94a48e *** empty log message ***
claus
parents: 5
diff changeset
    80
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
    81
    "Thats pretty easy here :-)"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    82
    ^ self
a27a279701f8 Initial revision
claus
parents:
diff changeset
    83
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
    84
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
    85
!Filename privateMethodsFor:'private accessing'!
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    86
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
    87
setName:aString
38
454b1b94a48e *** empty log message ***
claus
parents: 5
diff changeset
    88
    "set the filename"
454b1b94a48e *** empty log message ***
claus
parents: 5
diff changeset
    89
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
    90
    nameString := aString
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    91
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
    92
2
claus
parents: 1
diff changeset
    93
!Filename methodsFor:'queries'!
claus
parents: 1
diff changeset
    94
claus
parents: 1
diff changeset
    95
directoryName
claus
parents: 1
diff changeset
    96
    "return the directoryName of the argument, aPath
claus
parents: 1
diff changeset
    97
     - thats the name of the directory where aPath is"
claus
parents: 1
diff changeset
    98
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
    99
    ^ OperatingSystem directoryNameOf:nameString
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   100
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   101
    "/foo/bar' asFilename directoryName"
2
claus
parents: 1
diff changeset
   102
!
claus
parents: 1
diff changeset
   103
claus
parents: 1
diff changeset
   104
baseName
claus
parents: 1
diff changeset
   105
    "return my baseName
claus
parents: 1
diff changeset
   106
     - thats the file/directory name without leading parent-dirs"
claus
parents: 1
diff changeset
   107
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   108
    ^ OperatingSystem baseNameOf:nameString
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   109
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   110
    "/foo/bar' asFilename baseName"
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   111
!
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   112
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   113
isAbsolute
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   114
    "return true, if the receiver represents an absolute pathname
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   115
     (in contrast to one relative to the current directory)"
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   116
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   117
    ^ (nameString startsWith:self separator)
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   118
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   119
    "/foo/bar' asFilename isAbsolute"
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   120
    "'..' asFilename isAbsolute"
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   121
    "'source/SBrowser.st' asFilename isAbsolute"
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   122
!
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   123
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   124
exists
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   125
    "return true, if such a file exists"
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   126
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   127
    ^ OperatingSystem isValidPath:nameString
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   128
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   129
    "'/foo/bar' asFilename exists"
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   130
    "'/tmp' asFilename exists"
2
claus
parents: 1
diff changeset
   131
! !
claus
parents: 1
diff changeset
   132
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   133
!Filename methodsFor:'file access'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   134
2
claus
parents: 1
diff changeset
   135
renameTo:newName
claus
parents: 1
diff changeset
   136
    "rename the file - the argument must be convertable to a String"
claus
parents: 1
diff changeset
   137
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   138
    ^ OperatingSystem renameFile:nameString to:(newName asString)
2
claus
parents: 1
diff changeset
   139
claus
parents: 1
diff changeset
   140
    "'/tmp/foo asFileName renameTo:'/tmp/bar'"
claus
parents: 1
diff changeset
   141
!
claus
parents: 1
diff changeset
   142
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   143
copyTo:newName
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   144
    "copy the file - the argument must be convertable to a String"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   145
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   146
    ^ OperatingSystem copyFile:nameString to:(newName asString)
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   147
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   148
a27a279701f8 Initial revision
claus
parents:
diff changeset
   149
fileIn
2
claus
parents: 1
diff changeset
   150
    "load smalltalk code from the file"
claus
parents: 1
diff changeset
   151
claus
parents: 1
diff changeset
   152
    ^ self readStream fileIn
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   153
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   154
a27a279701f8 Initial revision
claus
parents:
diff changeset
   155
readStream
2
claus
parents: 1
diff changeset
   156
    "return a stream for reading"
claus
parents: 1
diff changeset
   157
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   158
    ^ FileStream readonlyFileNamed:nameString
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   159
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   160
a27a279701f8 Initial revision
claus
parents:
diff changeset
   161
writeStream
2
claus
parents: 1
diff changeset
   162
    "return a stream for writing"
claus
parents: 1
diff changeset
   163
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   164
    ^ FileStream newFileNamed:nameString
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   165
! !