bubble-wrap 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. data/.gitignore +0 -1
  2. data/.yardopts +2 -0
  3. data/CHANGELOG.md +15 -0
  4. data/Gemfile +1 -1
  5. data/Gemfile.lock +24 -0
  6. data/HACKING.md +2 -2
  7. data/README.md +363 -21
  8. data/Rakefile +6 -2
  9. data/lib/bubble-wrap.rb +0 -1
  10. data/lib/bubble-wrap/all.rb +4 -0
  11. data/lib/bubble-wrap/camera.rb +7 -0
  12. data/lib/bubble-wrap/core.rb +3 -2
  13. data/lib/bubble-wrap/ext/motion_project_app.rb +2 -2
  14. data/lib/bubble-wrap/http.rb +1 -0
  15. data/lib/bubble-wrap/loader.rb +19 -12
  16. data/lib/bubble-wrap/location.rb +6 -0
  17. data/lib/bubble-wrap/reactor.rb +10 -0
  18. data/lib/bubble-wrap/requirement.rb +11 -3
  19. data/lib/bubble-wrap/rss_parser.rb +2 -0
  20. data/lib/bubble-wrap/ui.rb +4 -0
  21. data/lib/bubble-wrap/version.rb +1 -1
  22. data/motion/core.rb +8 -2
  23. data/motion/core/app.rb +34 -6
  24. data/motion/core/device.rb +10 -1
  25. data/motion/core/device/camera.rb +219 -0
  26. data/motion/core/device/camera_wrapper.rb +45 -0
  27. data/motion/core/ns_url_request.rb +10 -0
  28. data/motion/core/persistence.rb +7 -0
  29. data/motion/core/pollute.rb +1 -2
  30. data/motion/core/string.rb +23 -0
  31. data/motion/http.rb +142 -83
  32. data/motion/location/location.rb +152 -0
  33. data/motion/location/pollute.rb +5 -0
  34. data/motion/reactor.rb +105 -0
  35. data/motion/reactor/default_deferrable.rb +9 -0
  36. data/motion/reactor/deferrable.rb +126 -0
  37. data/motion/reactor/eventable.rb +24 -0
  38. data/motion/reactor/future.rb +22 -0
  39. data/motion/reactor/periodic_timer.rb +27 -0
  40. data/motion/reactor/queue.rb +60 -0
  41. data/motion/reactor/timer.rb +25 -0
  42. data/motion/rss_parser.rb +131 -0
  43. data/motion/shortcut.rb +18 -0
  44. data/motion/{core → ui}/gestures.rb +15 -9
  45. data/motion/ui/pollute.rb +5 -0
  46. data/motion/{core → ui}/ui_control.rb +0 -0
  47. data/motion/{core → ui}/ui_view_controller.rb +0 -0
  48. data/resources/atom.xml +1705 -0
  49. data/spec/lib/bubble-wrap/ext/motion_project_app_spec.rb +7 -11
  50. data/spec/lib/bubble-wrap/requirement_spec.rb +4 -4
  51. data/spec/lib/bubble-wrap_spec.rb +2 -2
  52. data/spec/motion/core/app_spec.rb +118 -14
  53. data/spec/motion/core/device/camera_spec.rb +130 -0
  54. data/spec/motion/core/device/camera_wrapper_spec.rb +45 -0
  55. data/spec/motion/core/device_spec.rb +0 -50
  56. data/spec/motion/core/gestures_spec.rb +5 -0
  57. data/spec/motion/core/persistence_spec.rb +24 -2
  58. data/spec/motion/core/string_spec.rb +55 -0
  59. data/spec/motion/core_spec.rb +72 -1
  60. data/spec/motion/http_spec.rb +100 -65
  61. data/spec/motion/location/location_spec.rb +152 -0
  62. data/spec/motion/reactor/eventable_spec.rb +40 -0
  63. data/spec/motion/reactor_spec.rb +163 -0
  64. data/spec/motion/rss_parser_spec.rb +36 -0
  65. metadata +75 -16
