ib 0.3.4 → 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1bc54b5ee7ce7f642da32df4c2b1ac5e75027f27
4
- data.tar.gz: 799141026ac9fddaf7cc11aea5d461c046a59d09
3
+ metadata.gz: 1e9c82fc607ab9a37e14ad18ebf69c2fecc0e256
4
+ data.tar.gz: 153e219a271e45ee4a78fe841c57b6bb82d62c0f
5
5
  SHA512:
6
- metadata.gz: 0a8a179a75c03d3494e677002d2098a015e8794fc4cdaedbbc917e526e2bcea832863a3bda9a0e68e482bb8abfddc7dfc9fbb0ffde19ec86b36884a9c724e624
7
- data.tar.gz: 3be4c0577bc661b93c8677f97898a94d3d5801101fa279a8d43a60f4c774adc551bbf10647cfbe89892eaed34644410433743ab4ccd93e95a0c3bf3c423eb3fd
6
+ metadata.gz: 84f6f138dc29230e26161f3ca09439fd6936520ceae59e8e672890db37415c18b50ed2d69dae2a5b47d6641ab71304e66d355da176e035d52835ebaf6ea6b58c
7
+ data.tar.gz: 323138c6ef452527eb72c2f7260f0e844f1b5953aed1da529f9a2d8e19e2916e7ff70e542721794ef13e7263a5835bcc4dd2a0f4d328ba08fcb58c62b9cf3f8f
data/ib.gemspec CHANGED
@@ -15,8 +15,9 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = IB::VERSION
17
17
 
18
- gem.add_dependency "xcodeproj", ">= 0.11.0"
18
+ gem.add_dependency "xcodeproj", ">= 0.11.1"
19
19
  gem.add_dependency "thor", ">= 0.15.4"
20
+ gem.add_dependency "tilt", ">= 1.4.1"
20
21
 
21
22
  gem.add_development_dependency "rspec", ">= 2.0"
22
23
  gem.add_development_dependency "rake"
data/lib/ib/generator.rb CHANGED
@@ -1,76 +1,35 @@
1
+ require 'erb'
2
+ require 'tilt/erb'
3
+ require 'ib/generator/rendering_helper'
4
+
1
5
  class IB::Generator
6
+ def initialize motion_template_type
7
+ # NOTE: motion_template_type equal to Motion::Project::App.template
8
+ # but, this class use its value for judging build platform.
9
+ @build_platform = motion_template_type
10
+ end
11
+
12
+ def absolute_template_path path
13
+ File.expand_path(File.join(File.dirname(__FILE__), path))
14
+ end
15
+
16
+ def render_stub_file path, files
17
+ template = Tilt::ERBTemplate.new(absolute_template_path(path), { :trim => '<>' })
18
+ template.render(RenderingHelper.new(@build_platform, files))
19
+ end
20
+
2
21
  def write files, dest
3
22
  files = IB::Parser.new.find_all(files)
4
-
23
+
5
24
  FileUtils.mkpath dest
6
25
 
7
26
  File.open("#{dest}/Stubs.h", 'w') do |f|
8
- f.write <<-OBJC
9
- // Generated by IB v#{IB::VERSION} gem. Do not edit it manually
10
- // Run `rake ib:open` to refresh
11
-
12
- #import <Foundation/Foundation.h>
13
- #import <CoreData/CoreData.h>
14
- #import <UIKit/UIKit.h>
15
-
16
- #{generate_objc(files)}
17
- OBJC
27
+ f.write render_stub_file('generator/templates/Stubs.h.erb', files)
18
28
  end
19
29
 
20
30
  File.open("#{dest}/Stubs.m", 'w') do |f|
21
- f.write <<-OBJC
22
- // Generated by IB v#{IB::VERSION} gem. Do not edit it manually
23
- // Run `rake ib:open` to refresh
24
-
25
- #import "Stubs.h"
26
-
27
- #{generate_objc_impl(files)}
28
- OBJC
31
+ f.write render_stub_file('generator/templates/Stubs.m.erb', files)
29
32
  end
30
-
31
33
  end
32
34
 
33
- def generate_objc files
34
- output = ""
35
- files.map do |path, infos|
36
- infos.each do |info|
37
- output << <<-OBJC
38
- @interface #{info[:class][0][0]}#{info[:class][0][1] ? ": #{info[:class][0][1]}" : ""}
39
-
40
- #{info[:outlets].map {|name, type| "@property IBOutlet #{generate_type(type)} #{name};" }.join("\n")}
41
-
42
- #{info[:outlet_collections].map {|name, type| "@property IBOutletCollection(#{type}) NSArray * #{name};" }.join("\n")}
43
-
44
- #{info[:actions].map {|action| "-(IBAction) #{generate_action(action)};" }.join("\n")}
45
-
46
- @end
47
- OBJC
48
- output << "\n\n"
49
- end
50
- end
51
- output
52
- end
53
-
54
- def generate_objc_impl files
55
- output = ""
56
- files.map do |path, infos|
57
- infos.each do |info|
58
- output << <<-OBJC
59
- @implementation #{info[:class][0][0]}
60
-
61
- @end
62
- OBJC
63
- output << "\n\n"
64
- end
65
- end
66
- output
67
- end
68
-
69
- def generate_type type
70
- type == "id" ? type : "#{type} *"
71
- end
72
-
73
- def generate_action action
74
- action[1] ? "#{action[0]}:(#{action[2] ? "#{action[2]}*" : 'id'}) #{action[1]}" : "#{action[0]}"
75
- end
76
35
  end
