motion-kit 0.10.11 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
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