bubble-wrap 1.7.0 → 1.7.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +3 -3
- data/README.md +1 -1
- data/bubble-wrap.gemspec +2 -2
- data/lib/bubble-wrap/ext/motion_project_app.rb +17 -3
- data/lib/bubble-wrap/loader.rb +20 -0
- data/lib/bubble-wrap/ui.rb +0 -1
- data/lib/bubble-wrap/version.rb +1 -1
- data/motion/core/kvo.rb +4 -1
- data/motion/location/location.rb +17 -1
- data/motion/reactor/eventable.rb +14 -5
- data/spec/motion/core/kvo_spec.rb +38 -21
- data/spec/motion/core_spec.rb +1 -1
- data/spec/motion/location/location_spec.rb +8 -0
- data/spec/motion/reactor/eventable_spec.rb +15 -0
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: faee2e15d6887fcd2cdb83c67b5cc2a62a421624
|
4
|
+
data.tar.gz: 2689f157cacaef27b81b313fff35803f78f8ea88
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9dcf5e4a7c790d9908499f9a0caafbfec344b264ff150741e2d86ad306f4b22ffe6335cdf552c1a6c2b4638b0e74771b705735b9315fbb54c3817c65d0cd8f3e
|
7
|
+
data.tar.gz: d1f7d8a3a0c0765c3da1ce7760b60ba2f55499b963e791c8df4ecec4d2587e3c3a6ee1dfb15a1c393efa557c7b1527b3079b5e8a74cc52b57be551d804327f12
|
data/Gemfile.lock
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
bubble-wrap (1.7.
|
5
|
-
bubble-wrap-http (= 1.7.
|
4
|
+
bubble-wrap (1.7.1)
|
5
|
+
bubble-wrap-http (= 1.7.1)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
10
|
bacon (1.1.0)
|
11
|
-
bubble-wrap-http (1.7.
|
11
|
+
bubble-wrap-http (1.7.1)
|
12
12
|
metaclass (0.0.1)
|
13
13
|
mocha (0.11.4)
|
14
14
|
metaclass (~> 0.0.1)
|
data/README.md
CHANGED
data/bubble-wrap.gemspec
CHANGED
@@ -4,8 +4,8 @@ require File.expand_path('../lib/bubble-wrap/version', __FILE__)
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
5
|
gem.authors = ['Matt Aimonetti', 'Francis Chong', 'James Harton', 'Clay Allsopp', 'Dylan Markow', 'Jan Weinkauff', 'Marin Usalj']
|
6
6
|
gem.email = ['mattaimonetti@gmail.com', 'francis@ignition.hk', 'james@sociable.co.nz', 'clay.allsopp@gmail.com', 'dylan@dylanmarkow.com', 'jan@dreimannzelt.de', 'mneorr@gmail.com']
|
7
|
-
gem.description = 'RubyMotion wrappers and helpers (Ruby for iOS) - Making Cocoa APIs more Ruby like, one API at a time. Fork away and send your pull request.'
|
8
|
-
gem.summary = 'RubyMotion wrappers and helpers (Ruby for iOS) - Making Cocoa APIs more Ruby like, one API at a time. Fork away and send your pull request.'
|
7
|
+
gem.description = 'RubyMotion wrappers and helpers (Ruby for iOS and OS X) - Making Cocoa APIs more Ruby like, one API at a time. Fork away and send your pull request.'
|
8
|
+
gem.summary = 'RubyMotion wrappers and helpers (Ruby for iOS and OS X) - Making Cocoa APIs more Ruby like, one API at a time. Fork away and send your pull request.'
|
9
9
|
gem.homepage = 'http://rubymotion.github.io/BubbleWrap/'
|
10
10
|
|
11
11
|
gem.files = `git ls-files`.split($\)
|
@@ -6,9 +6,7 @@ module BubbleWrap
|
|
6
6
|
base.instance_eval do
|
7
7
|
def setup_with_bubblewrap(*args, &block)
|
8
8
|
bw_config = proc do |app|
|
9
|
-
|
10
|
-
app.files_dependencies ::BubbleWrap::Requirement.files_dependencies
|
11
|
-
app.frameworks = ::BubbleWrap::Requirement.frameworks(app.frameworks)
|
9
|
+
::BubbleWrap.before_config(app)
|
12
10
|
block.call(app) unless block.nil?
|
13
11
|
end
|
14
12
|
|
@@ -21,6 +19,20 @@ module BubbleWrap
|
|
21
19
|
|
22
20
|
end
|
23
21
|
|
22
|
+
module Config
|
23
|
+
def config_with_bubblewrap
|
24
|
+
config_without_bubblewrap.tap do |c|
|
25
|
+
::BubbleWrap.after_config(c)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.extended(base)
|
30
|
+
singleton_class = class << base; self; end
|
31
|
+
singleton_class.send :alias_method, :config_without_bubblewrap, :config
|
32
|
+
singleton_class.send :alias_method, :config, :config_with_bubblewrap
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
24
36
|
module Platforms
|
25
37
|
def osx?
|
26
38
|
self.respond_to?(:template) && self.template == :osx
|
@@ -32,3 +44,5 @@ end
|
|
32
44
|
Motion::Project::App.extend(BubbleWrap::Ext::BuildTask)
|
33
45
|
|
34
46
|
Motion::Project::App.extend(BubbleWrap::Ext::Platforms)
|
47
|
+
|
48
|
+
Motion::Project::App.extend(BubbleWrap::Ext::Config)
|
data/lib/bubble-wrap/loader.rb
CHANGED
@@ -39,6 +39,26 @@ unless defined?(BubbleWrap::LOADER_PRESENT)
|
|
39
39
|
puts "bubble-wrap/#{requirement} requires OS X to use." if requirement
|
40
40
|
end
|
41
41
|
end
|
42
|
+
|
43
|
+
def before_config(app)
|
44
|
+
app.files = ::BubbleWrap::Requirement.files(app.files)
|
45
|
+
app.files_dependencies ::BubbleWrap::Requirement.files_dependencies
|
46
|
+
app.frameworks = ::BubbleWrap::Requirement.frameworks(app.frameworks)
|
47
|
+
end
|
48
|
+
|
49
|
+
def after_config(config)
|
50
|
+
BubbleWrap.require_ios do
|
51
|
+
ios7_files = 'motion/ios/7/uiactivity_view_controller_constants.rb'
|
52
|
+
if config.send(:deployment_target).to_f >= 7.0
|
53
|
+
::BubbleWrap.require(ios7_files)
|
54
|
+
before_config(config)
|
55
|
+
else
|
56
|
+
config.files = config.files.reject {|s|
|
57
|
+
s.include?(ios7_files)
|
58
|
+
}
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
42
62
|
end
|
43
63
|
|
44
64
|
BW = BubbleWrap unless defined?(BW)
|
data/lib/bubble-wrap/ui.rb
CHANGED
@@ -2,7 +2,6 @@ require 'bubble-wrap/loader'
|
|
2
2
|
|
3
3
|
BubbleWrap.require_ios("ui") do
|
4
4
|
BubbleWrap.require('motion/util/constants.rb')
|
5
|
-
BubbleWrap.require('motion/ios/7/uiactivity_view_controller_constants.rb') if App.config.send(:deployment_target).to_f >= 7.0
|
6
5
|
BubbleWrap.require('motion/ui/**/*.rb') do
|
7
6
|
file('motion/ui/pollute.rb').depends_on %w(
|
8
7
|
motion/ui/ui_control_wrapper.rb
|
data/lib/bubble-wrap/version.rb
CHANGED
data/motion/core/kvo.rb
CHANGED
@@ -53,7 +53,7 @@ module BubbleWrap
|
|
53
53
|
@targets.each do |target, key_paths|
|
54
54
|
key_paths.each_key do |key_path|
|
55
55
|
target.removeObserver(self, forKeyPath:key_path)
|
56
|
-
end
|
56
|
+
end
|
57
57
|
end
|
58
58
|
remove_all_observer_blocks
|
59
59
|
end
|
@@ -81,6 +81,9 @@ module BubbleWrap
|
|
81
81
|
|
82
82
|
key_paths = @targets[target]
|
83
83
|
key_paths.delete(key_path.to_s) if !key_paths.nil?
|
84
|
+
if key_paths.nil? || key_paths.length == 0
|
85
|
+
@targets.delete(target)
|
86
|
+
end
|
84
87
|
end
|
85
88
|
|
86
89
|
def remove_all_observer_blocks
|
data/motion/location/location.rb
CHANGED
@@ -28,6 +28,8 @@ module BubbleWrap
|
|
28
28
|
module_function
|
29
29
|
# Start getting locations
|
30
30
|
# @param [Hash] options = {
|
31
|
+
# authorization_type: :always/:when_in_use to trigger the type of authorization you want
|
32
|
+
# default == uses :always
|
31
33
|
# significant: true/false; whether to listen for significant location changes or
|
32
34
|
# all location changes (see Apple docs for info); default == false
|
33
35
|
# distance_filter: minimum change in distance to be updated about, in meters;
|
@@ -37,6 +39,7 @@ module BubbleWrap
|
|
37
39
|
# :hundred_meters, :kilometer, or :three_kilometers; default == :best
|
38
40
|
# purpose: string to display when the system asks user for location,
|
39
41
|
# retries: if location cant be found. how many errors do we retry; default == 5
|
42
|
+
# calibration: if the OS should display the heading calibration to the user; default == false
|
40
43
|
# }
|
41
44
|
# @block for callback. takes one argument, `result`.
|
42
45
|
# - On error or cancelled, is called with a hash {error: BW::Location::Error::<Type>}
|
@@ -52,11 +55,13 @@ module BubbleWrap
|
|
52
55
|
@callback = block
|
53
56
|
@callback.weak! if @callback && BubbleWrap.use_weak_callbacks?
|
54
57
|
@options = {
|
58
|
+
authorization_type: :always,
|
55
59
|
significant: false,
|
56
60
|
distance_filter: KCLDistanceFilterNone,
|
57
61
|
desired_accuracy: KCLLocationAccuracyBest,
|
58
62
|
retries: 5,
|
59
|
-
once: false
|
63
|
+
once: false,
|
64
|
+
calibration: false
|
60
65
|
}.merge(options)
|
61
66
|
|
62
67
|
@options[:significant] = false if @options[:significant].nil?
|
@@ -66,6 +71,13 @@ module BubbleWrap
|
|
66
71
|
error(Error::DISABLED) and return
|
67
72
|
end
|
68
73
|
|
74
|
+
self.location_manager
|
75
|
+
|
76
|
+
if self.location_manager.respondsToSelector('requestAlwaysAuthorization')
|
77
|
+
@options[:authorization_type] == :always ? self.location_manager.requestAlwaysAuthorization : self.location_manager.requestWhenInUseAuthorization
|
78
|
+
end
|
79
|
+
|
80
|
+
|
69
81
|
self.location_manager.distanceFilter = @options[:distance_filter]
|
70
82
|
self.location_manager.desiredAccuracy = Constants.get("KCLLocationAccuracy", @options[:desired_accuracy])
|
71
83
|
self.location_manager.purpose = @options[:purpose] if @options[:purpose]
|
@@ -212,6 +224,10 @@ module BubbleWrap
|
|
212
224
|
error(Error::PERMISSION_DENIED)
|
213
225
|
end
|
214
226
|
end
|
227
|
+
|
228
|
+
def locationManagerShouldDisplayHeadingCalibration(manager)
|
229
|
+
@options[:calibration] ? @options[:calibration] : false
|
230
|
+
end
|
215
231
|
end
|
216
232
|
end
|
217
233
|
::Location = BubbleWrap::Location unless defined?(::Location)
|
data/motion/reactor/eventable.rb
CHANGED
@@ -7,21 +7,26 @@ module BubbleWrap
|
|
7
7
|
# and be passed the arguments that are passed to
|
8
8
|
# `trigger`.
|
9
9
|
def on(event, method = nil, &blk)
|
10
|
+
events = _events_for_key(event)
|
10
11
|
method_or_block = method ? method : blk
|
11
|
-
|
12
|
+
events.push method_or_block
|
12
13
|
end
|
13
14
|
|
14
15
|
# When `event` is triggered, do not call the given
|
15
16
|
# block any more
|
16
17
|
def off(event, method = nil, &blk)
|
17
|
-
|
18
|
-
|
18
|
+
events = _events_for_key(event)
|
19
|
+
if method
|
20
|
+
events.delete_if { |m| m.receiver == method.receiver and m.name == method.name }
|
21
|
+
else
|
22
|
+
events.delete_if { |b| b == blk }
|
23
|
+
end
|
19
24
|
blk
|
20
25
|
end
|
21
26
|
|
22
27
|
# Trigger an event
|
23
28
|
def trigger(event, *args)
|
24
|
-
blks =
|
29
|
+
blks = _events_for_key(event).clone
|
25
30
|
blks.map do |blk|
|
26
31
|
blk.call(*args)
|
27
32
|
end
|
@@ -30,7 +35,11 @@ module BubbleWrap
|
|
30
35
|
private
|
31
36
|
|
32
37
|
def __events__
|
33
|
-
@__events__ ||= Hash.new
|
38
|
+
@__events__ ||= Hash.new
|
39
|
+
end
|
40
|
+
|
41
|
+
def _events_for_key(event)
|
42
|
+
__events__[event] ||= Array.new
|
34
43
|
end
|
35
44
|
end
|
36
45
|
end
|
@@ -100,7 +100,7 @@ describe BubbleWrap::KVO do
|
|
100
100
|
@example.send(:remove_observer_block, nil, "key_path")
|
101
101
|
@example.send(:registered?, target, "key_path").should == true
|
102
102
|
end
|
103
|
-
|
103
|
+
|
104
104
|
it "should not remove an observer block if the key path is not present" do
|
105
105
|
target = Object.new
|
106
106
|
block = lambda { |old_value, new_value| }
|
@@ -108,7 +108,7 @@ describe BubbleWrap::KVO do
|
|
108
108
|
@example.send(:remove_observer_block, target, nil)
|
109
109
|
@example.send(:registered?, target, "key_path").should == true
|
110
110
|
end
|
111
|
-
|
111
|
+
|
112
112
|
it "should remove only one observer block" do
|
113
113
|
target = Object.new
|
114
114
|
block = lambda { |old_value, new_value| }
|
@@ -118,9 +118,9 @@ describe BubbleWrap::KVO do
|
|
118
118
|
@example.send(:registered?, target, "key_path1").should == false
|
119
119
|
@example.send(:registered?, target, "key_path2").should == true
|
120
120
|
end
|
121
|
-
|
121
|
+
|
122
122
|
# remove all
|
123
|
-
|
123
|
+
|
124
124
|
it "should remove all observer blocks" do
|
125
125
|
target = Object.new
|
126
126
|
block = lambda { |old_value, new_value| }
|
@@ -128,21 +128,38 @@ describe BubbleWrap::KVO do
|
|
128
128
|
@example.send(:add_observer_block, target, "key_path2", &block)
|
129
129
|
@example.send(:remove_all_observer_blocks)
|
130
130
|
@example.send(:registered?, target, "key_path1").should == false
|
131
|
-
@example.send(:registered?, target, "key_path2").should == false
|
131
|
+
@example.send(:registered?, target, "key_path2").should == false
|
132
|
+
end
|
133
|
+
|
134
|
+
it "should remove target from targets if no observers remain" do
|
135
|
+
target = Object.new
|
136
|
+
block = lambda { |old_value, new_value| }
|
137
|
+
@example.send(:add_observer_block, target, "key_path", &block)
|
138
|
+
@example.send(:remove_observer_block, target, "key_path")
|
139
|
+
@example.instance_variable_get(:@targets).length.should == 0
|
140
|
+
end
|
141
|
+
|
142
|
+
it "should not remove target from targets if observers remain" do
|
143
|
+
target = Object.new
|
144
|
+
block = lambda { |old_value, new_value| }
|
145
|
+
@example.send(:add_observer_block, target, "key_path1", &block)
|
146
|
+
@example.send(:add_observer_block, target, "key_path2", &block)
|
147
|
+
@example.send(:remove_observer_block, target, "key_path1")
|
148
|
+
@example.instance_variable_get(:@targets).length.should > 0
|
132
149
|
end
|
133
|
-
|
150
|
+
|
134
151
|
end
|
135
|
-
|
152
|
+
|
136
153
|
describe "API" do
|
137
154
|
before do
|
138
155
|
@example = KvoExample.new
|
139
156
|
end
|
140
|
-
|
157
|
+
|
141
158
|
after do
|
142
159
|
@example.unobserve_all
|
143
160
|
@example = nil
|
144
161
|
end
|
145
|
-
|
162
|
+
|
146
163
|
# observe
|
147
164
|
|
148
165
|
it "should observe a key path" do
|
@@ -152,11 +169,11 @@ describe BubbleWrap::KVO do
|
|
152
169
|
old_value.should == "Foo"
|
153
170
|
new_value.should == "Bar"
|
154
171
|
end
|
155
|
-
|
172
|
+
|
156
173
|
@example.set_text "Bar"
|
157
174
|
observed.should == true
|
158
175
|
end
|
159
|
-
|
176
|
+
|
160
177
|
it "should observe a key path with more than one block" do
|
161
178
|
observed_one = false
|
162
179
|
observed_two = false
|
@@ -170,22 +187,22 @@ describe BubbleWrap::KVO do
|
|
170
187
|
@example.observe_label do |old_value, new_value|
|
171
188
|
observed_three = true
|
172
189
|
end
|
173
|
-
|
190
|
+
|
174
191
|
@example.set_text "Bar"
|
175
192
|
observed_one.should == true
|
176
193
|
observed_two.should == true
|
177
194
|
observed_three.should == true
|
178
195
|
end
|
179
|
-
|
196
|
+
|
180
197
|
# unobserve
|
181
|
-
|
198
|
+
|
182
199
|
it "should unobserve a key path" do
|
183
200
|
observed = false
|
184
201
|
@example.observe_label do |old_value, new_value|
|
185
202
|
observed = true
|
186
203
|
end
|
187
204
|
@example.unobserve_label
|
188
|
-
|
205
|
+
|
189
206
|
@example.set_text "Bar"
|
190
207
|
observed.should == false
|
191
208
|
end
|
@@ -199,7 +216,7 @@ describe BubbleWrap::KVO do
|
|
199
216
|
old_value.should == 1
|
200
217
|
new_value.should == 2
|
201
218
|
end
|
202
|
-
|
219
|
+
|
203
220
|
@example.age = 2
|
204
221
|
observed.should == true
|
205
222
|
end
|
@@ -210,13 +227,13 @@ describe BubbleWrap::KVO do
|
|
210
227
|
observed = true
|
211
228
|
end
|
212
229
|
@example.unobserve :age
|
213
|
-
|
230
|
+
|
214
231
|
@example.age = 2
|
215
232
|
observed.should == false
|
216
233
|
end
|
217
|
-
|
234
|
+
|
218
235
|
end
|
219
|
-
|
236
|
+
|
220
237
|
=begin
|
221
238
|
it "should be able to observe a collection" do
|
222
239
|
observed = false
|
@@ -224,9 +241,9 @@ describe BubbleWrap::KVO do
|
|
224
241
|
puts "#{collection} #{old_value} #{new_value} #{indexes}"
|
225
242
|
observed = true
|
226
243
|
end
|
227
|
-
|
244
|
+
|
228
245
|
@example.items << "Dragonfruit"
|
229
|
-
observed.should == true
|
246
|
+
observed.should == true
|
230
247
|
end
|
231
248
|
=end
|
232
249
|
|
data/spec/motion/core_spec.rb
CHANGED
@@ -176,6 +176,7 @@ describe BubbleWrap::Location do
|
|
176
176
|
end
|
177
177
|
|
178
178
|
location_manager.instance_variable_get("@startUpdatingHeading").should == true
|
179
|
+
BW::Location.locationManagerShouldDisplayHeadingCalibration(location_manager).should == false
|
179
180
|
end
|
180
181
|
|
181
182
|
it "should have correct heading when succeeding" do
|
@@ -196,6 +197,13 @@ describe BubbleWrap::Location do
|
|
196
197
|
|
197
198
|
BW::Location.locationManager(location_manager, didUpdateHeading: heading)
|
198
199
|
end
|
200
|
+
|
201
|
+
it "should show the calibration screen when needed" do
|
202
|
+
BW::Location.get_compass(calibration: true) do |result|
|
203
|
+
end
|
204
|
+
|
205
|
+
BW::Location.locationManagerShouldDisplayHeadingCalibration(location_manager).should == true
|
206
|
+
end
|
199
207
|
end
|
200
208
|
|
201
209
|
describe ".get_significant" do
|
@@ -48,6 +48,21 @@ describe BubbleWrap::Reactor::Eventable do
|
|
48
48
|
events[:foo].member?(proof).should == false
|
49
49
|
end
|
50
50
|
|
51
|
+
it 'unregisters method events after kvo' do
|
52
|
+
observing_object = Class.new do
|
53
|
+
include BubbleWrap::KVO
|
54
|
+
end.new
|
55
|
+
|
56
|
+
@subject.on(:foo, @subject.method(:description))
|
57
|
+
block = lambda { |old_value, new_value| }
|
58
|
+
observing_object.observe(@subject, :cool_variable, &block)
|
59
|
+
@subject.off(:foo, @subject.method(:description))
|
60
|
+
|
61
|
+
events = @subject.instance_variable_get(:@__events__)
|
62
|
+
events[:foo].length.should == 0
|
63
|
+
observing_object.unobserve_all
|
64
|
+
end
|
65
|
+
|
51
66
|
it 'calls other event procs when a proc unregisters itself' do
|
52
67
|
@proxy.proof = 0
|
53
68
|
proof1 = proc do |r|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bubble-wrap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.7.
|
4
|
+
version: 1.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Aimonetti
|
@@ -14,7 +14,7 @@ authors:
|
|
14
14
|
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
|
-
date: 2014-
|
17
|
+
date: 2014-08-29 00:00:00.000000000 Z
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: bubble-wrap-http
|
@@ -22,14 +22,14 @@ dependencies:
|
|
22
22
|
requirements:
|
23
23
|
- - '='
|
24
24
|
- !ruby/object:Gem::Version
|
25
|
-
version: 1.7.
|
25
|
+
version: 1.7.1
|
26
26
|
type: :runtime
|
27
27
|
prerelease: false
|
28
28
|
version_requirements: !ruby/object:Gem::Requirement
|
29
29
|
requirements:
|
30
30
|
- - '='
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 1.7.
|
32
|
+
version: 1.7.1
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: mocha
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,8 +86,8 @@ dependencies:
|
|
86
86
|
- - '>='
|
87
87
|
- !ruby/object:Gem::Version
|
88
88
|
version: '0'
|
89
|
-
description: RubyMotion wrappers and helpers (Ruby for iOS) - Making Cocoa
|
90
|
-
Ruby like, one API at a time. Fork away and send your pull request.
|
89
|
+
description: RubyMotion wrappers and helpers (Ruby for iOS and OS X) - Making Cocoa
|
90
|
+
APIs more Ruby like, one API at a time. Fork away and send your pull request.
|
91
91
|
email:
|
92
92
|
- mattaimonetti@gmail.com
|
93
93
|
- francis@ignition.hk
|
@@ -395,8 +395,8 @@ rubyforge_project:
|
|
395
395
|
rubygems_version: 2.0.3
|
396
396
|
signing_key:
|
397
397
|
specification_version: 4
|
398
|
-
summary: RubyMotion wrappers and helpers (Ruby for iOS) - Making Cocoa APIs
|
399
|
-
like, one API at a time. Fork away and send your pull request.
|
398
|
+
summary: RubyMotion wrappers and helpers (Ruby for iOS and OS X) - Making Cocoa APIs
|
399
|
+
more Ruby like, one API at a time. Fork away and send your pull request.
|
400
400
|
test_files:
|
401
401
|
- spec/lib/bubble-wrap/ext/motion_project_app_spec.rb
|
402
402
|
- spec/lib/bubble-wrap/ext/motion_project_config_spec.rb
|