@@ -0,0 +1,32 @@
1
+ module IB
2
+ class Generator
3
+ class RenderingHelper
4
+
5
+ def initialize(build_platform, files)
6
+ @build_platform = build_platform
7
+ @files = files
8
+ end
9
+
10
+ def ib_version
11
+ IB::VERSION
12
+ end
13
+
14
+ def ios_project?
15
+ @build_platform == :ios
16
+ end
17
+
18
+ def osx_project?
19
+ @build_platform == :osx
20
+ end
21
+
22
+ def generate_type type
23
+ type == "id" ? type : "#{type} *"
24
+ end
25
+
26
+ def generate_action action
27
+ action[1] ? "#{action[0]}:(#{action[2] ? "#{action[2]}*" : 'id'}) #{action[1]}" : "#{action[0]}"
28
+ end
29
+
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,30 @@
1
+ // Generated by IB v<%= ib_version %> gem. Do not edit it manually
2
+ // Run `rake ib:open` to refresh
3
+
4
+ #import <Foundation/Foundation.h>
5
+ #import <CoreData/CoreData.h>
6
+ <% if ios_project? %>
7
+ #import <UIKit/UIKit.h>
8
+ <% elsif osx_project? %>
9
+ #import <Cocoa/Cocoa.h>
10
+ <% end %>
11
+
12
+ <% @files.map do |path, infos| %>
13
+ <% infos.each do |info| %>
14
+ @interface <%= info[:class][0][0] + (info[:class][0][1] ? ": #{info[:class][0][1]}" : "")%>
15
+ <% unless info[:outlets].empty? %><%= "\n"%><% end %>
16
+ <% info[:outlets].map do |name, type| %>
17
+ @property IBOutlet <%= generate_type(type)%> <%= name %>;
18
+ <% end %>
19
+ <% unless info[:outlets].empty? %><%= "\n"%><% end %>
20
+ <% info[:outlet_collections].map do|name, type| %>
21
+ @property IBOutletCollection(<%= type %>) NSArray * <%= name %>;
22
+ <% end %>
23
+ <% unless info[:outlet_collections].empty? %><%= "\n"%><% end %>
24
+ <% info[:actions].map do |action| %>
25
+ -(IBAction) <%= generate_action(action) %>;
26
+ <% end %>
27
+ <% unless info[:actions].empty? %><%= "\n"%><% end %>
28
+ @end
29
+
30
+ <% end; end %>
@@ -0,0 +1,11 @@
1
+ // Generated by IB v<%= ib_version %> gem. Do not edit it manually
2
+ // Run `rake ib:open` to refresh
3
+
4
+ #import "Stubs.h"
5
+
6
+ <% @files.map do |path, infos| %>
7
+ <% infos.each do |info| %>
8
+ @implementation <%= info[:class][0][0] %>
9
+ @end
10
+
11
+ <% end; end; %>
data/lib/ib/project.rb CHANGED
@@ -31,7 +31,8 @@ class IB::Project
31
31
  pods = project.new_group("Pods")
32
32
  pods.path = pods_headers_path
33
33
 
34
- IB::Generator.new.write(Motion::Project::App.config.files, ib_project)
34
+ generator = IB::Generator.new(detect_platform)
35
+ generator.write(Motion::Project::App.config.files, ib_project)
35
36
 
36
37
  support.new_file "ib.xcodeproj/Stubs.h"
37
38
  file = support.new_file "ib.xcodeproj/Stubs.m"
data/lib/ib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module IB
2
- VERSION = '0.3.4'
2
+ VERSION = '0.3.5'
3
3
  end
@@ -3,22 +3,25 @@ require "spec_helper"
3
3
  require "ib/generator"
4
4
 
5
5
  describe IB::Generator do
6
- it "generates stubs" do
6
+ it "generates stubs header with ios platform" do
7
7
  files = IB::Parser.new.find_all("spec/fixtures")
8
- stubs = IB::Generator.new.generate_objc(files)
8
+ stubs = IB::Generator.new(:ios).render_stub_file('generator/templates/Stubs.h.erb', files)
9
+
9
10
  stubs.should == <<-OBJC
11
+ // Generated by IB v#{IB::VERSION} gem. Do not edit it manually
12
+ // Run `rake ib:open` to refresh
13
+
14
+ #import <Foundation/Foundation.h>
15
+ #import <CoreData/CoreData.h>
16
+ #import <UIKit/UIKit.h>
17
+
10
18
  @interface AppDelegate
11
19
 
12
20
  @property IBOutlet UIWindow * window;