@@ -0,0 +1,152 @@
1
+ describe "CLLocationWrap" do
2
+ it "should have correct values for lat and lng" do
3
+ coordinate = CLLocation.alloc.initWithLatitude(100, longitude: 50)
4
+ coordinate.latitude.should == 100
5
+ coordinate.longitude.should == 50
6
+ end
7
+ end
8
+
9
+ # monkey patch for testing
10
+ class CLLocationManager
11
+ def self.enable(enable)
12
+ @enabled = enable
13
+ end
14
+
15
+ def self.locationServicesEnabled
16
+ return true if @enabled.nil?
17
+ @enabled
18
+ end
19
+
20
+ def startUpdatingLocation
21
+ @startUpdatingLocation = true
22
+ end
23
+
24
+ def stopUpdatingLocation
25
+ @stopUpdatingLocation = true
26
+ end
27
+
28
+ def startMonitoringSignificantLocationChanges
29
+ @startMonitoringSignificantLocationChanges = true
30
+ end
31
+
32
+ def stopMonitoringSignificantLocationChanges
33
+ @stopMonitoringSignificantLocationChanges = true
34
+ end
35
+ end
36
+
37
+ def location_manager
38
+ BW::Location.instance_variable_get("@location_manager")
39
+ end
40
+
41
+ def reset
42
+ CLLocationManager.enable(true)
43
+ BW::Location.instance_variable_set("@callback", nil)
44
+ BW::Location.instance_variable_set("@location_manager", nil)
45
+ end
46
+
47
+ describe BubbleWrap::Location do
48
+ describe ".get" do
49
+ before do
50
+ reset
51
+ end
52
+
53
+ it "should set purpose using hash" do
54
+ BW::Location.get(purpose: "test") do |result|
55
+ end
56
+
57
+ location_manager.purpose.should == "test"
58
+ end
59
+
60
+ it "should throw error if not enabled" do
61
+ CLLocationManager.enable(false)
62
+
63
+ BW::Location.get do |result|
64
+ result[:error].should == BW::Location::Error::DISABLED
65
+ end
66
+ end
67
+
68
+ it "should throw error if permission denied" do
69
+ BW::Location.get do |result|
70
+ result[:error].should == BW::Location::Error::PERMISSION_DENIED
71
+ end
72
+
73
+ error = NSError.errorWithDomain(KCLErrorDomain, code: KCLErrorDenied, userInfo: nil)
74
+ BW::Location.locationManager(location_manager, didFailWithError: error)
75
+ end
76
+
77
+ it "should use significant update functions with :significant param" do
78
+ BW::Location.get(significant: true) do |result|
79
+ end
80
+
81
+ location_manager.instance_variable_get("@startMonitoringSignificantLocationChanges").should == true
82
+ end
83
+
84
+ it "should use normal update functions" do
85
+ BW::Location.get do |result|
86
+ end
87
+
88
+ location_manager.instance_variable_get("@startUpdatingLocation").should == true
89
+ end
90
+
91
+ it "should have correct location when succeeding" do
92
+ to = CLLocation.alloc.initWithLatitude(100, longitude: 50)
93
+ from = CLLocation.alloc.initWithLatitude(100, longitude: 49)
94
+
95
+ BW::Location.get do |result|
96
+ result[:to].longitude.should == 50
97
+ result[:from].longitude.should == 49
98
+ end
99
+
100
+ BW::Location.locationManager(location_manager, didUpdateToLocation: to, fromLocation: from)
101
+ end
102
+ end
103
+
104
+ describe ".get_significant" do
105
+ before do
106
+ reset
107
+ end
108
+
109
+ it "should use significant changes functions" do
110
+ BW::Location.get_significant do |result|
111
+ end
112
+
113
+ location_manager.instance_variable_get("@startMonitoringSignificantLocationChanges").should == true
114
+ end
115
+
116
+ it "should have correct location when succeeding" do
117
+ to = CLLocation.alloc.initWithLatitude(100, longitude: 50)
118
+ from = CLLocation.alloc.initWithLatitude(100, longitude: 49)
119
+
120
+ BW::Location.get_significant do |result|
121
+ result[:to].longitude.should == 50
122
+ result[:from].longitude.should == 49
123
+ end
124
+
125
+ BW::Location.locationManager(location_manager, didUpdateToLocation: to, fromLocation: from)
126
+ end
127
+ end
128
+
129
+ describe ".stop" do
130
+ before do
131
+ reset
132
+ end
133
+
134
+ it "should use normal update functions" do
135
+ BW::Location.get do |result|
136
+ end
137
+
138
+ BW::Location.stop
139
+
140
+ location_manager.instance_variable_get("@stopUpdatingLocation").should == true
141
+ end
142
+
143
+ it "should use significant update functions with get_significant" do
144
+ BW::Location.get_significant do |result|
145
+ end
146
+
147
+ BW::Location.stop
148
+
149
+ location_manager.instance_variable_get("@stopMonitoringSignificantLocationChanges").should == true
150
+ end
151
+ end
152
+ end
@@ -0,0 +1,40 @@
1
+ describe BubbleWrap::Reactor::Eventable do
2
+ before do
3
+ @subject = Class.new do
4
+ include BubbleWrap::Reactor::Eventable
5
+ end.new
6
+ @proxy = Class.new do
7
+ attr_accessor :proof
8
+ end.new
9
+ end
10
+
11
+ describe '.on' do
12
+ it 'registers events' do
13
+ proof = proc { }
14
+ @subject.on(:foo, &proof)
15
+ events = @subject.instance_variable_get(:@events)
16
+ events[:foo].member?(proof).should == true
17
+ end
18
+ end
19
+
20
+ describe '.trigger' do
21
+ it 'calls event procs' do
22
+ @proxy.proof = false
23
+ @subject.on(:foo) do |r|
24
+ @proxy.proof = r
25
+ end
26
+ @subject.trigger(:foo, true)
27
+ @proxy.proof.should == true
28
+ end
29
+
30
+ it 'calls all the event procs' do
31
+ @proxy.proof = 0
32
+ @subject.on(:foo) { |r| @proxy.proof += r }
33
+ @subject.on(:foo) { |r| @proxy.proof += r }
34
+ @subject.on(:foo) { |r| @proxy.proof += r }
35
+ @subject.trigger(:foo, 2)
36
+ @proxy.proof.should == 6
37
+ end
38
+ end
39
+
40
+ end
@@ -0,0 +1,163 @@
1
+ describe BubbleWrap::Reactor do
2
+ before do
3
+ @subject = ::BubbleWrap::Reactor
4
+ @proxy = Class.new do
5
+ attr_accessor :proof
6
+ end.new
7
+ end
8
+
9
+ describe 'slavish EventMachine compatibility' do
10
+ describe '.reactor_running?' do
11
+ it 'returns true' do
12
+ @subject.reactor_running?.should == true
13
+ end
14
+ end
15
+
16
+ describe '.reactor_thread?' do
17
+ it 'returns true' do
18
+ @subject.reactor_running?.should == true
19
+ end
20
+ end
21
+ end
22
+
23
+ describe '.add_timer' do
24
+ it 'schedules and executes timers' do
25
+ @proxy.proof = false
26
+ @subject.add_timer 0.5 do
27
+ @proxy.proof = true
28
+ end
29
+ wait_for_change @proxy, 'proof' do
30
+ @proxy.proof.should == true
31
+ end
32
+ end
33
+
34
+ it 'only runs the callback once' do
35
+ @proxy.proof = 0
36
+ @subject.add_timer 0.1 do
37
+ @proxy.proof = @proxy.proof + 1
38
+ end
39
+ wait 1 do
40
+ @proxy.proof.should == 1
41
+ end
42
+ end
43
+ end
44
+
45
+ describe '.add_periodic_timer' do
46
+ it 'runs callbacks repeatedly' do
47
+ @proxy.proof = 0
48
+ timer = @subject.add_periodic_timer 0.5 do
49
+ @proxy.proof = @proxy.proof + 1
50
+ @subject.cancel_timer(timer) if @proxy.proof > 2
51
+ end
52
+ wait 1.1 do
53
+ @proxy.proof.should >= 2
54
+ end
55
+ end
56
+ end
57
+
58
+ describe '.cancel_timer' do
59
+ it 'cancels timers' do
60
+ @proxy.proof = true
61
+ timer = @subject.add_timer 10.0 do
62
+ @proxy.proof = false
63
+ end
64
+ @subject.cancel_timer(timer)
65
+ @proxy.proof.should == true
66
+ end
67
+
68
+ it 'cancels periodic timers' do
69
+ @proxy.proof = true
70
+ timer = @subject.add_periodic_timer 10.0 do
71
+ @proxy.proof = false
72
+ end
73
+ @subject.cancel_timer(timer)
74
+ @proxy.proof.should == true
75
+ end
76
+ end
77
+
78
+ describe '.defer' do
79
+ it 'defers the operation' do
80
+ @proxy.proof = false
81
+ @subject.defer do
82
+ @proxy.proof = true
83
+ end
84
+ @proxy.proof.should == false
85
+ wait 0.5 do
86
+ @proxy.proof.should == true
87
+ end
88
+ end
89
+
90
+ it 'calls the callback after the operation finishes' do
91
+ @proxy.proof = false
92
+ cb = proc do |result|
93
+ @proxy.proof = result
94
+ end
95
+ op = proc do
96
+ true
97
+ end
98
+ @subject.defer(op,cb)
99
+ wait 0.5 do
100
+ @proxy.proof.should == true
101
+ end
102
+ end
103
+ end
104
+
105
+ describe '.schedule' do
106
+ it 'defers the operation' do
107
+ @proxy.proof = false
108
+ @subject.schedule do
109
+ @proxy.proof = true
110
+ end
111
+ @proxy.proof.should == false
112
+ wait 0.5 do
113
+ @proxy.proof.should == true
114
+ end
115
+ end
116
+
117
+ # I wish these specs would run, but they kill RubyMotion. *sad face*
118
+
119
+ # it 'runs the operation on the reactor queue' do
120
+ # @proxy.proof = false
121
+ # @subject.schedule do
122
+ # @proxy.proof = ::Reactor::Queue.current.to_s
123
+ # end
124
+ # wait 0.75 do
125
+ # @proxy.proof.should == "#{NSBundle.mainBundle.bundleIdentifier}.reactor"
126
+ # end
127
+ # end
128
+
129
+ # it 'runs the callback on the main queue' do
130
+ # @proxy.proof = false
131
+ # @subject.schedule do
132
+ # @proxy.proof = ::Reactor::Queue.current.to_s
133
+ # end
134
+ # wait 0.75 do
135
+ # @proxy.proof.should == ::Reactor::Queue.main.to_s
136
+ # end
137
+ # end
138
+ end
139
+
140
+ describe '.schedule_on_main' do
141
+ it 'defers the operation' do
142
+ @proxy.proof = false
143
+ @subject.schedule do
144
+ @proxy.proof = true
145
+ end
146
+ @proxy.proof.should == false
147
+ wait 0.5 do
148
+ @proxy.proof.should == true
149
+ end
150
+ end
151
+
152
+ # it 'runs the operation on the main queue' do
153
+ # @proxy.proof = false
154
+ # @subject.schedule do
155
+ # @proxy.proof = ::Reactor::Queue.current.to_s
156
+ # end
157
+ # wait 0.75 do
158
+ # @proxy.proof.should == ::Reactor::Queue.main.to_s
159
+ # end
160
+ # end
161
+ end
162
+
163
+ end
@@ -0,0 +1,36 @@
1
+ describe "RSSParser" do
2
+
3
+ before do
4
+ @feed_url = 'https://raw.github.com/gist/2952427/9f1522cbe5d77a72c7c96c4fdb4b77bd58d7681e/atom.xml'
5
+ @ns_url = NSURL.alloc.initWithString(@feed_url)
6
+ @local_feed = File.join(App.resources_path, 'atom.xml')
7
+ end
8
+
9
+ describe "initialization" do
10
+
11
+ it "works with a string representing an url" do
12
+ parser = BW::RSSParser.new(@feed_url)
13
+ parser.source.class.should.equal NSURL
14
+ parser.source.absoluteString.should.equal @feed_url
15
+ end
16
+
17
+ it "works with a NSURL instance" do
18
+ parser = BW::RSSParser.new(@ns_url)
19
+ parser.source.class.should.equal NSURL
20
+ parser.source.absoluteString.should.equal @feed_url
21
+ end
22
+
23
+ # it "works with some data" do
24
+ # feed_data_string = File.read(@local_feed)
25
+ # parser = BW::RSSParser.new(feed_data_string, true)
26
+ # parser.source.class.should.equal NSData
27
+ # parser.source.to_str.should.equal @feed_data_string
28
+ # parser = BW::RSSParser.new(@feed_data_string.to_data, true)
29
+ # parser.source.class.should.equal NSURL
30
+ # parser.source.class.should.equal NSData
31
+ # parser.source.to_str.should.equal @feed_data_string
32
+ # end
33
+ end
34
+
35
+ end
36
+
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.0.0
4
+ version: 1.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,11 +11,11 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-06-12 00:00:00.000000000 Z
14
+ date: 2012-07-11 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bacon
18
- requirement: &70246769796440 !ruby/object:Gem::Requirement
18
+ requirement: &70234673289720 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ! '>='
@@ -23,10 +23,10 @@ dependencies:
23
23
  version: '0'
