# File lib/ffi/tools/generator.rb, line 4
4: def initialize(ffi_name, rb_name, options = {})
5: @ffi_name = ffi_name
6: @rb_name = rb_name
7: @options = options
8: @name = File.basename rb_name, '.rb'
9:
10: file = File.read @ffi_name
11:
12: new_file = file.gsub(/^( *)@@@(.*?)@@@/) do
13: @constants = []
14: @structs = []
15:
16: indent = $1
17: original_lines = $2.count "\n"
18:
19: instance_eval $2
20:
21: new_lines = []
22: @constants.each { |c| new_lines << c.to_ruby }
23: @structs.each { |s| new_lines << s.generate_layout }
24:
25: new_lines = new_lines.join("\n").split "\n" # expand multiline blocks
26: new_lines = new_lines.map { |line| indent + line }
27:
28: padding = original_lines - new_lines.length
29: new_lines += [nil] * padding if padding >= 0
30:
31: new_lines.join "\n"
32: end
33:
34: open @rb_name, 'w' do |f|
35: f.puts "# This file is generated by rake. Do not edit."
36: f.puts
37: f.puts new_file
38: end
39: end
# File lib/ffi/tools/generator.rb, line 41
41: def constants(options = {}, &block)
42: @constants << FFI::ConstGenerator.new(@name, @options.merge(options), &block)
43: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.