motion-kit 0.10.11 → 0.11.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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +92 -2
  3. data/lib/motion-kit/calculator/calculate.rb +1 -1
  4. data/lib/motion-kit/calculator/view_calculator.rb +5 -5
  5. data/lib/motion-kit/layouts/base_layout.rb +21 -15
  6. data/lib/motion-kit/layouts/base_layout_class_methods.rb +2 -7
  7. data/lib/motion-kit/layouts/tree_layout.rb +141 -106
  8. data/lib/motion-kit/object.rb +0 -9
  9. data/lib/motion-kit/version.rb +1 -1
  10. data/lib/motion-kit-cocoa/constraints/constraint.rb +11 -12
  11. data/lib/motion-kit-cocoa/constraints/constraint_placeholder.rb +3 -3
  12. data/lib/motion-kit-cocoa/constraints/constraints_layout.rb +103 -58
  13. data/lib/motion-kit-ios/layouts/constraints_layout.rb +4 -2
  14. data/lib/motion-kit-ios/layouts/uiview_layout.rb +0 -17
  15. data/lib/motion-kit-ios/layouts/uiview_layout_constraints.rb +10 -10
  16. data/lib/motion-kit-ios/layouts/uiview_layout_frame.rb +1 -1
  17. data/lib/motion-kit-osx/layouts/constraints_layout.rb +18 -16
  18. data/lib/motion-kit-osx/layouts/nstableview_layout.rb +13 -0
  19. data/lib/motion-kit-osx/layouts/nsview_layout.rb +0 -19
  20. data/lib/motion-kit-osx/layouts/nsview_layout_constraints.rb +10 -10
  21. data/lib/motion-kit-osx/layouts/nsview_layout_frame.rb +1 -1
  22. data/lib/motion-kit-osx/layouts/nswindow_layout.rb +0 -49
  23. data/spec/ios/apply_styles_spec.rb +27 -12
  24. data/spec/ios/calayer_spec.rb +9 -0
  25. data/spec/ios/child_layouts_spec.rb +53 -0
  26. data/spec/ios/constraints_helpers/scale_constraints_spec.rb +62 -0
  27. data/spec/ios/create_layout_spec.rb +1 -1
  28. data/spec/ios/custom_root_layout_spec.rb +1 -1
  29. data/spec/ios/frame_helper_spec.rb +2 -2
  30. data/spec/ios/layout_spec.rb +3 -20
  31. data/spec/ios/layout_state_spec.rb +1 -1
  32. data/spec/ios/motionkit_util_spec.rb +0 -87
  33. data/spec/ios/reapply_frame.rb +0 -2
  34. data/spec/ios/relative_layout.spec.rb +2 -2
  35. data/spec/ios/remove_layout_spec.rb +2 -3
  36. data/spec/ios/view_attr_spec.rb +7 -0
  37. data/spec/osx/constraints_helpers/table_view_spec.rb +34 -0
  38. data/spec/osx/custom_root_layout_spec.rb +1 -1
  39. data/spec/osx/frame_helper_spec.rb +2 -2
  40. metadata +10 -3
  41. data/lib/motion-kit-cocoa/cocoa_util.rb +0 -59
@@ -1,22 +1,37 @@
1
1
  describe "Layouts automatically apply styles" do
2
2
 
3
3
  before do
4
- @subject = TestApplyStyles.new
4
+ @subject = TestApplyStyles.new.build
5
5
  end
6
6
 
7
- it "should call all style methods" do
8
- @subject.view
9
- @subject.did_call_logo.should == true
10
- @subject.did_call_h1_label.should == true
11
- @subject.did_call_label.should == true
7
+ describe "should call all style methods" do
8
+ {
9
+ logo: -> { @subject.did_call_logo },
10
+ h1_label: -> { @subject.did_call_h1_label },
11
+ label: -> { @subject.did_call_label },
12
+ }.each do |name, condition|
13
+ it "should call #{name} style method" do
14
+ condition.call.should == true
15
+ end
16
+ end
12
17
  end
13
18
 
