26
March
2008

Easier path construction using overloaded /3

At long last I found a justifiable use for operator overloading. Recently I’ve been writing quite a bit of rake files which involved a lot of path construction, like

 path = "#{all}/#{along}/#{the}/#{watch}/#{tower}"

Noticing all those extra characters required to create the path string I realized that the / operator can used for concatenation in this specific use case

class String
  def /(other)
    File.join(self,other)
  end
end

and then we can write a much cleaner version

 path = all/along/the/watch/tower

I wouldn’t advocate the usage outside of a rake file or other path construction intensive code, but for these specific scenarios it is pretty sweet.

Also posted on dzone snippets



3 comments

  1. dubek:

    Cute!

    Actually, you don’t need the ”/” argument in the File.join line. File.join joins its arguments with the local OS path separator, so File.join(“a”, “b”) gives “a/b” in normal OSs and “a\\b” in Windows.

  2. shmul:

    Fixed. Thanks.

  3. guyro:

    Hey, great idea!



Leave a Reply