rm-extensions 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bc5b5569839be0c1b41cfea9a8c319e8b34b1e74
4
- data.tar.gz: 5ffb320a7f8e0bdc87c75b61238f4f2826d4a37c
3
+ metadata.gz: 2ba4ba13ce05f6391b658a6d6968fd368d6eb66e
4
+ data.tar.gz: 9140c139f8dc4c75d01183e46019df8ebac3a7c2
5
5
  SHA512:
6
- metadata.gz: f5c8699627b303137e762d883e77b6f9367ef192ff0a4795fbc7c1dbf202b2501a8490a274eb204aa57bbbb0cf8c3b410d731b5a1c45d3678b58b9a78d4f3c26
7
- data.tar.gz: 3e1b1ea19d4a8e4846e6d0fba244658a9ebcff7ba426df55f051ed359a5d75a10f571b1f6bdd84ec6df4492d2f81a190baee95dac072c9e2a84aefbd4ed7e341
6
+ metadata.gz: 4ba45a55bbee4a13e6d0d72326208e4c704377ad24b28c6e04569e857cfeb74e869e9d846e9744367432e34068f8808dd502326f79b9cf242dfcebdb541b7c6c
7
+ data.tar.gz: 03222f43b0510a630fd09b33f30bc59815c06ad6d54e41384f76880d0f645bb449ff297ee689d01988235ff66d4a8be31df1385d60b174b6c7222be4c18d7c4e
data/lib/motion/layout.rb CHANGED
@@ -16,12 +16,16 @@ module RMExtensions
16
16
  nil => NSLayoutAttributeNotAnAttribute
17
17
  }
18
18
 
19
+ ATTRIBUTE_LOOKUP_INVERSE = ATTRIBUTE_LOOKUP.invert
20
+
19
21
  RELATED_BY_LOOKUP = {
20
22
  "<=" => NSLayoutRelationLessThanOrEqual,
21
23
  "==" => NSLayoutRelationEqual,
22
24
  ">=" => NSLayoutRelationGreaterThanOrEqual
23
25
  }
24
26
 
27
+ RELATED_BY_LOOKUP_INVERSE = RELATED_BY_LOOKUP.invert
28
+
25
29
  PRIORITY_LOOKUP = {
26
30
  "required" => UILayoutPriorityRequired, # = 1000
27
31
  "high" => UILayoutPriorityDefaultHigh, # = 750
@@ -29,6 +33,8 @@ module RMExtensions
29
33
  "fit" => UILayoutPriorityFittingSizeLevel # = 50
30
34
  }
31
35
 