14
- it "should apply all styles" do
15
- @subject.get(:logo).text.should == 'MK'
16
- @subject.get(:label).text.should == ':label'
17
- @subject.get(:label).numberOfLines.should == 2
18
- @subject.get(:label).font.pointSize.should == 16
19
- @subject.get(:label).textColor.should == UIColor.blackColor
19
+ describe "should apply all styles" do
20
+ it 'should style :logo' do
21
+ @subject.get(:logo).text.should == 'MK'
22
+ end
23
+ it 'should style :label' do
24
+ @subject.get(:label).text.should == ':label'
25
+ end
26
+ it 'should style :label' do
27
+ @subject.get(:label).numberOfLines.should == 2
28
+ end
29
+ it 'should style :label' do
30
+ @subject.get(:label).font.pointSize.should == 16
31
+ end
32
+ it 'should style :label' do
33
+ @subject.get(:label).textColor.should == UIColor.blackColor
34
+ end
20
35
  end
21
36
 
22
37
  end
@@ -0,0 +1,9 @@
1
+ describe CALayer do
2
+
3
+ before do
4
+ end
5
+
6
+ it 'should style a CALayer' do
7
+ end
8
+
9
+ end
@@ -0,0 +1,53 @@
1
+ describe 'Child Layouts' do
2
+
3
+ before do
4
+ @layout = TestChildrenLayout.new.build
5
+ end
6
+
7
+ it 'should have 3 child layouts' do
8
+ @layout.child_layouts.length.should == 3
9
+ end
10
+
11
+ it 'should have a layout named :child_button' do
12
+ @layout.get(:child_button).should.be.kind_of(ChildButtonLayout)
13
+ end
14
+
15
+ it ':child_button layout should have a view named :button' do
16
+ @layout.get(:child_button).get(:button).should.be.kind_of(UIButton)
17
+ end
18
+
19
+ it 'should have a layout named :child_image' do
20
+ @layout.get(:child_image).should.be.kind_of(ChildImageLayout)
21
+ end
22
+
23
+ it ':child_image layout should have a view named :image' do
24
+ @layout.get(:child_image).get(:image).should.be.kind_of(UIImageView)
25
+ end
26
+
27
+ describe 'Calling reapply! on parent layout' do
28
+
29
+ before do
30
+ @layout.reapply!
31
+ end
32
+
33
+ it 'should reapply :label on root' do
34
+ @layout.get(:label).text.should == 'root reapplied'
35
+ end
36
+
37
+ it 'should reapply :label on child layout' do
38
+ @layout.child_layouts[0].get(:label).text.should == 'reapplied'
39
+ end
40
+
41
+ it 'should reapply :button on child layout' do
42
+ @layout.get(:child_button).reapply!
43
+ @layout.get(:child_button).get(:button).currentTitle.should == 'reapplied'
44
+ end
45
+
46
+ it 'should reapply :image on child layout' do
47
+ reapplied_image = @layout.get(:child_image).reapplied_image
48
+ @layout.get(:child_image).get(:image).image.should == reapplied_image
49
+ end
50
+
51
+ end
52
+
53
+ end
@@ -0,0 +1,62 @@
1
+ class MagicSizeView < UIView
2
+
3
+ def intrinsicContentSize
4
+ CGSize.new(200, 100)
5
+ end
6
+
7
+ end
8
+
9
+
10
+ describe 'Constraints - Size helpers' do
11
+
12
+ before do
13
+ @layout = MK::Layout.new
14
+ @constraint = nil
15
+ @view = MagicSizeView.new
16
+ end
17
+
18
+ it 'should support `height :scale`' do
19
+ @layout.context(@view) do
20
+ @layout.constraints do
21
+ @constraint = @layout.height(:scale)
22
+ end
23
+ end
24
+
25
+ @constraint.target.should == @view
26
+ @constraint.attribute.should == :height
27
+ @constraint.attribute2.should == :width
28
+ @constraint.relationship.should == :equal
29
+ @constraint.multiplier.should == 0.5
30
+ nsconstraint = @constraint.resolve_all(@layout, @view).first
31
+ nsconstraint.firstItem.should == @view
32
+ nsconstraint.firstAttribute.should == NSLayoutAttributeHeight
33
+ nsconstraint.secondItem.should == @view
34
+ nsconstraint.secondAttribute.should == NSLayoutAttributeWidth
35
+ nsconstraint.relation.should == NSLayoutRelationEqual
36
+ nsconstraint.multiplier.should == 0.5
37
+ nsconstraint.constant.should == 0
38
+ end
39
+
40
+ it 'should support `width :scale`' do
41
+ @layout.context(@view) do
42
+ @layout.constraints do
43
+ @constraint = @layout.width(:scale)
44
+ end
45
+ end
46
+
47
+ @constraint.target.should == @view
48
+ @constraint.attribute.should == :width
49
+ @constraint.attribute2.should == :height
50
+ @constraint.relationship.should == :equal
51
+ @constraint.multiplier.should == 2.0
52
+ nsconstraint = @constraint.resolve_all(@layout, @view).first
53
+ nsconstraint.firstItem.should == @view
54
+ nsconstraint.firstAttribute.should == NSLayoutAttributeWidth
55
+ nsconstraint.secondItem.should == @view
56
+ nsconstraint.secondAttribute.should == NSLayoutAttributeHeight
57
+ nsconstraint.relation.should == NSLayoutRelationEqual
58
+ nsconstraint.multiplier.should == 2.0
59
+ nsconstraint.constant.should == 0
60
+ end
61
+
62
+ end
@@ -1,4 +1,4 @@
1
- describe MotionKit::Layout do
1
+ describe 'Create Layout' do
2
2
  before do