24
24
  type: :development
25
25
  prerelease: false
26
- version_requirements: *70246769796440
26
+ version_requirements: *70234673289720
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mocha-on-bacon
29
- requirement: &70246769811720 !ruby/object:Gem::Requirement
29
+ requirement: &70234673289140 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ! '>='
@@ -34,10 +34,10 @@ dependencies:
34
34
  version: '0'
35
35
  type: :development
36
36
  prerelease: false
37
- version_requirements: *70246769811720
37
+ version_requirements: *70234673289140
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: rake
40
- requirement: &70246769810980 !ruby/object:Gem::Requirement
40
+ requirement: &70234673288260 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ! '>='
@@ -45,7 +45,7 @@ dependencies:
45
45
  version: '0'
46
46
  type: :development
47
47
  prerelease: false
48
- version_requirements: *70246769810980
48
+ version_requirements: *70234673288260
49
49
  description: RubyMotion wrappers and helpers (Ruby for iOS) - Making Cocoa APIs more
50
50
  Ruby like, one API at a time. Fork away and send your pull request.
51
51
  email:
@@ -60,25 +60,43 @@ extra_rdoc_files:
60
60
  - motion/core.rb
61
61
  - motion/core/app.rb
62
62
  - motion/core/device.rb
63
+ - motion/core/device/camera.rb
64
+ - motion/core/device/camera_wrapper.rb
63
65
  - motion/core/device/screen.rb
