def preferred_manifest_records_for_directory(node, segment, dirname)
preferences = preferences_for_path(node, segment, dirname)
records_by_pref = Hash.new
preferences.each { |pref| records_by_pref[pref] = Array.new }
manifest[segment].each do |manifest_record|
manifest_record_path = manifest_record[:path]
if manifest_record_path =~ /(#{Regexp.escape(segment.to_s)}\/[^\/]+\/#{Regexp.escape(dirname)})\/.+$/
specificity_dirname = $1
if records_by_pref[specificity_dirname]
records_by_pref[specificity_dirname] << manifest_record
end
end
end
best_pref = preferences.find { |pref| !records_by_pref[pref].empty? }
raise Chef::Exceptions::FileNotFound, "cookbook #{name} has no directory #{segment}/#{dirname}" unless best_pref
records_by_pref[best_pref]
end