Mercurial > hg > soundsoftware-site
diff .svn/pristine/b2/b2adc52778d4d3ebd2c0c35b234944a4234c7e40.svn-base @ 909:cbb26bc654de redmine-1.3
Update to Redmine 1.3-stable branch (Redmine SVN rev 8964)
author | Chris Cannam |
---|---|
date | Fri, 24 Feb 2012 19:09:32 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.svn/pristine/b2/b2adc52778d4d3ebd2c0c35b234944a4234c7e40.svn-base Fri Feb 24 19:09:32 2012 +0000 @@ -0,0 +1,38 @@ +require 'source_annotation_extractor' + +# Modified version of the SourceAnnotationExtractor in railties +# Will search for runable code that uses <tt>call_hook</tt> +class PluginSourceAnnotationExtractor < SourceAnnotationExtractor + # Returns a hash that maps filenames under +dir+ (recursively) to arrays + # with their annotations. Only files with annotations are included, and only + # those with extension +.builder+, +.rb+, +.rxml+, +.rjs+, +.rhtml+, and +.erb+ + # are taken into account. + 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 =~ /(hook|test)\.rb/ + # skip + 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 +end + +namespace :redmine do + namespace :plugins do + desc "Enumerate all Redmine plugin hooks and their context parameters" + task :hook_list do + PluginSourceAnnotationExtractor.enumerate 'call_hook' + end + end +end