3
3
  @subject = TestCreateLayout.new
4
4
  end
@@ -1,4 +1,4 @@
1
- describe MotionKit::Layout do
1
+ describe 'Custom Root Layouts' do
2
2
  before do
3
3
  @view = UIView.new
4
4
  @subject = TestCustomRootLayout.new(root: @view)
@@ -9,7 +9,7 @@ describe 'Frame helpers' do
9
9
  @view_size = CGSize.new(8, 10)
10
10
  @view = UIView.alloc.initWithFrame([[0, 0], @view_size])
11
11
  @view.backgroundColor = UIColor.whiteColor
12
- @view.motion_kit_id = :view
12
+ @layout.name_element(@view, :view)
13
13
 
14
14
  @superview_size = CGSize.new(60, 40)
15
15
  @superview = UIView.alloc.initWithFrame([[0, 0], @superview_size])
@@ -18,7 +18,7 @@ describe 'Frame helpers' do
18
18
 
19
19
  @another_view = UIView.alloc.initWithFrame([[10, 100], [120, 48]])
20
20
  @another_view.backgroundColor = UIColor.redColor
21
- @another_view.motion_kit_id = :another_view
21
+ @layout.name_element(@another_view, :another_view)
22
22
 
23
23
  top_view.addSubview(@another_view)
24
24
  top_view.addSubview(@superview)
@@ -1,6 +1,6 @@
1
- describe MotionKit::Layout do
1
+ describe 'Simple Layout' do
2
2
  before do
3
- @subject = TestLayout.new
3
+ @subject = TestLayout.new.build
4
4
  end
5
5
 
6
6
  it "should be an instance of MotionKit::Layout" do
@@ -12,7 +12,7 @@ describe MotionKit::Layout do
12
12
  end
13
13
 
14
14
  it "should add a UIView subview with the name :basic_view" do
15
- view = @subject.view.subviews.find { |view| view.motion_kit_id == :basic_view }
15
+ view = @subject.get(:basic_view)
16
16
  view.should.be.kind_of(UIView)
17
17
  end
18
18
 
@@ -30,25 +30,14 @@ describe MotionKit::Layout do
30
30
 
31
31
  it "should allow getting the subviews by their id" do
32
32
  @subject.get(:basic_view).should.be.kind_of UIView
33
- @subject.get(:basic_view, in: @subject.view).should.be.kind_of UIView
34
- @subject.get(:basic_view, in: @subject.view).should == @subject.get(:basic_view)
35
-
36
33
  @subject.get(:basic_button).should.be.kind_of UIButton