36
+ PRIORITY_LOOKUP_INVERSE = PRIORITY_LOOKUP.invert
37
+
32
38
  AXIS_LOOKUP = {
33
39
  "h" => UILayoutConstraintAxisHorizontal,
34
40
  "v" => UILayoutConstraintAxisVertical
@@ -58,18 +64,14 @@ module RMExtensions
58
64
  @subviews
59
65
  end
60
66
 
61
- def eqs(str, debug=false)
67
+ def eqs(str)
62
68
  str.split("\n").map(&:strip).select { |x| !x.empty? }.map do |line|
63
- eq(line, debug)
69
+ eq(line)
64
70
  end
65
71
  end
66
72
 
67
- def eq?(str)
68
- eq(str, true)
69
- end
70
-
71
73
  # Constraints are of the form "view1.attr1 <relation> view2.attr2 * multiplier + constant @ priority"
72
- def eq(str, debug=false)
74
+ def eq(str)
73
75
  item = nil
74
76
  item_attribute = nil
75
77
  related_by = nil
@@ -78,7 +80,9 @@ module RMExtensions
78
80
  multiplier = nil
79
81
  constant = nil
80
82
 
81
- parts = str.split(" ").select { |x| !x.empty? }
83
+ parts = str.split("#", 2).first.split(" ").select { |x| !x.empty? }
84
+
85
+ debug = parts.delete("?")
82
86
 
83
87
  # first part should always be view1.attr1
84
88
  part = parts.shift
@@ -107,9 +111,9 @@ module RMExtensions
107
111
  parts.delete_at(idx)
108
112
  end
109
113
 
110
- # look for multipler
114
+ # look for multiplier
111
115
  if idx = parts.index("*")
112
- multipler = parts[idx + 1]
116
+ multiplier = parts[idx + 1]
113
117
  parts.delete_at(idx)
114
118
  parts.delete_at(idx)
115
119
  end
@@ -137,21 +141,6 @@ module RMExtensions
137
141
  end
138
142
  end
139
143
 
140
- debug_hash = nil
141
-
142
- if debug
143
- debug_hash = {
144
- :item => item,
145
- :item_attribute => item_attribute,
146
- :related_by => related_by,
147
- :to_item => to_item,
148
- :to_item_attribute => to_item_attribute,
149
- :multiplier => multiplier,
150
- :constant => constant,
151
- :priority => priority
152
- }
153
- end
154
-
155
144
  # normalize
156
145
 
157
146
  res_item = item == "view" ? @view : @subviews[item]
@@ -186,18 +175,18 @@ module RMExtensions
186
175
  errors.push("Invalid attr2: #{to_item_attribute}") unless res_to_item_attribute
187
176
 
188
177
  if errors.size > 0 || debug
189
- puts "======================== constraint debug ========================"
190
- puts "given:"
191
- puts " #{str}"
192
- puts "interpreted:"
193
- puts " item: #{item}"
194
- puts " item_attribute: #{item_attribute}"
195
- puts " related_by: #{related_by}"
196
- puts " to_item: #{to_item}"
197
- puts " to_item_attribute: #{to_item_attribute}"
198
- puts " multiplier: #{multiplier}"
199
- puts " constant: #{constant}"
200
- puts " priority: #{priority}"
178
+ p "======================== constraint debug ========================"
179
+ p "given:"
180
+ p " #{str}"
181
+ p "interpreted:"
182
+ p " item: #{item}"
183
+ p " item_attribute: #{item_attribute}"
184
+ p " related_by: #{related_by}"
185
+ p " to_item: #{to_item}"
186
+ p " to_item_attribute: #{to_item_attribute}"
187
+ p " multiplier: #{multiplier}"
188
+ p " constant: #{constant}"
189
+ p " priority: #{priority}"
201
190
  end
202
191
 
203
192
  if errors.size > 0
@@ -216,13 +205,26 @@ module RMExtensions
216
205
  end
217
206
 
218
207
  if debug
219
- puts "implemented:"
220
- puts " #{constraint.description}"
208
+ p "implemented:"
209
+ p " #{constraint.description}"
221
210
  end
222
211
 
223
212
  @view.addConstraint(constraint)
224
213
  constraint
225
214
  end
226
215
 
216
+ def describe(constraint)
217
+ subviews_inverse = subviews.invert
218
+ item = subviews_inverse[constraint.firstItem]
219
+ item_attribute = ATTRIBUTE_LOOKUP_INVERSE[constraint.firstAttribute]
220
+ related_by = RELATED_BY_LOOKUP_INVERSE[constraint.relation]
221
+ to_item = subviews_inverse[constraint.secondItem]
222
+ to_item_attribute = ATTRIBUTE_LOOKUP_INVERSE[constraint.secondAttribute]
223
+ multiplier = constraint.multiplier
224
+ constant = constraint.constant
225
+ priority = PRIORITY_LOOKUP_INVERSE[constraint.priority] || constraint.priority
226
+ "#{item}.#{item_attribute} #{related_by} #{to_item}.#{to_item_attribute} * #{multiplier} + #{constant} @ #{priority}"
227
+ end
228
+
227
229
  end
228
230
  end
@@ -1,3 +1,3 @@
1
1
  module RMExtensions
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rm-extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Noon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-18 00:00:00.000000000 Z
11
+ date: 2013-08-19 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Extensions and helpers for dealing with various areas of rubymotion
14
14
  email: