ruby_motion_query 0.3.0 → 0.3.5
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.
- checksums.yaml +8 -8
- data/README.md +34 -1
- data/bin/rmq +37 -0
- data/motion/ext.rb +14 -7
- data/motion/ruby_motion_query/base.rb +35 -3
- data/motion/ruby_motion_query/color.rb +1 -1
- data/motion/ruby_motion_query/data.rb +12 -2
- data/motion/ruby_motion_query/factory.rb +4 -2
- data/motion/ruby_motion_query/stylers/ui_button_styler.rb +15 -0
- data/motion/ruby_motion_query/stylers/ui_view_styler.rb +8 -11
- data/motion/ruby_motion_query/stylesheet.rb +8 -2
- data/motion/ruby_motion_query/subviews.rb +35 -8
- data/motion/ruby_motion_query/tags.rb +20 -1
- data/motion/ruby_motion_query/traverse.rb +9 -9
- metadata +7 -5
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YWNlNGE2M2YwYzFkYTMyZTFmZDNkN2MwMGQ3NjM3YWFlNzc1M2VlMQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YmUwYjFlZGU4ODlkMDIzMzUwOTc0ZTYyMjg0ODQxNmYwOTg4ZjMzMA==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NjBhZGY2ZjMwZTI5M2M5MWI5NDc3NWY0YjdjOTkzN2Y0YmY0N2JiN2M3ZGI0
|
10
|
+
NGFiNzNjZTQ0OGEzZDQ4OWQ3ZTQ5MzNmMTIxYzE0ODhjMzdkYjVmMzAyMzIx
|
11
|
+
MTQ5NjAwZjI3ODZhY2NjNmUxYTcxODdkZGQwOGUxMWY1MWE4MDA=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MjQxYjUwNDFlYzJiNWJkNDE5OGYyZDE2ZTdiMmViYjkyN2NkZmRlOTQ3Mzcz
|
14
|
+
ZGM1N2VkNDc5MTJhYzAyYjM2NjAyYTZiZDE5ZjUzODRlMTNiM2Y5NWEyOTY3
|
15
|
+
YTc2MDIzODE0MGEyZGM2ZDNmMDZjYWI5N2FlMTk2YTQ5ZjI3MmU=
|
data/README.md
CHANGED
@@ -39,6 +39,12 @@ RMQ **doesn't require any** other wrapper or gem.
|
|
39
39
|
|
40
40
|
Some of the code in RMQ came from BubbleWrap and Sugarcube. Not too much but some did. I thank you BubbleWrap and Sugarcube teams for your work.
|
41
41
|
|
42
|
+
## Quick Start
|
43
|
+
- `gem install ruby_motion_query`
|
44
|
+
- `rmq create my_app`
|
45
|
+
- `cd my_app`
|
46
|
+
- `bundle`
|
47
|
+
- `rake retina=4`
|
42
48
|
|
43
49
|
## Installation
|
44
50
|
|
@@ -287,9 +293,15 @@ The internal store of events in a UIView. It's rmq.events, you won't use it too
|
|
287
293
|
```ruby
|
288
294
|
# Add tags
|
289
295
|
rmq(my_view).tag(:your_tag)
|
296
|
+
rmq(my_view).clear_tags.tag(:your_new_tag)
|
290
297
|
|
291
298
|
rmq(my_view).find(UILabel).tag(:selected, :customer)
|
292
299
|
|
300
|
+
# You can optionally store a value in the tag, which can be super useful in some rare situations
|
301
|
+
rmq(my_view).tag(your_tag: 22)
|
302
|
+
rmq(my_view).tag(your_tag: 22, your_other_tag: 'Hello world')
|
303
|
+
|
304
|
+
|
293
305
|
# You can use a tag or tags as selecors
|
294
306
|
rmq(:selected).hide
|
295
307
|
rmq(:your_tag).and(:selected).hide
|
@@ -306,7 +318,7 @@ rmq(my_view).toggle_enabled
|
|
306
318
|
rmq(my_text_field).focus # or .become_first_responder
|
307
319
|
```
|
308
320
|
|
309
|
-
### Subviews
|
321
|
+
### Subviews - appending, creating, etc
|
310
322
|
|
311
323
|
```ruby
|
312
324
|
rmq.append(UILabel) # Creates a UILabel in the current controller
|
@@ -334,6 +346,27 @@ rmq.root_view
|
|
334
346
|
rmq.view_controller
|
335
347
|
```
|
336
348
|
|
349
|
+
#### Create a view
|
350
|
+
If you want to create a view but not add it to the subviews of any other view, you can
|
351
|
+
use #create. It's basically #append without the actual appending.
|
352
|
+
This is very handy for stuff like table cells:
|
353
|
+
|
354
|
+
```ruby
|
355
|
+
# In your controller that is a delegate for a UITableView
|
356
|
+
def tableView(table_view, cellForRowAtIndexPath: index_path)
|
357
|
+
cell = tableView.dequeueReusableCellWithIdentifier(CELL_IDENTIFIER) || begin
|
358
|
+
rmq.create(StoreCell, :store_cell)
|
359
|
+
end
|
360
|
+
end
|
361
|
+
|
362
|
+
# Your cell
|
363
|
+
class StoreCell < UITableViewCell
|
364
|
+
def rmq_did_create(self_in_rmq)
|
365
|
+
self_in_rmq.append(UILabel, :title_label) # <- this works even though this object isn't in a controller
|
366
|
+
end
|
367
|
+
end
|
368
|
+
```
|
369
|
+
|
337
370
|
### Animate
|
338
371
|
|
339
372
|
```ruby
|
data/bin/rmq
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
unless ARGV.length > 0
|
4
|
+
puts 'RMQ - Invalid command, do something like this: rmq create my_new_app'
|
5
|
+
exit
|
6
|
+
end
|
7
|
+
|
8
|
+
|
9
|
+
action = ARGV[0]
|
10
|
+
value = ARGV[1]
|
11
|
+
|
12
|
+
case action
|
13
|
+
when 'create'
|
14
|
+
`motion create --template=git@github.com:infinitered/rmq-template.git #{value}`
|
15
|
+
|
16
|
+
puts %{
|
17
|
+
Complete. Things you should do:
|
18
|
+
> cd #{value}
|
19
|
+
> bundle
|
20
|
+
> rake spec
|
21
|
+
> rake
|
22
|
+
(main)> exit
|
23
|
+
|
24
|
+
Then try these:
|
25
|
+
> rake retina=3.5
|
26
|
+
> rake retina=4
|
27
|
+
> rake device_family=ipad
|
28
|
+
> rake device }
|
29
|
+
|
30
|
+
when 'api'
|
31
|
+
`open http://rdoc.info/github/infinitered/rmq`
|
32
|
+
when 'docs'
|
33
|
+
`open http://infinitered.com/rmq`
|
34
|
+
else
|
35
|
+
puts 'RMQ - Invalid action'
|
36
|
+
|
37
|
+
end
|
data/motion/ext.rb
CHANGED
@@ -4,12 +4,14 @@ class UIView
|
|
4
4
|
end
|
5
5
|
|
6
6
|
# Override in your view if you want to setup subviews after your view has
|
7
|
-
# been created by rmq, usually through an #append
|
7
|
+
# been created by rmq, usually through an #append or #create
|
8
|
+
#
|
9
|
+
# @param [RMQ] rmq that created your view
|
8
10
|
#
|
9
11
|
# In your view
|
10
12
|
# @example
|
11
|
-
# def rmq_did_create
|
12
|
-
#
|
13
|
+
# def rmq_did_create(self_in_rmq)
|
14
|
+
# self_in_rmq.tap do |q|
|
13
15
|
# q.append(UILabel, :section_title)
|
14
16
|
# q.append(UIButton, :buy_button).on(:tap) do |sender|
|
15
17
|
# # do something
|
@@ -24,11 +26,16 @@ class UIView
|
|
24
26
|
# In this example an instance of YourView is created, :your_style is applied
|
25
27
|
# then rmq_did_create is called on the instance that was just created. In that
|
26
28
|
# order.
|
27
|
-
def rmq_did_create
|
29
|
+
def rmq_did_create(self_in_rmq)
|
28
30
|
end
|
29
31
|
|
30
|
-
protected
|
31
|
-
|
32
|
+
# I intend for this to be protected
|
33
|
+
# Do not call rmq from outside a view. Because of some weirdness with table cells
|
34
|
+
# and event blocks this has to be public (later I want to figure out why exactly).
|
35
|
+
#
|
36
|
+
# Technically my_view.rmq is the same as rmq(my_view), so it may seem enticing to use
|
37
|
+
# but the really nice thing about rmq is its consistent API, and doing this
|
38
|
+
# for one view: my_view.rmq and this for two views: rmq(my_view, my_other_view) sucks
|
32
39
|
def rmq(*selectors)
|
33
40
|
RubyMotionQuery::RMQ.create_with_selectors(selectors, self)
|
34
41
|
end
|
@@ -39,7 +46,7 @@ class UIViewController
|
|
39
46
|
if RubyMotionQuery::RMQ.cache_controller_rmqs && selectors.length == 0
|
40
47
|
rmq_data.rmq ||= RubyMotionQuery::RMQ.create_with_selectors(selectors, self)
|
41
48
|
else
|
42
|
-
RubyMotionQuery::RMQ.create_with_selectors(selectors, self)
|
49
|
+
RubyMotionQuery::RMQ.create_with_selectors(selectors, self, rmq_data.rmq)
|
43
50
|
end
|
44
51
|
end
|
45
52
|
|
@@ -16,7 +16,7 @@ module RubyMotionQuery
|
|
16
16
|
# controller that the view is currently in or to the current screen's
|
17
17
|
# controller
|
18
18
|
class RMQ
|
19
|
-
attr_accessor :context
|
19
|
+
attr_accessor :context
|
20
20
|
|
21
21
|
def initialize
|
22
22
|
@selected_dirty = true
|
@@ -61,12 +61,44 @@ module RubyMotionQuery
|
|
61
61
|
@_selected
|
62
62
|
end
|
63
63
|
|
64
|
+
# Wraps 1 or more views in an rmq instance.
|
65
|
+
#
|
66
|
+
# Normally you select a view or views using rmq(my_view). Which doesn't
|
67
|
+
# work if you have an instance of a RMQ, in which case it isn't a method.
|
68
|
+
# In some cases you want to save an instance of rmq and use it like the rmq
|
69
|
+
# method, for this you'd use #wrap
|
70
|
+
#
|
71
|
+
# @example
|
72
|
+
# q = RubyMotionQuery::RMQ.new
|
73
|
+
#
|
74
|
+
# # Bad
|
75
|
+
# q(my_view).view_controller
|
76
|
+
#
|
77
|
+
# # Good
|
78
|
+
# q.wrap(my_view).view_controller
|
79
|
+
def wrap(*views)
|
80
|
+
views.flatten!
|
81
|
+
views.select!{ |v| v.is_a?(UIView) }
|
82
|
+
RMQ.create_with_array_and_selectors(views, views, views.first, self)
|
83
|
+
end
|
84
|
+
|
85
|
+
|
86
|
+
# Untested and I don' think it's getting set right in some situations
|
87
|
+
#
|
88
|
+
# @return [RMQ] rmq that created this rmq, if any
|
89
|
+
def parent_rmq
|
90
|
+
@_parent_rmq
|
91
|
+
end
|
92
|
+
def parent_rmq=(value)
|
93
|
+
@_parent_rmq = value
|
94
|
+
end
|
95
|
+
|
64
96
|
# The view(s) this rmq was derived from
|
65
97
|
#
|
66
98
|
# @return [Array]
|
67
99
|
def origin_views
|
68
|
-
if
|
69
|
-
|
100
|
+
if pq = self.parent_rmq
|
101
|
+
pq.selected
|
70
102
|
else
|
71
103
|
[self.view_controller.view]
|
72
104
|
end
|
@@ -96,7 +96,7 @@ module RubyMotionQuery
|
|
96
96
|
# color.from_hex('#ffffff')
|
97
97
|
# color.from_hex('ffffff')
|
98
98
|
def from_hex(hex_color)
|
99
|
-
hex_color.gsub
|
99
|
+
hex_color = hex_color.gsub("#", "")
|
100
100
|
case hex_color.size
|
101
101
|
when 3
|
102
102
|
colors = hex_color.scan(%r{[0-9A-Fa-f]}).map{ |el| (el * 2).to_i(16) }
|
@@ -17,8 +17,18 @@ module RubyMotionQuery
|
|
17
17
|
# rmq(my_view).tag(:foo)
|
18
18
|
def tag(*tag_or_tags)
|
19
19
|
tag_or_tags.flatten!
|
20
|
-
tag_or_tags.
|
21
|
-
|
20
|
+
tag_or_tags = tag_or_tags.first if tag_or_tags.length == 1
|
21
|
+
|
22
|
+
if tag_or_tags.is_a?(Array)
|
23
|
+
tag_or_tags.each do |tag_name|
|
24
|
+
tags[tag_name] = 1
|
25
|
+
end
|
26
|
+
elsif tag_or_tags.is_a?(Hash)
|
27
|
+
tag_or_tags.each do |tag_name, tag_value|
|
28
|
+
tags[tag_name] = tag_value
|
29
|
+
end
|
30
|
+
elsif tag_or_tags.is_a?(Symbol)
|
31
|
+
tags[tag_or_tags] = 1
|
22
32
|
end
|
23
33
|
end
|
24
34
|
|
@@ -15,18 +15,20 @@ module RubyMotionQuery
|
|
15
15
|
class << self
|
16
16
|
|
17
17
|
# @return [RMQ]
|
18
|
-
def create_with_selectors(selectors, context)
|
18
|
+
def create_with_selectors(selectors, context, parent_rmq = nil)
|
19
19
|
RMQ.new.tap do |o|
|
20
20
|
o.context = context
|
21
|
+
o.parent_rmq = parent_rmq
|
21
22
|
o.selectors = selectors
|
22
23
|
end
|
23
24
|
end
|
24
25
|
|
25
26
|
# @return [RMQ]
|
26
|
-
def create_with_array_and_selectors(array, selectors, context)
|
27
|
+
def create_with_array_and_selectors(array, selectors, context, parent_rmq = nil) # TODO, convert to opts
|
27
28
|
RMQ.new.tap do |o|
|
28
29
|
o.context = context
|
29
30
|
o.selectors = selectors
|
31
|
+
o.parent_rmq = parent_rmq
|
30
32
|
o.selected = array # Must be last
|
31
33
|
end
|
32
34
|
end
|
@@ -19,6 +19,13 @@ module RubyMotionQuery
|
|
19
19
|
@view.titleColor
|
20
20
|
end
|
21
21
|
|
22
|
+
def tint_color=(value)
|
23
|
+
@view.tintColor = value
|
24
|
+
end
|
25
|
+
def tint_color
|
26
|
+
@view.tintColor
|
27
|
+
end
|
28
|
+
|
22
29
|
def image_normal=(value)
|
23
30
|
@view.setImage value, forState: UIControlStateNormal
|
24
31
|
end
|
@@ -27,6 +34,14 @@ module RubyMotionQuery
|
|
27
34
|
@view.setImage value, forState: UIControlStateHighlighted
|
28
35
|
end
|
29
36
|
|
37
|
+
def background_image_normal=(value)
|
38
|
+
@view.setBackgroundImage value, forState: UIControlStateNormal
|
39
|
+
end
|
40
|
+
|
41
|
+
def background_image_highlighted=(value)
|
42
|
+
@view.setBackgroundImage value, forState: UIControlStateHighlighted
|
43
|
+
end
|
44
|
+
|
30
45
|
end
|
31
46
|
end
|
32
47
|
end
|
@@ -30,26 +30,24 @@ module RubyMotionQuery
|
|
30
30
|
|
31
31
|
def frame=(value)
|
32
32
|
if value == :full # Thanks teacup for the name
|
33
|
-
|
33
|
+
@view.frame = self.superview.bounds
|
34
34
|
elsif value.is_a?(Hash)
|
35
|
+
f = @view.frame
|
35
36
|
h = value
|
36
|
-
h[:l] ||= (h[:left] || 0)
|
37
|
-
h[:t] ||= (h[:top] || 0)
|
38
|
-
h[:w] ||= (h[:width] || 0)
|
39
|
-
h[:h] ||= (h[:height] || 0)
|
40
37
|
|
41
|
-
|
42
|
-
|
38
|
+
f.origin.x = h[:l] || h[:left] || f.origin.x
|
39
|
+
f.origin.y = h[:t] || h[:top] || f.origin.y
|
40
|
+
f.size.width = h[:w] || h[:width] || f.size.width
|
41
|
+
f.size.height =h[:h] || h[:height] || f.size.height
|
43
42
|
|
44
|
-
|
43
|
+
@view.frame = f
|
44
|
+
end
|
45
45
|
end
|
46
46
|
def frame
|
47
47
|
@view.frame
|
48
48
|
end
|
49
49
|
|
50
50
|
def padded=(value)
|
51
|
-
#st.padded = {l: 10, t: 10, b:10, r: 10}
|
52
|
-
|
53
51
|
if value.is_a?(Hash)
|
54
52
|
h = value
|
55
53
|
h[:l] ||= (h[:left] || 0)
|
@@ -68,7 +66,6 @@ module RubyMotionQuery
|
|
68
66
|
|
69
67
|
@view.frame = value
|
70
68
|
end
|
71
|
-
|
72
69
|
end
|
73
70
|
|
74
71
|
def left=(value)
|
@@ -7,14 +7,20 @@ module RubyMotionQuery
|
|
7
7
|
unless value.is_a?(RubyMotionQuery::Stylesheet)
|
8
8
|
value = value.new(controller)
|
9
9
|
end
|
10
|
+
@_stylesheet = value
|
10
11
|
controller.rmq_data.stylesheet = value
|
11
12
|
self
|
12
13
|
end
|
13
14
|
|
14
|
-
# @return [
|
15
|
+
# @return [RubyMotionQuery::Stylesheet]
|
15
16
|
def stylesheet
|
16
17
|
@_stylesheet ||= begin
|
17
|
-
|
18
|
+
|
19
|
+
if self.view_controller && (ss = self.view_controller.rmq_data.stylesheet)
|
20
|
+
ss
|
21
|
+
elsif (prmq = self.parent_rmq) && prmq.stylesheet
|
22
|
+
prmq.stylesheet
|
23
|
+
end
|
18
24
|
end
|
19
25
|
end
|
20
26
|
|
@@ -24,22 +24,25 @@ module RubyMotionQuery
|
|
24
24
|
end
|
25
25
|
|
26
26
|
subviews_added << new_view
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
27
|
+
|
28
|
+
unless opts[:do_not_add]
|
29
|
+
if at_index = opts[:at_index]
|
30
|
+
selected_view.insertSubview(new_view, atIndex: at_index)
|
31
|
+
elsif below_view = opts[:below_view]
|
32
|
+
selected_view.insertSubview(new_view, belowSubview: below_view)
|
33
|
+
else
|
34
|
+
selected_view.addSubview(new_view)
|
35
|
+
end
|
33
36
|
end
|
34
37
|
|
35
38
|
if self.stylesheet
|
36
39
|
apply_style_to_view(new_view, style) if style
|
37
40
|
end
|
38
41
|
|
39
|
-
new_view.rmq_did_create if created
|
42
|
+
new_view.rmq_did_create(self.wrap(new_view)) if created
|
40
43
|
end
|
41
44
|
|
42
|
-
RMQ.create_with_array_and_selectors(subviews_added, selectors, @context)
|
45
|
+
RMQ.create_with_array_and_selectors(subviews_added, selectors, @context, self)
|
43
46
|
end
|
44
47
|
alias :insert :add_subview
|
45
48
|
|
@@ -54,6 +57,30 @@ module RubyMotionQuery
|
|
54
57
|
end
|
55
58
|
alias :prepend :unshift
|
56
59
|
|
60
|
+
# Creates a view then returns an rmq with that view in it. It does not add that
|
61
|
+
# view to the view tree. This is useful for stuff like creating table cells. You
|
62
|
+
# can use the rmq_did_create method, just like you do when you append a subview
|
63
|
+
#
|
64
|
+
# @return [RMQ] wrapping the view that was just create
|
65
|
+
#
|
66
|
+
# @example
|
67
|
+
# def tableView(table_view, cellForRowAtIndexPath: index_path)
|
68
|
+
# cell = tableView.dequeueReusableCellWithIdentifier(CELL_IDENTIFIER) || begin
|
69
|
+
# rmq.create(StoreCell, :store_cell)
|
70
|
+
# end
|
71
|
+
# end
|
72
|
+
#
|
73
|
+
# class StoreCell < UITableViewCell
|
74
|
+
# def rmq_did_create(self_in_rmq)
|
75
|
+
# self_in_rmq.append(UILabel, :title_label)
|
76
|
+
# end
|
77
|
+
# end
|
78
|
+
#
|
79
|
+
def create(view_or_constant, style = nil)
|
80
|
+
# TODO, refactor so that add_subview uses create, not backwards like it is now
|
81
|
+
add_subview view_or_constant, style: style, do_not_add: true
|
82
|
+
end
|
83
|
+
|
57
84
|
protected
|
58
85
|
|
59
86
|
def create_view(klass)
|
@@ -1,6 +1,17 @@
|
|
1
1
|
module RubyMotionQuery
|
2
2
|
class RMQ
|
3
3
|
|
4
|
+
# Add tags
|
5
|
+
# @example
|
6
|
+
# rmq(my_view).tag(:your_tag)
|
7
|
+
# rmq(my_view).clear_tags.tag(:your_new_tag)
|
8
|
+
# rmq(my_view).find(UILabel).tag(:selected, :customer)
|
9
|
+
#
|
10
|
+
# You can optionally store a value in the tag, which can be super useful in some rare situations
|
11
|
+
# @example
|
12
|
+
# rmq(my_view).tag(your_tag: 22)
|
13
|
+
# rmq(my_view).tag(your_tag: 22, your_other_tag: 'Hello world')
|
14
|
+
#
|
4
15
|
# @return [RMQ]
|
5
16
|
def tag(*tag_or_tags)
|
6
17
|
selected.each do |view|
|
@@ -9,7 +20,15 @@ module RubyMotionQuery
|
|
9
20
|
self
|
10
21
|
end
|
11
22
|
|
12
|
-
#
|
23
|
+
# @return [RMQ]
|
24
|
+
def clear_tags
|
25
|
+
selected.each do |view|
|
26
|
+
view.rmq_data.tags.clear
|
27
|
+
end
|
28
|
+
self
|
29
|
+
end
|
30
|
+
|
31
|
+
# See /motion/data.rb for the rest of the tag stuff
|
13
32
|
|
14
33
|
end
|
15
34
|
end
|
@@ -27,9 +27,7 @@ module RubyMotionQuery
|
|
27
27
|
if opts[:return_array]
|
28
28
|
out
|
29
29
|
else
|
30
|
-
|
31
|
-
rmq.parent_rmq = self
|
32
|
-
rmq
|
30
|
+
RMQ.create_with_array_and_selectors(out, selectors, @context, self)
|
33
31
|
end
|
34
32
|
end
|
35
33
|
|
@@ -77,11 +75,11 @@ module RubyMotionQuery
|
|
77
75
|
# @example
|
78
76
|
# rmq(my_view).children.and_self
|
79
77
|
def and_self
|
80
|
-
if
|
81
|
-
out =
|
78
|
+
if self.parent_rmq
|
79
|
+
out = self.parent_rmq.selected.dup
|
82
80
|
out << selected
|
83
81
|
out.flatten!
|
84
|
-
RMQ.create_with_array_and_selectors(out, selectors, @context)
|
82
|
+
RMQ.create_with_array_and_selectors(out, selectors, @context, self)
|
85
83
|
else
|
86
84
|
self
|
87
85
|
end
|
@@ -93,7 +91,7 @@ module RubyMotionQuery
|
|
93
91
|
# @example
|
94
92
|
# rmq(test_view).find(UIImageView).tag(:foo).end.find(UILabel).tag(:bar)
|
95
93
|
def end
|
96
|
-
|
94
|
+
self.parent_rmq || self
|
97
95
|
end
|
98
96
|
|
99
97
|
# @return [RMQ] rmq instance selecting the parent of the selected view(s)
|
@@ -253,9 +251,11 @@ module RubyMotionQuery
|
|
253
251
|
def view_controller
|
254
252
|
@_view_controller ||= begin
|
255
253
|
if @context.is_a?(UIViewController)
|
256
|
-
@context
|
254
|
+
WeakRef.new(@context)
|
257
255
|
else
|
258
|
-
RMQ.controller_for_view(@context)
|
256
|
+
if vc = RMQ.controller_for_view(@context)
|
257
|
+
WeakRef.new(vc)
|
258
|
+
end
|
259
259
|
end
|
260
260
|
end
|
261
261
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_motion_query
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Todd Werth
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-09-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bacon
|
@@ -39,10 +39,11 @@ dependencies:
|
|
39
39
|
- - ! '>='
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '0'
|
42
|
-
description: RubyMotionQuery - RMQ - A
|
43
|
-
RubyMotion
|
42
|
+
description: RubyMotionQuery - RMQ - A fast, non-magical, non-polluting, jQuery-like
|
43
|
+
library for RubyMotion
|
44
44
|
email: todd@infinitered.com
|
45
|
-
executables:
|
45
|
+
executables:
|
46
|
+
- rmq
|
46
47
|
extensions: []
|
47
48
|
extra_rdoc_files: []
|
48
49
|
files:
|
@@ -90,6 +91,7 @@ files:
|
|
90
91
|
- motion/ruby_motion_query/tags.rb
|
91
92
|
- motion/ruby_motion_query/traverse.rb
|
92
93
|
- motion/ruby_motion_query/utils.rb
|
94
|
+
- bin/rmq
|
93
95
|
homepage: http://infinitered.com/rmq
|
94
96
|
licenses:
|
95
97
|
- MIT
|