37
- @subject.get(:basic_button, in: @subject.view).should.be.kind_of UIView
38
- @subject.get(:basic_button, in: @subject.view).should == @subject.get(:basic_button)
39
-
40
34
  @subject.get(:basic_label).should.be.kind_of UILabel
41
- @subject.get(:basic_label, in: @subject.view).should.be.kind_of UIView
42
- @subject.get(:basic_label, in: @subject.view).should == @subject.get(:basic_label)
43
35
  end
44
36
 
45
37
  it "should allow getting the subviews by first, last and nth child" do
46
38
  @subject.first(:repeated_label_3).should.be.kind_of UIView
47
- @subject.first(:repeated_label_3, in: @subject.other_view).should.be.kind_of UIView
48
39
  @subject.nth(:repeated_label_3, 1).should.be.kind_of UIButton
49
- @subject.nth(:repeated_label_3, at: 1, in: @subject.other_view).should.be.kind_of UIButton
50
40
  @subject.last(:repeated_label_3).should.be.kind_of UILabel
51
- @subject.last(:repeated_label_3, in: @subject.other_view).should.be.kind_of UILabel
52
41
  end
53
42
 
54
43
  it "should allow getting all the subviews by name" do
@@ -57,12 +46,6 @@ describe MotionKit::Layout do
57
46
  views[0].should.be.kind_of UIView
58
47
  views[1].should.be.kind_of UIButton
59
48
  views[2].should.be.kind_of UILabel
60
-
61
- views = @subject.all(:repeated_label_3, in: @subject.other_view)
62
- views.length.should == 3
63
- views[0].should.be.kind_of UIView
64
- views[1].should.be.kind_of UIButton
65
- views[2].should.be.kind_of UILabel
66
49
  end
67
50
 
68
51
  it "should support missing methods" do
@@ -20,7 +20,7 @@ describe 'Blocks that are state specific' do
20
20
 
21
21
  it 'should run the reapply blocks from any method' do
22
22
  any_view = @subject.any_view
23
- @subject.reapply!(any_view)
23
+ @subject.reapply!
24
24
  any_view.text.should == 'reapply'
25
25
  end
26
26
 
@@ -12,91 +12,4 @@ describe 'MotionKit utility methods' do
12
12
  MotionKit.appearance_class.should.be.kind_of(Class)
13
13
  end
14
14
 
