class SourceAnnotationExtractor

def find_in(dir)

are taken into account.
those with extension +.builder+, +.rb+, +.rxml+, +.rjs+, +.rhtml+, and +.erb+
with their annotations. Only files with annotations are included, and only
Returns a hash that maps filenames under +dir+ (recursively) to arrays
def find_in(dir)
  results = {}
  Dir.glob("#{dir}/*") do |item|
    next if File.basename(item)[0] == ?.
    if File.directory?(item)
      results.update(find_in(item))
    elsif item =~ /\.(builder|(r(?:b|xml|js)))$/
      results.update(extract_annotations_from(item, /#\s*(#{tag}):?\s*(.*)$/))
    elsif item =~ /\.(rhtml|erb)$/
      results.update(extract_annotations_from(item, /<%\s*#\s*(#{tag}):?\s*(.*?)\s*%>/))
    end
  end
  results
end