13
21
  @property IBOutlet UINavigationController * navigationController;
14
22
 
15
-
16
-
17
-
18
-
19
23
  @end
20
24
 
21
-
22
25
  @interface CustomView: UIView
23
26
 
24
27
  @property IBOutlet UIGreenLabel * greenLabel;
@@ -41,28 +44,86 @@ describe IB::Generator do
41
44
 
42
45
  @end
43
46
 
44
-
45
47
  @interface EmptyView: UIView
48
+ @end
49
+
50
+ @interface AnotherView: EmptyView
51
+ @end
46
52
 
53
+ OBJC
54
+ end
55
+
56
+ it "generates stubs header with osx platform" do
57
+ files = IB::Parser.new.find_all("spec/fixtures")
58
+ stubs = IB::Generator.new(:osx).render_stub_file('generator/templates/Stubs.h.erb', files)
59
+
60
+ stubs.should == <<-OBJC
61
+ // Generated by IB v#{IB::VERSION} gem. Do not edit it manually
62
+ // Run `rake ib:open` to refresh
63
+
64
+ #import <Foundation/Foundation.h>
65
+ #import <CoreData/CoreData.h>
66
+ #import <Cocoa/Cocoa.h>
47
67
 
68
+ @interface AppDelegate
69
+
70
+ @property IBOutlet UIWindow * window;
71
+ @property IBOutlet UINavigationController * navigationController;
72
+
73
+ @end
48
74
 
75
+ @interface CustomView: UIView
49
76
 
77
+ @property IBOutlet UIGreenLabel * greenLabel;
78
+ @property IBOutlet UILabel * redLabel;
79
+ @property IBOutlet id untyped_label;
80
+ @property IBOutlet id yellowLabel;
50
81
 
82
+ @property IBOutletCollection(UIGreenLabel) NSArray * greenLabelCollection;
83
+ @property IBOutletCollection(UILabel) NSArray * redLabelCollection;
84
+ @property IBOutletCollection(id) NSArray * untyped_label_collection;
85
+ @property IBOutletCollection(id) NSArray * yellowLabelCollection;
51
86
 
87
+ -(IBAction) someAction:(id) sender;
88
+ -(IBAction) segueAction:(UIStoryboardSegue*) sender;
89
+ -(IBAction) anotherAction:(id) button;
90
+ -(IBAction) actionWithComment:(id) sender;
91
+ -(IBAction) actionWithBrackets:(id) sender;
92
+ -(IBAction) actionWithoutArgs;
93
+ -(IBAction) actionWithDefaultedArgs:(id) sender;
52
94
 
53
95
  @end
54
96
 
97
+ @interface EmptyView: UIView
98
+ @end
55
99
 
56
100
  @interface AnotherView: EmptyView
101
+ @end
57
102
 
103
+ OBJC
104
+ end
58
105
 
106
+ it "generates stubs implement" do
107
+ files = IB::Parser.new.find_all("spec/fixtures")
108
+ stubs = IB::Generator.new(:ios).render_stub_file('generator/templates/Stubs.m.erb', files)
59
109
 
110
+ stubs.should == <<-OBJC
111
+ // Generated by IB v#{IB::VERSION} gem. Do not edit it manually
112
+ // Run `rake ib:open` to refresh
60
113
 
114
+ #import "Stubs.h"
61
115
 
116
+ @implementation AppDelegate
117
+ @end
62
118
 
119
+ @implementation CustomView
120
+ @end
63
121
 
122
+ @implementation EmptyView
64
123
  @end
65
124
 
125
+ @implementation AnotherView
126
+ @end
66
127
 
67
128
  OBJC
68
129
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yury Korolev
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-09-27 00:00:00.000000000 Z
12
+ date: 2013-10-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: xcodeproj
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - '>='
19
19
  - !ruby/object:Gem::Version
20
- version: 0.11.0
20
+ version: 0.11.1
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - '>='
26
26
  - !ruby/object:Gem::Version
27
- version: 0.11.0
27
+ version: 0.11.1
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: thor
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -39,6 +39,20 @@ dependencies:
39
39
  - - '>='
40
40
  - !ruby/object:Gem::Version
41
41
  version: 0.15.4
42
+ - !ruby/object:Gem::Dependency
43
+ name: tilt
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - '>='
47
+ - !ruby/object:Gem::Version
48
+ version: 1.4.1
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '>='
54
+ - !ruby/object:Gem::Version
55
+ version: 1.4.1
42
56
  - !ruby/object:Gem::Dependency
43
57
  name: rspec
44
58
  requirement: !ruby/object:Gem::Requirement
@@ -86,6 +100,9 @@ files:
86
100
  - ib.gemspec
87
101
  - lib/ib.rb
88
102
  - lib/ib/generator.rb
103
+ - lib/ib/generator/rendering_helper.rb
104
+ - lib/ib/generator/templates/Stubs.h.erb
105
+ - lib/ib/generator/templates/Stubs.m.erb
89
106
  - lib/ib/outlets.rb
90
107
  - lib/ib/parser.rb
91
108
  - lib/ib/project.rb