64
- - motion/core/gestures.rb
65
66
  - motion/core/json.rb
66
67
  - motion/core/kvo.rb
67
68
  - motion/core/ns_index_path.rb
68
69
  - motion/core/ns_notification_center.rb
70
+ - motion/core/ns_url_request.rb
69
71
  - motion/core/ns_user_defaults.rb
70
72
  - motion/core/persistence.rb
71
73
  - motion/core/pollute.rb
72
74
  - motion/core/string.rb
73
75
  - motion/core/time.rb
74
- - motion/core/ui_control.rb
75
- - motion/core/ui_view_controller.rb
76
76
  - motion/http.rb
77
+ - motion/location/location.rb
78
+ - motion/location/pollute.rb
79
+ - motion/reactor.rb
80
+ - motion/reactor/default_deferrable.rb
81
+ - motion/reactor/deferrable.rb
82
+ - motion/reactor/eventable.rb
83
+ - motion/reactor/future.rb
84
+ - motion/reactor/periodic_timer.rb
85
+ - motion/reactor/queue.rb
86
+ - motion/reactor/timer.rb
87
+ - motion/rss_parser.rb
88
+ - motion/shortcut.rb
77
89
  - motion/test_suite_delegate.rb
90
+ - motion/ui/gestures.rb
91
+ - motion/ui/pollute.rb
92
+ - motion/ui/ui_control.rb
93
+ - motion/ui/ui_view_controller.rb
78
94
  - spec/lib/bubble-wrap/ext/motion_project_app_spec.rb
