lib/pancake/paths.rb
def unique_paths_for(name, opts = {})
      tally = {}
      output = []
      paths_for(name, opts).reverse.each do |ary|
        tally[ary[1]] ||= ary[0]
        output << ary if tally[ary[1]] == ary[0]
      end
      output.reverse
    end
def unique_paths_for(name, opts = {})
      tally = {}
      output = []
      paths_for(name, opts).reverse.each do |ary|
        tally[ary[1]] ||= ary[0]
        output << ary if tally[ary[1]] == ary[0]
      end
      output.reverse
    end
Provides an expanded, globbed list of paths and files for a given name.
 The result includes only the last matched file of a given sub path and name.

 @param        [Symbol]    name    The name of the paths group
 @param        [Hash]      opts    An options hash
 @option opts  [Boolean]   :invert (false) Inverts the order of returned paths and files

 @example
   #Given the following:
   #  /path/one/file1.rb
   #  /path/one/file2.rb
   #  /path/two/file1.rb

     MyClass.push_path(:files, ["/path/one", "/path/two"], "**/*.rb")

   MyClass.unique_paths_for(:files)
   MyClass.unique_paths_for(:files, :invert => true)

 @return [Array]
   Returns an array of [path, file] arrays
   Results are retuned in declared order.  Only unique files are returned (the file part - the path)
   In the above example, the following would be returned for the standard call
     [
       ["#{root}/path/one", "/file2.rb"],
       ["#{root}/path/two", "/file1.rb"]
     ]
   For the inverted example the following is returned:
     [
       ["#{root}/path/one/file2.rb"],
       ["#{root}/path/one/file1.rb"]
     ]

 @api public
 @since 0.1.1
 @author Daniel Neighman