15
- describe 'traversal methods' do
16
- before do
17
- view = UIView.new
18
- view.tag = 1
19
- subview1 = UIButton.new
20
- subview1.tag = 2
21
- subview2 = UILabel.new
22
- subview2.tag = 3
23
- subview3 = UILabel.new
24
- subview3.tag = 4
25
- subview4 = UIView.new
26
- subview4.tag = 5
27
- subview5 = UIButton.new
28
- subview5.tag = 6
29
- subview6 = UILabel.new
30
- subview6.tag = 7
31
-
32
- view.addSubview(subview1)
33
- view.addSubview(subview2)
34
- view.addSubview(subview3)
35
- view.addSubview(subview4)
36
-
37
- subview4.addSubview(subview5)
38
- subview4.addSubview(subview6)
39
-
40
- @subject = view
41
- end
42
-
43
- it 'should return the first UIButton that matches' do
44
- found = MotionKit.find_first_view(@subject) { |view| view.is_a?(UIButton) }
45
- found.should.be.kind_of(UIButton)
46
- found.tag.should == 2
47
- end
48
-
49
- it 'should return the first UILabel that matches' do
50
- found = MotionKit.find_first_view(@subject) { |view| view.is_a?(UILabel) }
51
- found.should.be.kind_of(UILabel)
52
- found.tag.should == 3
53
- end
54
-
55
- it 'should return nil for first UIImage' do
56
- found = MotionKit.find_first_view(@subject) { |view| view.is_a?(UIImage) }
57
- found.should == nil
58
- end
59
-
60
- it 'should return the last UIButton that matches' do
61
- found = MotionKit.find_last_view(@subject) { |view| view.is_a?(UIButton) }
62
- found.should.be.kind_of(UIButton)
63
- found.tag.should == 6
64
- end
65
-
66
- it 'should return the last UILabel that matches' do
67
- found = MotionKit.find_last_view(@subject) { |view| view.is_a?(UILabel) }
68
- found.should.be.kind_of(UILabel)
69
- found.tag.should == 7
70
- end
71
-
72
- it 'should return nil for last UIImage' do
73
- found = MotionKit.find_last_view(@subject) { |view| view.is_a?(UIImage) }
74
- found.should == nil
75
- end
76
-
77
- it 'should return all the UIButton that match' do
78
- found = MotionKit.find_all_views(@subject) { |view| view.is_a?(UIButton) }
79
- found.length.should == 2
80
- found.map { |view| view.tag }.should == [2, 6]
81
- end
82
-
83
- it 'should return all the UILabel that match' do
84
- found = MotionKit.find_all_views(@subject) { |view| view.is_a?(UILabel) }
85
- found.length.should == 3
86
- found.map { |view| view.tag }.should == [3, 4, 7]
87
- end
88
-
89
- it 'should return all the UIView that match' do
90
- found = MotionKit.find_all_views(@subject) { |view| view.is_a?(UIView) }
91
- found.length.should == 7
92
- found.map { |view| view.tag }.should == [1, 2, 3, 4, 5, 6, 7]
93
- end
94
-
95
- it 'should return [] for all UIImages' do
96
- found = MotionKit.find_all_views(@subject) { |view| view.is_a?(UIImage) }
97
- found.should == []
98
- end
99
-
100
- end
101
-
102
15
  end
@@ -13,10 +13,8 @@ describe 'Views frames should remain unchanged' do
13
13
  end
14
14
 
15
15
  it "top should be in the right position before and after reapply" do
16
- NSLog("top frame before reapply = #{@subject.get(:top).frame.inspect}")
17
16
  @subject.get(:top).frame.should == CGRectMake(@cw/2 - 5, 0, 10, 10)
18
17
  @subject.reapply!
19
- NSLog("top frame after reapply = #{@subject.get(:top).frame.inspect}")
20
18
  @subject.get(:top).frame.should == CGRectMake(@cw/2 - 5, 0, 10, 10)
21
19
  end
22
20
 
@@ -1,6 +1,6 @@
1
- describe MotionKit::Layout do
1
+ describe 'Relative Layouts' do
2
2
  before do
3
- @subject = TestRelativeLayout.new
3
+ @subject = TestRelativeLayout.new.build
4
4
  end
5
5
 
6
6
  it "should have two subviews" do
@@ -1,6 +1,6 @@
1
- describe MotionKit::Layout do
1
+ describe 'Remove views' do
2
2
  before do
3
- @subject = TestRemoveLayout.new
3
+ @subject = TestRemoveLayout.new.build
4
4
  end
5
5
 
6
6
  it 'should remove the #label view' do
@@ -19,7 +19,6 @@ describe MotionKit::Layout do
19
19
  @subject.get(:view).should.be.kind_of(UIView)
20
20
  @subject.remove_view
21
21
  @subject.get(:view).should.be.nil
22
- @subject.get(:image).should.be.nil
23
22
  end
24
23
 
25
24
  end
@@ -22,4 +22,11 @@ describe 'View attr' do
22
22
  label.should == @layout.label
23
23
  end
24
24
 
25
+ it 'should handle multiple views' do
26
+ @layout.view
27
+ text_field = @layout.text_field
28
+ text_field.should.be.kind_of(UITextField)
29
+ text_view = @layout.text_view
30
+ text_view.should.be.kind_of(UITextView)
31
+ end
25
32
  end