79
95
  - spec/lib/bubble-wrap/ext/motion_project_config_spec.rb
80
96
  - spec/lib/motion_stub.rb
81
97
  - spec/motion/core/app_spec.rb
98
+ - spec/motion/core/device/camera_spec.rb
99
+ - spec/motion/core/device/camera_wrapper_spec.rb
82
100
  - spec/motion/core/device/screen_spec.rb
83
101
  - spec/motion/core/device_spec.rb
84
102
  - spec/motion/core/gestures_spec.rb
@@ -92,46 +110,75 @@ extra_rdoc_files:
92
110
  - spec/motion/core/ui_control_spec.rb
93
111
  - spec/motion/core_spec.rb
94
112
  - spec/motion/http_spec.rb
113
+ - spec/motion/location/location_spec.rb
114
+ - spec/motion/reactor/eventable_spec.rb
115
+ - spec/motion/reactor_spec.rb
116
+ - spec/motion/rss_parser_spec.rb
95
117
  files:
96
118
  - .gitignore
119
+ - .yardopts
97
120
  - CHANGELOG.md
98
121
  - GEM.md
99
122
  - GETTING_STARTED.md
100
123
  - Gemfile
124
+ - Gemfile.lock
101
125
  - HACKING.md
102
126
  - LICENSE
