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



68
69
70
# File 'lib/ib/generator.rb', line 68

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
48
49
50
51
52
# File 'lib/ib/generator.rb', line 33

def generate_objc files
  output = ""
  files.map do |path, infos|
    infos.each do |info|
      output << <<-OBJC
@interface #{info[:class][0][0]} : #{info[:class][0][1]}

#{info[:outlets].map {|name, type| "@property IBOutlet #{generate_type(type)} #{name};" }.join("\n")}

#{info[:outlet_collections].map {|name, type| "@property IBOutletCollection(#{type}) NSArray * #{name};" }.join("\n")}

#{info[:actions].map {|action| "-(IBAction) #{generate_action(action)};" }.join("\n")}

@end
OBJC
      output << "\n\n"
    end
  end
  output
end

#generate_objc_impl(files) ⇒ Object



54
55
56
57
58
59
60
61
62
# File 'lib/ib/generator.rb', line 54

def generate_objc_impl files
  src = files.map do |path, info|
    <<-OBJC
@implementation #{info[:class][0][0]}

@end
OBJC
  end.join("\n" * 2)
end

#generate_type(type) ⇒ Object



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

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

#write(files, 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 files, dest
  files = IB::Parser.new.find_all(files)

  FileUtils.mkpath dest

  File.open("#{dest}/Stubs.h", 'w') do |f|
    f.write <<-OBJC
// Generated by IB v#{IB::VERSION} gem. Do not edit it manually
// Run `rake ib:open` to refresh

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
#import <UIKit/UIKit.h>

#{generate_objc(files)}
OBJC
  end

  File.open("#{dest}/Stubs.m", 'w') do |f|
    f.write <<-OBJC
// Generated by IB v#{IB::VERSION} gem. Do not edit it manually
// Run `rake ib:open` to refresh

#import "Stubs.h"

#{generate_objc_impl(files)}
OBJC
  end
  
end