@@ -0,0 +1,34 @@
1
+ describe MotionKit::NSTableViewLayout do
2
+
3
+ before do
4
+ @layout = TestTableColumnLayout.new.build
5
+ end
6
+
7
+ it 'should have a column called "foo"' do
8
+ column = @layout.table.tableColumnWithIdentifier('foo')
9
+ column.should.be.kind_of(NSTableColumn)
10
+ end
11
+
12
+ it 'column1 should say "Foo"' do
13
+ @layout.column1.headerCell.stringValue.should == 'Foo'
14
+ end
15
+
16
+ it 'should have a column called "bar"' do
17
+ column = @layout.table.tableColumnWithIdentifier('bar')
18
+ column.should.be.kind_of(NSTableColumn)
19
+ end
20
+
21
+ it 'column2 should say "Bar"' do
22
+ @layout.column2.headerCell.stringValue.should == 'Bar'
23
+ end
24
+
25
+ it 'should have a column called "quux"' do
26
+ column = @layout.table.tableColumnWithIdentifier('quux')
27
+ column.should.be.kind_of(NSTableColumn)
28
+ end
29
+
30
+ it 'column3 should say "Quux"' do
31
+ @layout.column3.headerCell.stringValue.should == 'Quux'
32
+ end
33
+
34
+ end
@@ -1,4 +1,4 @@
1
- describe MotionKit::Layout do
1
+ describe 'Custom Root Layouts' do
2
2
  before do
3
3
  @view = NSView.new
4
4
  @subject = TestCustomRootLayout.new(root: @view)
@@ -17,7 +17,7 @@ describe 'Frame helpers' do
17
17
  @view_size = CGSize.new(8, 10)
18
18
  @view = NSView.alloc.initWithFrame([[0, 0], @view_size])
19
19
  @view.backgroundColor = NSColor.whiteColor
20
- @view.motion_kit_id = :view
20
+ @layout.name_element(@view, :view)
21
21
 
22
22
  @superview_size = CGSize.new(60, 40)
23
23
  @superview = NSView.alloc.initWithFrame([[0, 0], @superview_size])
@@ -32,7 +32,7 @@ describe 'Frame helpers' do
32
32
 
33
33
  @another_view = NSView.alloc.initWithFrame([[10, 100], [120, 48]])
34
34
  @another_view.backgroundColor = NSColor.redColor
35
- @another_view.motion_kit_id = :another_view
35
+ @layout.name_element(@another_view, :another_view)
36
36
 
37
37
  top_view.addSubview(@another_view)
38
38
  top_view.addSubview(@superview)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: motion-kit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.11
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Colin T.A. Gray
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-07-09 00:00:00.000000000 Z
12
+ date: 2014-08-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: dbt
@@ -48,7 +48,6 @@ files:
48
48
  - lib/motion-kit/object.rb
49
49
  - lib/motion-kit/util.rb
50
50
  - lib/motion-kit/version.rb
51
- - lib/motion-kit-cocoa/cocoa_util.rb
52
51
  - lib/motion-kit-cocoa/constraints/constraint.rb
53
52
  - lib/motion-kit-cocoa/constraints/constraint_placeholder.rb
54
53
  - lib/motion-kit-cocoa/constraints/constraints_layout.rb
@@ -86,8 +85,10 @@ files:
86
85
  - README.md
87
86
  - spec/ios/apply_styles_spec.rb
88
87
  - spec/ios/autoresizing_helper_spec.rb
88
+ - spec/ios/calayer_spec.rb
89
89
  - spec/ios/calculate_spec.rb
90
90
  - spec/ios/calculator_spec.rb
91
+ - spec/ios/child_layouts_spec.rb
91
92
  - spec/ios/constraints_helpers/attribute_lookup_spec.rb
92
93
  - spec/ios/constraints_helpers/axis_lookup_spec.rb
93
94
  - spec/ios/constraints_helpers/center_constraints_spec.rb
@@ -96,6 +97,7 @@ files:
96
97
  - spec/ios/constraints_helpers/relationship_lookup_spec.rb
97
98
  - spec/ios/constraints_helpers/relative_corners_spec.rb
98
99
  - spec/ios/constraints_helpers/relative_location_spec.rb
100
+ - spec/ios/constraints_helpers/scale_constraints_spec.rb
99
101
  - spec/ios/constraints_helpers/simple_constraints_spec.rb