103
127
  - README.md
104
128
  - Rakefile
105
129
  - bubble-wrap.gemspec
106
130
  - lib/bubble-wrap.rb
131
+ - lib/bubble-wrap/all.rb
132
+ - lib/bubble-wrap/camera.rb
107
133
  - lib/bubble-wrap/core.rb
108
134
  - lib/bubble-wrap/ext.rb
109
135
  - lib/bubble-wrap/ext/motion_project_app.rb
110
136
  - lib/bubble-wrap/ext/motion_project_config.rb
111
137
  - lib/bubble-wrap/http.rb
112
138
  - lib/bubble-wrap/loader.rb
139
+ - lib/bubble-wrap/location.rb
140
+ - lib/bubble-wrap/reactor.rb
113
141
  - lib/bubble-wrap/requirement.rb
114
142
  - lib/bubble-wrap/requirement/path_manipulation.rb
143
+ - lib/bubble-wrap/rss_parser.rb
115
144
  - lib/bubble-wrap/test.rb
145
+ - lib/bubble-wrap/ui.rb
116
146
  - lib/bubble-wrap/version.rb
117
147
  - motion/core.rb
118
148
  - motion/core/app.rb
119
149
  - motion/core/device.rb
150
+ - motion/core/device/camera.rb
151
+ - motion/core/device/camera_wrapper.rb
120
152
  - motion/core/device/screen.rb
121
- - motion/core/gestures.rb
122
153
  - motion/core/json.rb
123
154
  - motion/core/kvo.rb
124
155
  - motion/core/ns_index_path.rb
125
156
  - motion/core/ns_notification_center.rb
157
+ - motion/core/ns_url_request.rb
126
158
  - motion/core/ns_user_defaults.rb
127
159
  - motion/core/persistence.rb
128
160
  - motion/core/pollute.rb
