Skip to content

Instantly share code, notes, and snippets.

@erichocean
Created September 3, 2008 04:45
Show Gist options
  • Select an option

  • Save erichocean/8540 to your computer and use it in GitHub Desktop.

Select an option

Save erichocean/8540 to your computer and use it in GitHub Desktop.
def find_resource_entry(filename, opts={}, seen=nil)
extname = File.extname(filename)
rootname = filename.gsub(/#{extname}$/,'')
entry_extname = entry_rootname = nil
ret = entries_for(:resource, opts.merge(:hidden => :none)).reject do |entry|
entry_extname = File.extname(entry.filename)
entry_rootname = entry.filename.gsub(/#{entry_extname}$/,'')
ext_match = (extname.nil? || extname.size == 0) || (entry_extname == extname)
!(ext_match && (/#{rootname}$/ =~ entry_rootname))
end
ret = ret.first
if ret.nil?
seen = Set.new if seen.nil?
seen << self
all_required_bundles.each do |bundle|
next if seen.include?(bundle) # avoid recursion
ret = bundle.find_resource_entry(filename, opts, seen)
return ret unless ret.nil?
end
end
return ret
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment