moduleNanoc3classPathdefinitialize(str)@orig_str= str
enddefcomponents@components||=@orig_str.gsub(/^\/+|\/+$/,'').split('/')enddefto_s@clean_str||=('/'+ components.join('/')+'/')enddefinspect"<#{self.class}:0x#{self.object_id.to_s(16)} str=#{self.to_s}>"enddef<=>(other)self.to_s <=> other.to_s
enddef==(other)(self.to_s <=> other.to_s)==0enddefeql?(other)self.class == other.class &&self== other
enddefhash[self.class,self.to_s ].hash
enddef=~(str)self==Nanoc3::Path.new(str)endendend
puts '*** These should all be /foo/bar/:'
puts Nanoc3::Path.new('/foo/bar/')
puts Nanoc3::Path.new('/foo/bar')
puts Nanoc3::Path.new('foo/bar/')
puts Nanoc3::Path.new('foo/bar')
puts Nanoc3::Path.new('////foo/bar////')
puts
puts '*** These should all be true (Path-Path comparison):'
puts Nanoc3::Path.new('/foo/bar/')==Nanoc3::Path.new('/foo/bar')
puts Nanoc3::Path.new('foo/bar/')==Nanoc3::Path.new('/foo/bar/')
puts
puts '*** These should all be true (Path-String comparison using ==):'
puts Nanoc3::Path.new('/foo/bar/')=='/foo/bar/'
puts
puts '*** These should all be false (Path-String comparison using ==):'
puts Nanoc3::Path.new('/foo/bar/')=='foo/bar/'
puts Nanoc3::Path.new('/foo/bar/')=='/foo/bar'
puts
puts '*** These should all be true (Path-String comparison using =~):'
puts Nanoc3::Path.new('/foo/bar/')=~'/foo/bar/'
puts Nanoc3::Path.new('/foo/bar/')=~'/foo/bar'
puts