Feature #6507
closedFile Literal
Description
=begin
One of the features of the Rebol programming language that I has always liked is its direct support for files via the (({%filename})) notation (See http://www.rebol.com/r3/docs/datatypes/file.html). I've often wondered how Ruby might support the same, but finding a suitable and available notation proved rather difficult.
Today it occurred to me that perhaps the /
symbol could do the trick:
file = /README.rdoc
For absolute paths it could be //
:
file = //etc/fstab
Exactly what class of object (({file})) should be is up for debate. Probably it would be a (({Pathname})) instance, but I suppose it could a different "Path" class basically a wrapper round (({File})) and (({Dir})) classes.
The benefit of this is fairly obvious I think, but I'll give one clear usecase just the same:
class Foo
def initialize(source)
case source
when String
parse(source)
when Pathname # assuming this to be the instance
parse(source.read)
end
end
end
from string¶
Foo.new "content of foo"
from file¶
Foo.new /foo.txt
There is the ambiguity of x /a
for division, but I think expecting x/a
or x / a
for that is okay. After all, the same limitation holds for other unary operators too.
Actually, while I like the concise notation, it may be more flexible to require a string:
/'foo.txt'
Then /
could actually be a unary operator.
In anycase, whether this notation works or not, I hope this spurs some debate so that ultimately something along these lines will come of it. I truly tire of typing things like (({File.read(File.join(File.dirname(FILE), fname))})).
=end