Class: IB::Generator

Inherits:
Object
  • Object
show all
Defined in:
lib/ib/generator.rb

Instance Method Summary collapse

Instance Method Details

#generate_action(action) ⇒ Object



63
64
65
# File 'lib/ib/generator.rb', line 63

def generate_action action
  action[1] ? "#{action[0]}:(id) #{action[1]}" : "#{action[0]}"
end

#generate_objc(files) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/ib/generator.rb', line 33

def generate_objc files
  src = files.map do |path, info|
"@interface \#{info[:class][0][0]} : \#{info[:class][0][1]}\n\n\#{info[:outlets].map {|name, type| \"@property IBOutlet \#{generate_type(type)} \#{name};\" }.join(\"\\n\")}\n\n\#{info[:outlet_collections].map {|name, type| \"@property IBOutletCollection(\#{type}) NSArray * \#{name};\" }.join(\"\\n\")}\n\n\#{info[:actions].map {|action| \"-(IBAction) \#{generate_action(action)};\" }.join(\"\\n\")}\n\n@end\n"
  end.join("\n" * 2)
end

#generate_objc_impl(files) ⇒ Object



49
50
51
52
53
54
55
56
57
# File 'lib/ib/generator.rb', line 49

def generate_objc_impl files
  src = files.map do |path, info|
    "@implementation \#{info[:class][0][0]}\n\n@end\n"
  end.join("\n" * 2)
end

#generate_type(type) ⇒ Object



59
60
61
# File 'lib/ib/generator.rb', line 59

def generate_type type
  type == "id" ? type : "#{type} *"
end

#write(src, dest) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/ib/generator.rb', line 2

def write src, dest
  files = IB::Parser.new.find_all(src)

  FileUtils.mkpath dest

  File.open("#{dest}/Stubs.h", 'w') do |f|
    f.write "// Generated by IB v\#{IB::VERSION} gem. Do not edit it manually\n// Run `rake design` to refresh\n\n#import <Foundation/Foundation.h>\n#import <CoreData/CoreData.h>\n#import <UIKit/UIKit.h>\n\n\#{generate_objc(files)}\n"
  end

  File.open("#{dest}/Stubs.m", 'w') do |f|
    f.write "// Generated by IB v\#{IB::VERSION} gem. Do not edit it manually\n// Run `rake design` to refresh\n\n#import \"Stubs.h\"\n\n\#{generate_objc_impl(files)}\n"
  end
  
end