100
102
  - spec/ios/constraints_helpers/size_constraints_spec.rb
101
103
  - spec/ios/constraints_helpers/view_lookup_constraints_spec.rb
@@ -128,6 +130,7 @@ files:
128
130
  - spec/osx/constraints_helpers/orientation_lookup_spec.rb
129
131
  - spec/osx/constraints_helpers/simple_constraints_spec.rb
130
132
  - spec/osx/constraints_helpers/size_constraints_spec.rb
133
+ - spec/osx/constraints_helpers/table_view_spec.rb
131
134
  - spec/osx/create_menu_spec.rb
132
135
  - spec/osx/create_via_extensions_spec.rb
133
136
  - spec/osx/custom_root_layout_spec.rb
@@ -165,8 +168,10 @@ summary: The RubyMotion layout and styling gem.
165
168
  test_files:
166
169
  - spec/ios/apply_styles_spec.rb
167
170
  - spec/ios/autoresizing_helper_spec.rb
171
+ - spec/ios/calayer_spec.rb
168
172
  - spec/ios/calculate_spec.rb
169
173
  - spec/ios/calculator_spec.rb
174
+ - spec/ios/child_layouts_spec.rb
170
175
  - spec/ios/constraints_helpers/attribute_lookup_spec.rb
171
176
  - spec/ios/constraints_helpers/axis_lookup_spec.rb
172
177
  - spec/ios/constraints_helpers/center_constraints_spec.rb
@@ -175,6 +180,7 @@ test_files:
175
180
  - spec/ios/constraints_helpers/relationship_lookup_spec.rb
176
181
  - spec/ios/constraints_helpers/relative_corners_spec.rb
177
182
  - spec/ios/constraints_helpers/relative_location_spec.rb
183
+ - spec/ios/constraints_helpers/scale_constraints_spec.rb
178
184
  - spec/ios/constraints_helpers/simple_constraints_spec.rb
179
185
  - spec/ios/constraints_helpers/size_constraints_spec.rb
180
186
  - spec/ios/constraints_helpers/view_lookup_constraints_spec.rb
@@ -207,6 +213,7 @@ test_files:
207
213
  - spec/osx/constraints_helpers/orientation_lookup_spec.rb
208
214
  - spec/osx/constraints_helpers/simple_constraints_spec.rb
209
215
  - spec/osx/constraints_helpers/size_constraints_spec.rb
216
+ - spec/osx/constraints_helpers/table_view_spec.rb
210
217
  - spec/osx/create_menu_spec.rb
211
218
  - spec/osx/create_via_extensions_spec.rb
212
219
  - spec/osx/custom_root_layout_spec.rb
@@ -1,59 +0,0 @@
1
- module MotionKit
2
- module_function
3
-
4
- # performs a breadth-first search
5
- def find_first_view(root, &condition)
6
- if condition.call(root)
7
- root
8
- else
9
- found = nil
10
- root.subviews.find do |subview|
11
- found = find_first_view(subview, &condition)
12
- end
13
- return found
14
- end
15
- end
16
-
17
- # performs a depth-first and reversed search
18
- def find_last_view(root, &condition)
19
- found = nil
20
- root.subviews.reverse.find do |subview|
21
- found = find_last_view(subview, &condition)
22
- end
23
-
24
- if ! found && condition.call(root)
25
- found = root
26
- end
27
-
28
- return found
29
- end
30
-
31
- # performs a breadth-first search, but returns all matches
32
- def find_all_views(root, &condition)
33
- found = []
34
- if condition.call(root)
35
- found << root
36
- end
37
-
38
- (root.subviews || []).each do |subview|
39
- found.concat(find_all_views(subview, &condition))
40
- end
41
-
42
- return found
43
- end
44
-
45
- # similar to find_all_views, but for CALayer
46
- def find_all_layers(root, &condition)
47
- found = []
48
- if condition.call(root)
49
- found << root
50
- end
51
-
52
- (root.sublayers || []).each do |sublayer|
53
- found.concat(find_all_layers(sublayer, &condition))
54
- end
55
-
56
- return found
57
- end
58
-
59
- end