Rake::TaskLib
# File lib/generator/generatortask.rb, line 7 7: def initialize(options = {}, &blk) 8: @options = { :input_fn => '*.i', :output_dir => 'generated/' }.merge(options) 9: @input_fn = @options[:input_fn] 10: @output_dir = @options[:output_dir] 11: yield self if block_given? 12: namespace 'ffi' do 13: define_generate_task 14: define_clean_task 15: end 16: end
# File lib/generator/generatortask.rb, line 49 49: def define_clean_task 50: desc 'Remove all generated files' 51: task :clean do 52: rm_rf @output_dir unless @output_dir == '.' 53: end 54: end
# File lib/generator/generatortask.rb, line 18 18: def define_file_task(fn, xml_fn, output_fn) 19: desc "Generate #{output_fn} from #{fn}" 20: file output_fn => fn do 21: mkdir_p @output_dir, :verbose => false 22: Logger.info("#{fn} -> #{xml_fn}") 23: `swig -xml #{xml_fn} #{fn}` 24: Logger.info("#{xml_fn} -> #{output_fn}") 25: parser = Parser.new 26: config_basename = File.basename(fn, File.extname(fn)) 27: config_dir = File.dirname(fn) 28: config_fn = File.join(config_dir, "#{config_basename}.rb") 29: if File.exists?(config_fn) 30: Logger.info("Using configuration in #{config_fn}...") 31: parser.load_config(config_fn) 32: end 33: File.open(output_fn, 'w') do |file| 34: file << parser.generate(Nokogiri::XML(File.open(xml_fn))) 35: end 36: end 37: end
# File lib/generator/generatortask.rb, line 38 38: def define_file_tasks 39: Dir.glob(@input_fn).inject([]) do |output_fns, fn| 40: output_fn = File.join(@output_dir, "#{File.basename(fn, '.i')}_wrap.rb") 41: xml_fn = File.join(@output_dir, "#{File.basename(fn, '.i')}_wrap.xml") 42: define_file_task(fn, xml_fn, output_fn) 43: output_fns << output_fn 44: end 45: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.