ProMotion 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +0 -1
- data/Gemfile +1 -1
- data/README.md +336 -92
- data/Rakefile +1 -1
- data/lib/ProMotion.rb +14 -0
- data/lib/ProMotion/app_delegate.rb +63 -0
- data/lib/ProMotion/cocoatouch/NavigationController.rb +4 -0
- data/lib/ProMotion/cocoatouch/TableViewCell.rb +16 -0
- data/lib/ProMotion/cocoatouch/TableViewController.rb +50 -0
- data/lib/ProMotion/cocoatouch/ViewController.rb +52 -0
- data/lib/ProMotion/helpers/console.rb +24 -0
- data/lib/ProMotion/helpers/measure_helper.rb +20 -0
- data/lib/ProMotion/helpers/system_helper.rb +29 -0
- data/lib/ProMotion/helpers/tab_bar.rb +115 -0
- data/lib/ProMotion/helpers/view_helper.rb +39 -0
- data/lib/ProMotion/pro_motion.rb +3 -0
- data/lib/ProMotion/screen_helpers/_tables/_searchable_table.rb +66 -0
- data/lib/ProMotion/screen_helpers/_tables/_sectioned_table.rb +265 -0
- data/lib/ProMotion/screen_helpers/_tables/grouped_table.rb +13 -0
- data/lib/ProMotion/screen_helpers/_tables/plain_table.rb +14 -0
- data/lib/ProMotion/screen_helpers/screen_elements.rb +43 -0
- data/lib/ProMotion/screen_helpers/screen_navigation.rb +106 -0
- data/lib/ProMotion/screen_helpers/screen_tabs.rb +92 -0
- data/lib/ProMotion/screens/_screen_module.rb +222 -0
- data/lib/ProMotion/screens/_table_screen_module.rb +30 -0
- data/lib/ProMotion/screens/screen.rb +7 -0
- data/lib/ProMotion/screens/table_screen.rb +15 -0
- data/lib/ProMotion/version.rb +3 -0
- metadata +43 -63
- data/app/app_delegate.rb +0 -5
- data/app/screens/home_screen.rb +0 -21
- data/app/screens/test_screen.rb +0 -26
@@ -0,0 +1,92 @@
|
|
1
|
+
module ProMotion
|
2
|
+
module ScreenTabs
|
3
|
+
def tab_bar_controller(*screens)
|
4
|
+
tab_bar_controller = UITabBarController.alloc.init
|
5
|
+
|
6
|
+
view_controllers = []
|
7
|
+
tag_index = 0
|
8
|
+
|
9
|
+
screens.map! { |s| s.respond_to?(:new) ? s.new : s } # Initialize any classes
|
10
|
+
|
11
|
+
screens.each do |s|
|
12
|
+
if s.is_a?(ProMotion::Screen) || s.is_a?(ProMotion::TableScreen) || s.is_a?(ProMotion::ScreenModule)
|
13
|
+
s = s.new if s.respond_to?(:new)
|
14
|
+
s.tabBarItem.tag = tag_index
|
15
|
+
s.parent_screen = self if self.is_a?(UIViewController) && s.respond_to?("parent_screen=")
|
16
|
+
s.tab_bar = tab_bar_controller if s.respond_to?("tab_bar=")
|
17
|
+
view_controllers << s.main_controller
|
18
|
+
tag_index += 1
|
19
|
+
else
|
20
|
+
Console.log("Non-Screen passed into tab_bar_controller: #{s.to_s}", withColor: Console::RED_COLOR)
|
21
|
+
end
|
22
|
+
|
23
|
+
s.on_load if s.respond_to?(:on_load)
|
24
|
+
end
|
25
|
+
|
26
|
+
tab_bar_controller.viewControllers = view_controllers
|
27
|
+
tab_bar_controller
|
28
|
+
end
|
29
|
+
|
30
|
+
# Open a UITabBarController with the specified screens as the
|
31
|
+
# root view controller of the current app.
|
32
|
+
# @param [Array] A comma-delimited list of screen classes or instances.
|
33
|
+
# @return [UITabBarController]
|
34
|
+
def open_tab_bar(*screens)
|
35
|
+
tab_bar = tab_bar_controller(*screens)
|
36
|
+
UIApplication.sharedApplication.delegate.load_root_screen(tab_bar)
|
37
|
+
tab_bar
|
38
|
+
end
|
39
|
+
|
40
|
+
def open_tab(tab)
|
41
|
+
if tab.is_a? String
|
42
|
+
return self.select(self.tab_bar, title: tab)
|
43
|
+
elsif tab.is_a? Numeric
|
44
|
+
tab_bar_controller.selectedIndex = tab
|
45
|
+
return tab_bar_controller.viewControllers[tab]
|
46
|
+
else
|
47
|
+
$stderr.puts "Unable to open tab #{tab.to_s} because it isn't a string."
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def create_tab_bar_icon(icon, tag)
|
52
|
+
return UITabBarItem.alloc.initWithTabBarSystemItem(icon, tag: tag)
|
53
|
+
end
|
54
|
+
|
55
|
+
def create_tab_bar_icon_custom(title, image_name, tag)
|
56
|
+
icon_image = UIImage.imageNamed(image_name)
|
57
|
+
return UITabBarItem.alloc.initWithTitle(title, image:icon_image, tag:tag)
|
58
|
+
end
|
59
|
+
|
60
|
+
def create_tab_bar_item(tab={})
|
61
|
+
title = "Untitled"
|
62
|
+
title = tab[:title] if tab[:title]
|
63
|
+
tab[:tag] ||= @current_tag ||= 0
|
64
|
+
@current_tag = tab[:tag] + 1
|
65
|
+
|
66
|
+
tab_bar_item = create_tab_bar_icon(tab[:system_icon], tab[:tag]) if tab[:system_icon]
|
67
|
+
tab_bar_item = create_tab_bar_icon_custom(title, tab[:icon], tab[:tag]) if tab[:icon]
|
68
|
+
|
69
|
+
tab_bar_item.badgeValue = tab[:badge_number].to_s unless tab[:badge_number].nil? || tab[:badge_number] <= 0
|
70
|
+
|
71
|
+
return tab_bar_item
|
72
|
+
end
|
73
|
+
|
74
|
+
def select(tab_bar_controller, title: title)
|
75
|
+
root_controller = nil
|
76
|
+
tab_bar_controller.viewControllers.each do |vc|
|
77
|
+
if vc.tabBarItem.title == title
|
78
|
+
tab_bar_controller.selectedViewController = vc
|
79
|
+
root_controller = vc
|
80
|
+
break
|
81
|
+
end
|
82
|
+
end
|
83
|
+
root_controller
|
84
|
+
end
|
85
|
+
|
86
|
+
def replace_current_item(tab_bar_controller, view_controller: vc)
|
87
|
+
controllers = NSMutableArray.arrayWithArray(tab_bar_controller.viewControllers)
|
88
|
+
controllers.replaceObjectAtIndex(tab_bar_controller.selectedIndex, withObject: vc)
|
89
|
+
tab_bar_controller.viewControllers = controllers
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,222 @@
|
|
1
|
+
module ProMotion
|
2
|
+
module ScreenModule
|
3
|
+
include ProMotion::ScreenNavigation
|
4
|
+
include ProMotion::ScreenElements
|
5
|
+
include ProMotion::SystemHelper
|
6
|
+
include ProMotion::ScreenTabs
|
7
|
+
|
8
|
+
attr_accessor :parent_screen, :first_screen, :tab_bar_item, :tab_bar, :modal
|
9
|
+
|
10
|
+
def on_create(args = {})
|
11
|
+
unless self.is_a?(UIViewController)
|
12
|
+
raise StandardError.new("ERROR: Screens must extend UIViewController or a subclass of UIViewController.")
|
13
|
+
end
|
14
|
+
|
15
|
+
args.each do |k, v|
|
16
|
+
self.send("#{k}=", v) if self.respond_to?("#{k}=")
|
17
|
+
end
|
18
|
+
|
19
|
+
self.add_nav_bar if args[:nav_bar]
|
20
|
+
self.table_setup if self.respond_to?(:table_setup)
|
21
|
+
self.on_init if self.respond_to?(:on_init)
|
22
|
+
self
|
23
|
+
end
|
24
|
+
|
25
|
+
def is_modal?
|
26
|
+
self.modal == true
|
27
|
+
end
|
28
|
+
|
29
|
+
def has_nav_bar?
|
30
|
+
self.navigation_controller.nil? != true
|
31
|
+
end
|
32
|
+
|
33
|
+
def navigation_controller
|
34
|
+
@navigation_controller ||= self.navigationController
|
35
|
+
end
|
36
|
+
|
37
|
+
def navigation_controller=(val)
|
38
|
+
@navigation_controller = val
|
39
|
+
val
|
40
|
+
end
|
41
|
+
|
42
|
+
# [DEPRECATED]
|
43
|
+
def load_view_controller
|
44
|
+
warn "[DEPRECATION] `load_view_controller` is deprecated and doesn't actually do anything anymore. You can safely remove it from your code."
|
45
|
+
end
|
46
|
+
|
47
|
+
def set_tab_bar_item(args = {})
|
48
|
+
self.tab_bar_item = args
|
49
|
+
refresh_tab_bar_item
|
50
|
+
end
|
51
|
+
|
52
|
+
def refresh_tab_bar_item
|
53
|
+
self.tabBarItem = create_tab_bar_item(self.tab_bar_item) if self.tab_bar_item
|
54
|
+
end
|
55
|
+
|
56
|
+
def add_nav_bar
|
57
|
+
self.navigation_controller = NavigationController.alloc.initWithRootViewController(self)
|
58
|
+
self.first_screen = true
|
59
|
+
end
|
60
|
+
|
61
|
+
def set_nav_bar_right_button(title, args={})
|
62
|
+
args[:style] ||= UIBarButtonItemStyleBordered
|
63
|
+
args[:target] ||= self
|
64
|
+
args[:action] ||= nil
|
65
|
+
|
66
|
+
right_button = UIBarButtonItem.alloc.initWithTitle(title, style: args[:style], target: args[:target], action: args[:action])
|
67
|
+
self.navigationItem.rightBarButtonItem = right_button
|
68
|
+
right_button
|
69
|
+
end
|
70
|
+
|
71
|
+
def set_nav_bar_left_button(title, args={})
|
72
|
+
args[:style] ||= UIBarButtonItemStyleBordered
|
73
|
+
args[:target] ||= self
|
74
|
+
args[:action] ||= nil
|
75
|
+
|
76
|
+
left_button = UIBarButtonItem.alloc.initWithTitle(title, style: args[:style], target: args[:target], action: args[:action])
|
77
|
+
self.navigationItem.leftBarButtonItem = left_button
|
78
|
+
left_button
|
79
|
+
end
|
80
|
+
|
81
|
+
# [DEPRECATED]
|
82
|
+
def view_controller=(vc)
|
83
|
+
set_view_controller(vc)
|
84
|
+
end
|
85
|
+
|
86
|
+
def first_screen?
|
87
|
+
self.first_screen == true
|
88
|
+
end
|
89
|
+
|
90
|
+
# [DEPRECATED]
|
91
|
+
def set_view_controller(vc)
|
92
|
+
warn "[DEPRECATION] `set_view_controller` is deprecated and discontinued. Please inherit from the UIViewController you wish to use and include ProMotion::ScreenViewController instead."
|
93
|
+
self
|
94
|
+
end
|
95
|
+
|
96
|
+
def view_did_load; end
|
97
|
+
def on_opened
|
98
|
+
warn "[DEPRECATION] `on_opened` is deprecated. Please use `on_appear` instead."
|
99
|
+
end
|
100
|
+
|
101
|
+
def view_will_appear(animated)
|
102
|
+
# ProMotion::Screen.current_screen = self
|
103
|
+
self.will_appear
|
104
|
+
end
|
105
|
+
def will_appear; end
|
106
|
+
|
107
|
+
def view_did_appear(animated)
|
108
|
+
# ProMotion::Screen.current_screen = self
|
109
|
+
self.on_appear
|
110
|
+
end
|
111
|
+
def on_appear; end
|
112
|
+
|
113
|
+
def view_will_disappear(animated)
|
114
|
+
self.will_disappear
|
115
|
+
end
|
116
|
+
def will_disappear; end
|
117
|
+
|
118
|
+
def view_did_disappear(animated)
|
119
|
+
# ProMotion::Screen.current_screen = self.parent_screen if self.parent_screen
|
120
|
+
self.on_disappear
|
121
|
+
end
|
122
|
+
def on_disappear; end
|
123
|
+
|
124
|
+
def title
|
125
|
+
self.class.send(:get_title)
|
126
|
+
end
|
127
|
+
|
128
|
+
def title=(new_title)
|
129
|
+
self.class.title = new_title
|
130
|
+
super
|
131
|
+
end
|
132
|
+
|
133
|
+
def main_controller
|
134
|
+
return self.navigationController if self.navigationController
|
135
|
+
self
|
136
|
+
end
|
137
|
+
|
138
|
+
def view_controller
|
139
|
+
warn "[DEPRECATION] `view_controller` is deprecated, as screens are now UIViewController subclasses."
|
140
|
+
self
|
141
|
+
end
|
142
|
+
|
143
|
+
def should_rotate(orientation)
|
144
|
+
case orientation
|
145
|
+
when UIInterfaceOrientationPortrait
|
146
|
+
return supported_orientation?("UIInterfaceOrientationPortrait")
|
147
|
+
when UIInterfaceOrientationLandscapeLeft
|
148
|
+
return supported_orientation?("UIInterfaceOrientationLandscapeLeft")
|
149
|
+
when UIInterfaceOrientationLandscapeRight
|
150
|
+
return supported_orientation?("UIInterfaceOrientationLandscapeRight")
|
151
|
+
when UIInterfaceOrientationPortraitUpsideDown
|
152
|
+
return supported_orientation?("UIInterfaceOrientationPortraitUpsideDown")
|
153
|
+
else
|
154
|
+
false
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
def will_rotate(orientation, duration)
|
159
|
+
end
|
160
|
+
|
161
|
+
def should_autorotate
|
162
|
+
true
|
163
|
+
end
|
164
|
+
|
165
|
+
def on_rotate
|
166
|
+
end
|
167
|
+
|
168
|
+
def supported_orientation?(orientation)
|
169
|
+
NSBundle.mainBundle.infoDictionary["UISupportedInterfaceOrientations"].include?(orientation)
|
170
|
+
end
|
171
|
+
|
172
|
+
def supported_orientations
|
173
|
+
ors = 0
|
174
|
+
NSBundle.mainBundle.infoDictionary["UISupportedInterfaceOrientations"].each do |ori|
|
175
|
+
case ori
|
176
|
+
when "UIInterfaceOrientationPortrait"
|
177
|
+
ors |= UIInterfaceOrientationMaskPortrait
|
178
|
+
when "UIInterfaceOrientationLandscapeLeft"
|
179
|
+
ors |= UIInterfaceOrientationMaskLandscapeLeft
|
180
|
+
when "UIInterfaceOrientationLandscapeRight"
|
181
|
+
ors |= UIInterfaceOrientationMaskLandscapeRight
|
182
|
+
when "UIInterfaceOrientationPortraitUpsideDown"
|
183
|
+
ors |= UIInterfaceOrientationMaskPortraitUpsideDown
|
184
|
+
end
|
185
|
+
end
|
186
|
+
ors
|
187
|
+
end
|
188
|
+
|
189
|
+
# Class methods
|
190
|
+
module ClassMethods
|
191
|
+
def debug_mode
|
192
|
+
@debug_mode
|
193
|
+
end
|
194
|
+
|
195
|
+
def debug_mode=(v)
|
196
|
+
@debug_mode = v
|
197
|
+
end
|
198
|
+
|
199
|
+
def current_screen=(s)
|
200
|
+
@current_screen = s
|
201
|
+
end
|
202
|
+
|
203
|
+
def current_screen
|
204
|
+
@current_screen
|
205
|
+
end
|
206
|
+
|
207
|
+
def title(t)
|
208
|
+
@title = t
|
209
|
+
end
|
210
|
+
def title=(t)
|
211
|
+
@title = t
|
212
|
+
end
|
213
|
+
def get_title
|
214
|
+
@title ||= self.to_s
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
def self.included(base)
|
219
|
+
base.extend(ClassMethods)
|
220
|
+
end
|
221
|
+
end
|
222
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module ProMotion
|
2
|
+
module TableScreenModule
|
3
|
+
include MotionTable::PlainTable
|
4
|
+
include MotionTable::SearchableTable
|
5
|
+
include ProMotion::ScreenModule
|
6
|
+
|
7
|
+
def update_table_data
|
8
|
+
self.update_table_view_data(table_data)
|
9
|
+
end
|
10
|
+
|
11
|
+
module TableClassMethods
|
12
|
+
def searchable(params={})
|
13
|
+
@searchable_params = params
|
14
|
+
@searchable = true
|
15
|
+
end
|
16
|
+
|
17
|
+
def get_searchable_params
|
18
|
+
@searchable_params ||= nil
|
19
|
+
end
|
20
|
+
|
21
|
+
def get_searchable
|
22
|
+
@searchable ||= false
|
23
|
+
end
|
24
|
+
end
|
25
|
+
def self.included(base)
|
26
|
+
base.extend(ClassMethods)
|
27
|
+
base.extend(TableClassMethods)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module ProMotion
|
2
|
+
# You can inherit a table screen from any UITableViewController if you include TableScreenModule
|
3
|
+
# Just make sure to implement the Obj-C methods in cocoatouch/TableViewController.rb.
|
4
|
+
class TableScreen < TableViewController
|
5
|
+
include ProMotion::TableScreenModule
|
6
|
+
end
|
7
|
+
|
8
|
+
class GroupedTableScreen < TableScreen
|
9
|
+
include ProMotion::MotionTable::GroupedTable
|
10
|
+
end
|
11
|
+
|
12
|
+
class SectionedTableScreen < TableScreen
|
13
|
+
include ProMotion::MotionTable::SectionedTable
|
14
|
+
end
|
15
|
+
end
|
metadata
CHANGED
@@ -1,37 +1,27 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: ProMotion
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.0
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 4
|
9
|
-
- 1
|
10
|
-
version: 0.4.1
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Jamon Holmgren
|
14
9
|
- Silas Matson
|
15
10
|
- ClearSight Studio
|
16
11
|
autorequire:
|
17
12
|
bindir: bin
|
18
13
|
cert_chain: []
|
19
|
-
|
20
|
-
date: 2013-02-21 00:00:00 Z
|
14
|
+
date: 2013-03-04 00:00:00.000000000 Z
|
21
15
|
dependencies: []
|
22
|
-
|
23
16
|
description: ProMotion is a new way to easily build RubyMotion iOS apps.
|
24
|
-
email:
|
17
|
+
email:
|
25
18
|
- jamon@clearsightstudio.com
|
26
19
|
- silas@clearsightstudio.com
|
27
20
|
- contact@clearsightstudio.com
|
28
21
|
executables: []
|
29
|
-
|
30
22
|
extensions: []
|
31
|
-
|
32
23
|
extra_rdoc_files: []
|
33
|
-
|
34
|
-
files:
|
24
|
+
files:
|
35
25
|
- .gitignore
|
36
26
|
- .repl_history
|
37
27
|
- Gemfile
|
@@ -40,66 +30,56 @@ files:
|
|
40
30
|
- ProMotion.gemspec
|
41
31
|
- README.md
|
42
32
|
- Rakefile
|
43
|
-
- app/app_delegate.rb
|
44
|
-
- app/screens/home_screen.rb
|
45
|
-
- app/screens/test_screen.rb
|
46
33
|
- lib/ProMotion.rb
|
47
34
|
- lib/ProMotion/.DS_Store
|
48
|
-
- lib/ProMotion/_cocoatouch/NavigationController.rb
|
49
|
-
- lib/ProMotion/_cocoatouch/TableViewCell.rb
|
50
|
-
- lib/ProMotion/_cocoatouch/TableViewController.rb
|
51
|
-
- lib/ProMotion/_cocoatouch/ViewController.rb
|
52
|
-
- lib/ProMotion/_helpers/console.rb
|
53
|
-
- lib/ProMotion/_helpers/measure_helper.rb
|
54
|
-
- lib/ProMotion/_helpers/motion-table/1st/searchable_table.rb
|
55
|
-
- lib/ProMotion/_helpers/motion-table/1st/sectioned_table.rb
|
56
|
-
- lib/ProMotion/_helpers/motion-table/2nd/grouped_table.rb
|
57
|
-
- lib/ProMotion/_helpers/motion-table/2nd/plain_table.rb
|
58
|
-
- lib/ProMotion/_helpers/system_helper.rb
|
59
|
-
- lib/ProMotion/_helpers/tab_bar.rb
|
60
|
-
- lib/ProMotion/_helpers/view_helper.rb
|
61
|
-
- lib/ProMotion/_screen_modules/screen_elements.rb
|
62
|
-
- lib/ProMotion/_screen_modules/screen_navigation.rb
|
63
|
-
- lib/ProMotion/_screen_modules/screen_tabs.rb
|
64
35
|
- lib/ProMotion/app_delegate.rb
|
36
|
+
- lib/ProMotion/cocoatouch/NavigationController.rb
|
37
|
+
- lib/ProMotion/cocoatouch/TableViewCell.rb
|
38
|
+
- lib/ProMotion/cocoatouch/TableViewController.rb
|
39
|
+
- lib/ProMotion/cocoatouch/ViewController.rb
|
40
|
+
- lib/ProMotion/helpers/console.rb
|
41
|
+
- lib/ProMotion/helpers/measure_helper.rb
|
42
|
+
- lib/ProMotion/helpers/system_helper.rb
|
43
|
+
- lib/ProMotion/helpers/tab_bar.rb
|
44
|
+
- lib/ProMotion/helpers/view_helper.rb
|
65
45
|
- lib/ProMotion/pro_motion.rb
|
66
|
-
- lib/ProMotion/
|
67
|
-
- lib/ProMotion/
|
68
|
-
- lib/ProMotion/
|
69
|
-
- lib/ProMotion/
|
46
|
+
- lib/ProMotion/screen_helpers/_tables/_searchable_table.rb
|
47
|
+
- lib/ProMotion/screen_helpers/_tables/_sectioned_table.rb
|
48
|
+
- lib/ProMotion/screen_helpers/_tables/grouped_table.rb
|
49
|
+
- lib/ProMotion/screen_helpers/_tables/plain_table.rb
|
50
|
+
- lib/ProMotion/screen_helpers/screen_elements.rb
|
51
|
+
- lib/ProMotion/screen_helpers/screen_navigation.rb
|
52
|
+
- lib/ProMotion/screen_helpers/screen_tabs.rb
|
53
|
+
- lib/ProMotion/screens/_screen_module.rb
|
54
|
+
- lib/ProMotion/screens/_table_screen_module.rb
|
55
|
+
- lib/ProMotion/screens/screen.rb
|
56
|
+
- lib/ProMotion/screens/table_screen.rb
|
70
57
|
- lib/ProMotion/version.rb
|
71
58
|
homepage: https://github.com/clearsightstudio/ProMotion
|
72
59
|
licenses: []
|
73
|
-
|
74
60
|
post_install_message:
|
75
61
|
rdoc_options: []
|
76
|
-
|
77
|
-
require_paths:
|
62
|
+
require_paths:
|
78
63
|
- lib
|
79
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
64
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
80
65
|
none: false
|
81
|
-
requirements:
|
82
|
-
- -
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
|
85
|
-
|
86
|
-
- 0
|
87
|
-
version: "0"
|
88
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
71
|
none: false
|
90
|
-
requirements:
|
91
|
-
- -
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
|
94
|
-
segments:
|
95
|
-
- 0
|
96
|
-
version: "0"
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
97
76
|
requirements: []
|
98
|
-
|
99
77
|
rubyforge_project:
|
100
|
-
rubygems_version: 1.8.
|
78
|
+
rubygems_version: 1.8.25
|
101
79
|
signing_key:
|
102
80
|
specification_version: 3
|
103
|
-
summary: ProMotion is a new way to organize RubyMotion apps. Instead of dealing with
|
81
|
+
summary: ProMotion is a new way to organize RubyMotion apps. Instead of dealing with
|
82
|
+
UIViewControllers, you work with Screens. Screens are a logical way to think of
|
83
|
+
your app and include a ton of great utilities to make iOS development more like
|
84
|
+
Ruby and less like Objective-C.
|
104
85
|
test_files: []
|
105
|
-
|