129
161
  - motion/core/string.rb
130
162
  - motion/core/time.rb
131
- - motion/core/ui_control.rb
132
- - motion/core/ui_view_controller.rb
133
163
  - motion/http.rb
164
+ - motion/location/location.rb
165
+ - motion/location/pollute.rb
166
+ - motion/reactor.rb
167
+ - motion/reactor/default_deferrable.rb
168
+ - motion/reactor/deferrable.rb
169
+ - motion/reactor/eventable.rb
170
+ - motion/reactor/future.rb
171
+ - motion/reactor/periodic_timer.rb
172
+ - motion/reactor/queue.rb
173
+ - motion/reactor/timer.rb
174
+ - motion/rss_parser.rb
175
+ - motion/shortcut.rb
134
176
  - motion/test_suite_delegate.rb
177
+ - motion/ui/gestures.rb
178
+ - motion/ui/pollute.rb
179
+ - motion/ui/ui_control.rb
180
+ - motion/ui/ui_view_controller.rb
181
+ - resources/atom.xml
135
182
  - spec/lib/bubble-wrap/ext/motion_project_app_spec.rb
136
183
  - spec/lib/bubble-wrap/ext/motion_project_config_spec.rb
137
184
  - spec/lib/bubble-wrap/requirement/path_manipulation_spec.rb
@@ -139,6 +186,8 @@ files:
139
186
  - spec/lib/bubble-wrap_spec.rb
140
187
  - spec/lib/motion_stub.rb
141
188
  - spec/motion/core/app_spec.rb
189
+ - spec/motion/core/device/camera_spec.rb
190
+ - spec/motion/core/device/camera_wrapper_spec.rb
142
191
  - spec/motion/core/device/screen_spec.rb
143
192
  - spec/motion/core/device_spec.rb
144
193
  - spec/motion/core/gestures_spec.rb
@@ -152,6 +201,10 @@ files:
152
201
  - spec/motion/core/ui_control_spec.rb
153
202
  - spec/motion/core_spec.rb
154
203
  - spec/motion/http_spec.rb
204
+ - spec/motion/location/location_spec.rb
205
+ - spec/motion/reactor/eventable_spec.rb
206
+ - spec/motion/reactor_spec.rb
207
+ - spec/motion/rss_parser_spec.rb
155
208
  homepage: http://bubblewrap.io/
156
209
  licenses: []
157
210
  post_install_message:
@@ -166,7 +219,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
166
219
  version: '0'
167
220
  segments:
168
221
  - 0
169
- hash: -3665187214777741337
222
+ hash: -2985939029825210852
170
223
  required_rubygems_version: !ruby/object:Gem::Requirement
171
224
  none: false
172
225
  requirements:
@@ -175,7 +228,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
175
228
  version: '0'
176
229
  segments:
177
230
  - 0
178
- hash: -3665187214777741337
231
+ hash: -2985939029825210852
179
232
  requirements: []
180
233
  rubyforge_project:
181
234
  rubygems_version: 1.8.16
@@ -191,6 +244,8 @@ test_files:
191
244
  - spec/lib/bubble-wrap_spec.rb
192
245
  - spec/lib/motion_stub.rb
193
246
  - spec/motion/core/app_spec.rb
247
+ - spec/motion/core/device/camera_spec.rb
248
+ - spec/motion/core/device/camera_wrapper_spec.rb
194
249
  - spec/motion/core/device/screen_spec.rb
195
250
  - spec/motion/core/device_spec.rb
196
251
  - spec/motion/core/gestures_spec.rb
@@ -204,3 +259,7 @@ test_files:
204
259
  - spec/motion/core/ui_control_spec.rb
205
260
  - spec/motion/core_spec.rb
206
261
  - spec/motion/http_spec.rb
262
+ - spec/motion/location/location_spec.rb
263
+ - spec/motion/reactor/eventable_spec.rb
264
+ - spec/motion/reactor_spec.rb
265
+ - spec/motion/rss_parser_spec.rb