Parent

FFI::Generator::Task

Attributes

input_fn[RW]
output_dir[RW]

Public Class Methods

new(options = {}, &blk) click to toggle source
    # 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

Private Instance Methods

define_clean_task() click to toggle source
    # 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
define_file_task(fn, xml_fn, output_fn) click to toggle source
    # 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
define_file_tasks() click to toggle source
    # 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
define_generate_task() click to toggle source
    # File lib/generator/generatortask.rb, line 46
46:       def define_generate_task
47:         (task :generate => define_file_tasks).add_description('Generate all files')
48:       end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.