module Sprockets::PathUtils

def find_matching_path_for_extensions(path, basename, extensions)

Returns an Array of [String path, Object value] matches.

# => ["app/assets/application.js", "application/javascript"]
find_matching_path_for_extensions("app/assets", "application", exts)
exts = { ".js" => "application/javascript" }

Examples

extensions - Hash of String extnames to values
basename - String basename of target file
path - String directory

Internal: Match paths in a directory against available extensions.
def find_matching_path_for_extensions(path, basename, extensions)
  matches = []
  entries(path).each do |entry|
    next unless File.basename(entry).start_with?(basename)
    extname, value = match_path_extname(entry, extensions)
    if basename == entry.chomp(extname)
      filename = File.join(path, entry)
      if file?(filename)
        matches << [filename, value]
      end
    end
  end
  matches
end