class SourceAnnotationExtractor
def find_in(dir)
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