motion-prime 1.0.2 → 1.0.3

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: cf57e2b87cb9d1c7912cde4c4214abc26989e8cb
4
- data.tar.gz: b2b2918d58563b1d69cee7d61441506f64e946f8
3
+ metadata.gz: 6b5a8d65686ce22cebae1f6a18212692367805be
4
+ data.tar.gz: 3e66ba6bf3966649c60a86210fdad3165a5822a2
5
5
  SHA512:
6
- metadata.gz: 06032b2cfc04f709afba17c4d44cf5a71358e66d82f4034fb80abd0c4411f1656e4e4c68dd35c2417d00086af37fed9183dc3fdac0b5bb2c0c3434579a0ee4c8
7
- data.tar.gz: 2e0a943eb5290ac7cc763e5f1489af9fca9200ead20aa7f9e379c61844ede1b74daa41a42c8b973b5bdd58d99d30a62410d59aa51dd58f3e88da8a6387c951c6
6
+ metadata.gz: 599c6c60f50516854af50238bcbfd1e09a6d2e248e8687c9436672bbe9b7c86192d36c642e0a647da3f04667a57411df4de03aa557efec3a32511738fffad736
7
+ data.tar.gz: 04eadebb2e6967e2abb9ff613bdbc1c38632ec2b907442df57c54ddcd19f3b0477ec6592093ba100cb44c5f6e91f17f769c25fbfadc39989072686ad346e4a7f
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ === 1.0.3
2
+ * Fixed issue with overriding background color
3
+ * Improved support for UIPageViewController
4
+
1
5
  === 1.0.2
2
6
  * Fix regression for UIButton builder
3
7
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- motion-prime (1.0.2)
4
+ motion-prime (1.0.3)
5
5
  activesupport
6
6
  afmotion (~> 2.1.0)
7
7
  bubble-wrap (~> 1.6.0)
data/files/Gemfile CHANGED
@@ -1,7 +1,7 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
3
  gem 'motion-cocoapods', '~> 1.4.1'
4
- gem 'motion-prime', '1.0.2'
4
+ gem 'motion-prime', '1.0.3'
5
5
 
6
6
  # add reside menu for sidebar support
7
7
  # gem 'prime_reside_menu', '~> 0.1.4'
@@ -0,0 +1,5 @@
1
+ def diff(other)
2
+ dup.
3
+ delete_if { |k, v| other[k] == v }.
4
+ merge!(other.dup.delete_if { |k, v| has_key?(k) })
5
+ end
@@ -16,10 +16,36 @@ class Kernel
16
16
  end
17
17
 
18
18
  def pp(*attrs)
19
- NSLog([*attrs].map(&:inspect).join(' '))
19
+ attrs = [*attrs]
20
+ results = attrs.map.with_index do |entity, i|
21
+ if entity.is_a?(Hash)
22
+ "#{"\n" unless attrs[i-1].is_a?(Hash)}#{inspect_hash(entity)}\n"
23
+ else
24
+ entity.inspect
25
+ end
26
+ end
27
+ NSLog(results.compact.join(' '))
20
28
  attrs
21
29
  end
22
30
 
31
+ def inspect_hash(hash, depth = 0)
32
+ return '{}' if hash.blank?
33
+ res = hash.map.with_index do |(key, value), i|
34
+ k = "#{' '*depth}#{i.zero? ? '{' : ' '}#{key.inspect}=>"
35
+ pair = if value.is_a?(Hash)
36
+ "#{k}\n#{inspect_hash(value, depth + 1)}"
37
+ else
38
+ [k, value.inspect].join
39
+ end
40
+ if i == hash.count-1
41
+ pair + '}'
42
+ else
43
+ pair + ",\n"
44
+ end
45
+ end
46
+ res.join
47
+ end
48
+
23
49
  def class_name_without_kvo
24
50
  self.class.name.gsub(/^NSKVONotifying_/, '')
25
51
  end
@@ -66,7 +66,7 @@ module MotionPrime
66
66
  block.try(:call, view, self)
67
67
  end
68
68
 
69
- if computed_options.has_key?(:delegate) && computed_options[:delegate].respond_to?(:delegated_by)
69
+ if computed_options.has_key?(:delegate) && computed_options[:delegate].respond_to?(:delegated_by) && view.respond_to?(:setDelegate)
70
70
  computed_options[:delegate].delegated_by(view)
71
71
  end
72
72
  view
@@ -124,11 +124,11 @@ module MotionPrime
124
124
  end
125
125
 
126
126
  def hide
127
- view.hidden = true
127
+ view.hidden = true if view # TODO: should we update computed options in opposite case?
128
128
  end
129
129
 
130
130
  def show
131
- view.hidden = false
131
+ view.hidden = false if view
132
132
  end
133
133
 
134
134
  def bind_gesture(action, receiver = nil)
@@ -16,7 +16,8 @@ module MotionPrime
16
16
  masks_to_bounds: options[:layer].try(:[], :masks_to_bounds) || options[:clips_to_bounds],
17
17
  corner_radius: options[:layer].try(:[], :corner_radius).to_f,
18
18
  border_width: options[:layer].try(:[], :border_width).to_f,
19
- border_color: options[:layer].try(:[], :border_color).try(:uicolor) || background_color
19
+ border_color: options[:layer].try(:[], :border_color).try(:uicolor) || background_color,
20
+ dashes: options[:layer].try(:[], :dashes),
20
21
  }
21
22
  end
22
23
 
@@ -3,27 +3,35 @@ module MotionPrime
3
3
  def draw_background_in_context(context = nil)
4
4
  context ||= UIGraphicsGetCurrentContext()
5
5
  options = draw_options
6
- rect, background_color, border_width, border_color, corner_radius = options.slice(:rect, :background_color, :border_width, :border_color, :corner_radius).values
6
+ rect, background_color, border_width, border_color, corner_radius, dashes_array = options.slice(:rect, :background_color, :border_width, :border_color, :corner_radius, :dashes).values
7
7
 
8
8
  return unless background_color || border_width > 0
9
9
 
10
10
  inset = border_width > 0 ? (border_width - 1 )*0.5 : 0
11
11
  rect = CGRectInset(rect, -inset, -inset)
12
+
13
+ if dashes_array
14
+ dashes = Pointer.new(:float, dashes_array.count)
15
+ dashes_array.each_with_index { |length, i| dashes[i] = length }
16
+ end
17
+
12
18
  if corner_radius > 0
13
- bezierPath = UIBezierPath.bezierPathWithRoundedRect rect, cornerRadius: corner_radius
19
+ bezier_path = UIBezierPath.bezierPathWithRoundedRect rect, cornerRadius: corner_radius
14
20
  UIGraphicsPushContext(context)
21
+ bezier_path.setLineDash(dashes, count: dashes_array.count, phase: 0) if dashes
15
22
  if border_width > 0
16
- bezierPath.lineWidth = border_width
23
+ bezier_path.lineWidth = border_width
17
24
  border_color.setStroke
18
- bezierPath.stroke
25
+ bezier_path.stroke
19
26
  end
20
27
  if background_color
21
28
  background_color.setFill
22
- bezierPath.fill
29
+ bezier_path.fill
23
30
  end
24
31
  UIGraphicsPopContext()
25
32
  else
26
33
  if border_width > 0 && border_color
34
+ CGContextSetLineDash(context, dashes_array.count, dashes, 0) if dashes
27
35
  CGContextSetLineWidth(context, border_width)
28
36
  CGContextSetStrokeColorWithColor(context, border_color.uicolor.cgcolor)
29
37
  CGContextStrokeRect(context, rect)
@@ -1,23 +1,14 @@
1
1
  module MotionPrime
2
2
  class PageViewControllerElement < BaseElement
3
+ after_render :set_delegated
3
4
  def view_class
4
5
  "UIPageViewController"
5
6
  end
6
7
 
7
- def render!(options = {}, &block)
8
- builder = ViewBuilder.new(class_factory(view_class), computed_options.merge(options))
9
- controller = builder.view
10
- ViewStyler.new(controller, CGRectZero, builder.options).apply
11
-
12
- first = section.collection_delegate.fetch_item(0)
13
- controller.setViewControllers([first], direction:UIPageViewControllerNavigationDirectionForward,
14
- animated:false, completion:lambda{|a|}) # completion:nil blows up!
15
-
16
- screen.addChildViewController(controller)
17
- screen.view.addSubview(controller.view)
18
- controller.didMoveToParentViewController(screen)
19
- screen.view.gestureRecognizers = controller.gestureRecognizers
20
- self.view = controller
8
+ def set_delegated
9
+ if computed_options.has_key?(:delegate) && computed_options[:delegate].respond_to?(:delegated_by) && section.respond_to?(:page_controller)
10
+ computed_options[:delegate].delegated_by(section.page_controller)
11
+ end
21
12
  end
22
13
  end
23
14
  end
@@ -106,7 +106,7 @@ module MotionPrime
106
106
  inspection = self.info.keys.map { |name|
107
107
  "#{name}: #{attribute_for_inspect(name)}"
108
108
  }.compact.join(", ")
109
- "#<#{self.class}:0x#{self.object_id.to_s(16)}> #{inspection}>"
109
+ "#<#{self.class}:0x#{self.object_id.to_s(16)} #{inspection}>"
110
110
  end
111
111
 
112
112
  # Returns a clone of the record with empty bags
@@ -236,6 +236,9 @@ module MotionPrime
236
236
  api_client.get association_sync_url(key, options, sync_options), params do |response, status_code|
237
237
  data = options[:sync_key] && response ? response[options[:sync_key]] : response
238
238
  if data
239
+ unless data.is_a?(Array)
240
+ raise MotionPrime::SyncError, "Expected Array for sync '#{key}', but received object"
241
+ end
239
242
  NSLog("SYNC: finished sync for #{key} in #{self.class_name_without_kvo}")
240
243
  fetch_has_many_with_attributes(key, data, sync_options)
241
244
  block.call(data, status_code, response) if use_callback
@@ -1,3 +1,4 @@
1
1
  module MotionPrime
2
2
  class StoreError < StandardError; end
3
+ class SyncError < StandardError; end
3
4
  end
@@ -6,7 +6,7 @@ module MotionPrime
6
6
  end
7
7
 
8
8
  def clear_delegated
9
- Array.wrap(@delegated_views).each { |view| view.setDelegate(nil) }
9
+ Array.wrap(@delegated_views).each { |view| view.try(:setDelegate, nil) }
10
10
  end
11
11
  end
12
12
  end
@@ -51,9 +51,9 @@ module MotionPrime
51
51
  end
52
52
 
53
53
  def dealloc
54
- Prime.logger.dealloc_message :collection, self, self.collection_element.try(:view).to_s
55
- collection_delegate.clear_delegated
56
- collection_view.setDataSource nil
54
+ Prime.logger.dealloc_message :collection, self, @collection_element.try(:view).to_s
55
+ @collection_delegate.try(:clear_delegated)
56
+ @collection_element.try(:view).try(:setDataSource, nil)
57
57
  super
58
58
  end
59
59
 
@@ -156,7 +156,7 @@ module MotionPrime
156
156
  end
157
157
 
158
158
  def collection_element_options
159
- container_options.slice(:render_target).merge({
159
+ container_options.except(:styles, :height, :hidden).merge({
160
160
  section: self.weak_ref,
161
161
  styles: collection_styles.values.flatten,
162
162
  delegate: collection_delegate,
@@ -377,7 +377,6 @@ module MotionPrime
377
377
  raw_options = {}
378
378
  raw_options.merge!(self.class.container_options.try(:clone) || {})
379
379
  raw_options.merge!(options[:container] || {})
380
-
381
380
  # allow to pass styles as proc
382
381
  normalize_options(raw_options, elements_eval_object, nil, [:styles])
383
382
  @container_options = raw_options # must be here because section_styles may use container_options for custom styles
@@ -2,7 +2,9 @@ motion_require './page_view/page_view_delegate'
2
2
 
3
3
  module MotionPrime
4
4
  class PageViewSection < AbstractCollectionSection
5
+ attr_accessor :page_controller
5
6
  before_render :render_collection
7
+ after_render :set_first_page
6
8
 
7
9
  def collection_styles_base
8
10
  :base_page_view
@@ -12,16 +14,59 @@ module MotionPrime
12
14
  @collection_delegate ||= PageViewDelegate.new(section: self)
13
15
  end
14
16
 
15
- def grid_element_options
17
+ def page_element_options
16
18
  collection_element_options
17
19
  end
18
20
 
19
21
  def render_collection
20
- self.collection_element = screen.page_view_controller(grid_element_options)
22
+ self.collection_element = screen.page_view_controller(page_element_options)
21
23
  end
22
24
 
23
- def create_section_elements
24
- return
25
+ def set_first_page
26
+ set_page(0)
27
+ end
28
+
29
+ def set_page(index, animated = false, &block)
30
+ block ||= proc{|a|}
31
+ page = page_for_index(index)
32
+ current_index = index_for_page(page_controller.viewControllers.last).to_i
33
+ direction = current_index <= index ? UIPageViewControllerNavigationDirectionForward : UIPageViewControllerNavigationDirectionReverse
34
+ page_controller.setViewControllers([page], direction: direction, animated: animated, completion: block)
35
+ end
36
+
37
+ def reload_collection_data
38
+ page_controller.setViewControllers(page_controller.viewControllers, direction: UIPageViewControllerNavigationDirectionForward, animated: false, completion: proc{|a|})
39
+ end
40
+
41
+ def add_pages(sections, follow = false)
42
+ @data += Array.wrap(sections)
43
+ if follow
44
+ page_index = data.count - 1
45
+ set_page(page_index, true) do |finished|
46
+ BW::Reactor.schedule_on_main { set_page(page_index, false) }
47
+ end
48
+ else
49
+ reload_collection_data
50
+ end
51
+ end
52
+
53
+ # Delegate
54
+ def page_for_index(index)
55
+ return nil if !index || data.length == 0 || index < 0 || index >= data.size
56
+ @view_controllers ||= []
57
+ if @view_controllers[index]
58
+ @view_controllers[index]
59
+ else
60
+ controller = MotionPrime::Screen.new
61
+ section = data[index]
62
+ section.screen = controller.weak_ref
63
+ controller.set_section :main, instance: section
64
+ @view_controllers[index] = controller
65
+ end
66
+ end
67
+
68
+ def index_for_page(view_controller)
69
+ Array.wrap(@view_controllers).index(view_controller)
25
70
  end
26
71
  end
27
72
  end
@@ -6,7 +6,6 @@ module MotionPrime
6
6
  def initialize(options)
7
7
  self.collection_section = options[:section].try(:weak_ref)
8
8
  @section_instance = collection_section.to_s
9
- @view_controllers = {}
10
9
  end
11
10
 
12
11
  # def dealloc
@@ -14,50 +13,27 @@ module MotionPrime
14
13
  # super
15
14
  # end
16
15
 
17
- def data
18
- collection_section.data
19
- end
20
-
21
- def fetch_item(index)
22
- if @view_controllers[index]
23
- @view_controllers[index]
24
- else
25
- controller = MotionPrime::Screen.new
26
- section = data[index]
27
- section.screen = controller.weak_ref
28
- controller.set_section :main, instance: section
29
- @view_controllers[index] = controller
30
- end
31
- end
32
-
33
16
  def viewControllerAtIndex(index, storyboard:storyboard)
34
- return nil if data.length == 0 || index >= data.size
35
- fetch_item(index)
36
- end
37
-
38
- def indexOfViewController(viewController)
39
- @view_controllers.key(viewController)
17
+ collection_section.page_for_index(index)
40
18
  end
41
19
 
42
20
  def pageViewController(pvc, viewControllerBeforeViewController:vc)
43
- index = indexOfViewController(vc)
44
- return if !index || index <= 0
45
- fetch_item(index - 1)
21
+ index = collection_section.index_for_page(vc)
22
+ collection_section.page_for_index(index - 1)
46
23
  end
47
24
 
48
-
49
25
  def pageViewController(pvc, viewControllerAfterViewController:vc)
50
- index = indexOfViewController(vc)
51
- return if !index || index >= data.size - 1
52
- fetch_item(index + 1)
26
+ index = collection_section.index_for_page(vc)
27
+ collection_section.page_for_index(index + 1)
53
28
  end
54
29
 
55
30
  def presentationCountForPageViewController(controller)
56
- data.size
31
+ collection_section.data.size
57
32
  end
58
33
 
59
34
  def pageViewController(pvc, spineLocationForInterfaceOrientation:orientation)
60
- page_view_controller = collection_section.collection_view
35
+ page_view_controller = collection_section.page_controller
36
+
61
37
  current = page_view_controller.viewControllers[0]
62
38
  is_portrait = UIDevice.currentDevice.orientation == UIDeviceOrientationLandscapeLeft ||
63
39
  UIDevice.currentDevice.orientation == UIDeviceOrientationPortraitUpsideDown ||
@@ -67,7 +43,7 @@ module MotionPrime
67
43
  page_view_controller.doubleSided = false
68
44
  return UIPageViewControllerSpineLocationMin
69
45
  else
70
- index = indexOfViewController(current)
46
+ index = collection_section.index_for_page(current)
71
47
  if (index==0 || index%2==0)
72
48
  next_vc = pageViewController(page_view_controller, viewControllerAfterViewController: current)
73
49
  viewControllers = [current, next_vc]
@@ -58,7 +58,7 @@ module MotionPrime
58
58
  next Prime.logger.debug("Reload section: `#{section.name}` is not in the list") unless index
59
59
  paths << index
60
60
  block.call(section, index, counter)
61
- deque_cell(section, at: path) # deque cached
61
+ deque_cell(section, at: index) # deque cached
62
62
  section.reload
63
63
  end
64
64
  self.performSelectorOnMainThread(:reload_cells, withObject: paths, waitUntilDone: false)
@@ -1,3 +1,3 @@
1
1
  module MotionPrime
2
- VERSION = "1.0.2"
2
+ VERSION = "1.0.3"
3
3
  end
@@ -19,7 +19,7 @@ module MotionPrime
19
19
  view_stack.last.bounds
20
20
  end
21
21
  builder = ViewBuilder.new(klass, options.merge(parent_bounds: parent_bounds))
22
- options = builder.options.merge(calculate_frame: true, parent_bounds: parent_bounds)
22
+ options = builder.options.merge(calculate_frame: options.fetch(:calculate_frame, true), parent_bounds: parent_bounds)
23
23
  view = builder.view
24
24
  insert_index = options.delete(:at_index)
25
25
 
@@ -81,8 +81,20 @@ module MotionPrime
81
81
  klass.alloc.initWithItems items
82
82
  },
83
83
  'UIPageViewController' => Proc.new{|klass, options|
84
- klass.alloc.initWithTransitionStyle(UIPageViewControllerTransitionStylePageCurl,
84
+ controller = klass.alloc.initWithTransitionStyle(options.delete(:transition_style) || UIPageViewControllerTransitionStyleScroll,
85
85
  navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal, options:nil)
86
+
87
+ controller.setDelegate(options.delete(:delegate))
88
+ controller.setDataSource(options.delete(:data_source))
89
+ section = options[:section]
90
+ section.page_controller = controller
91
+ if screen = section.screen
92
+ screen.addChildViewController(controller)
93
+ screen.view.gestureRecognizers = controller.gestureRecognizers
94
+ controller.didMoveToParentViewController(screen)
95
+ end
96
+
97
+ controller.view
86
98
  },
87
99
  'MPTableView' => Proc.new{|klass, options|
88
100
  style = options.delete(:style) || UITableViewStylePlain
@@ -5,7 +5,11 @@ module MotionPrime
5
5
  include HasClassFactory
6
6
  include ElementTextMixin
7
7
 
8
- ORDER = %w[frame font placeholder_font text title_label title]
8
+ ORDER = %w[
9
+ frame
10
+ font placeholder_font text title_label title
11
+ minimum_value maximum_value value
12
+ ]
9
13
 
10
14
  attr_reader :view, :options
11
15
 
@@ -63,14 +67,14 @@ module MotionPrime
63
67
  options[:number_of_lines] = 0
64
68
  end
65
69
  end
70
+ # Fix issue overriding background color
71
+ if options[:background_image].present?
72
+ options.delete(:background_color)
73
+ end
66
74
  extract_font_options(options)
67
75
  extract_font_options(options, 'placeholder')
68
76
 
69
- @options = Hash[
70
- options.sort_by do |k,v|
71
- index = ORDER.index(k.to_s) || -1
72
- end.reverse
73
- ]
77
+ @options = Hash[options.sort_by {|k,v| ORDER.index(k.to_s) || ORDER.count }]
74
78
  end
75
79
 
76
80
  def extract_font_options(options, prefix = nil)
@@ -228,6 +232,8 @@ module MotionPrime
228
232
  stroke_layer.strokeColor = value[:border_color].uicolor.cgcolor
229
233
  stroke_layer.lineWidth = value[:border_width].to_f*2 # another half is hidden by the mask
230
234
 
235
+ stroke_layer.lineDashPattern = value[:dashes] if value[:dashes].present?
236
+
231
237
  container_view = view.delegate
232
238
  stroke_view = UIView.alloc.initWithFrame(layer_bounds)
233
239
  stroke_view.userInteractionEnabled = false
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: motion-prime
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Iskander Haziev
@@ -9,202 +9,202 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-06-08 00:00:00.000000000 Z
12
+ date: 2014-06-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ">="
18
+ - - '>='
19
19
  - !ruby/object:Gem::Version
20
20
  version: '0'
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ">="
25
+ - - '>='
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: motion-stump
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ">="
32
+ - - '>='
33
33
  - !ruby/object:Gem::Version
34
34
  version: '0'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ">="
39
+ - - '>='
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: motion-redgreen
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ">="
46
+ - - '>='
47
47
  - !ruby/object:Gem::Version
48
48
  version: '0'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ">="
53
+ - - '>='
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: cocoapods
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ">="
60
+ - - '>='
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0'
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ">="
67
+ - - '>='
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: motion-cocoapods
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ">="
74
+ - - '>='
75
75
  - !ruby/object:Gem::Version
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - ">="
81
+ - - '>='
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: motion-require
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ">="
88
+ - - '>='
89
89
  - !ruby/object:Gem::Version
90
90
  version: '0'
91
91
  type: :runtime
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - ">="
95
+ - - '>='
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: motion-support
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - "~>"
102
+ - - ~>
103
103
  - !ruby/object:Gem::Version
104
104
  version: 0.2.6
105
105
  type: :runtime
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - "~>"
109
+ - - ~>
110
110
  - !ruby/object:Gem::Version
111
111
  version: 0.2.6
112
112
  - !ruby/object:Gem::Dependency
113
113
  name: bubble-wrap
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
- - - "~>"
116
+ - - ~>
117
117
  - !ruby/object:Gem::Version
118
118
  version: 1.6.0
119
119
  type: :runtime
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
123
- - - "~>"
123
+ - - ~>
124
124
  - !ruby/object:Gem::Version
125
125
  version: 1.6.0
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: sugarcube
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  requirements:
130
- - - "~>"
130
+ - - ~>
131
131
  - !ruby/object:Gem::Version
132
132
  version: 1.6.0
133
133
  type: :runtime
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
136
136
  requirements:
137
- - - "~>"
137
+ - - ~>
138
138
  - !ruby/object:Gem::Version
139
139
  version: 1.6.0
140
140
  - !ruby/object:Gem::Dependency
141
141
  name: afmotion
142
142
  requirement: !ruby/object:Gem::Requirement
143
143
  requirements:
144
- - - "~>"
144
+ - - ~>
145
145
  - !ruby/object:Gem::Version
146
146
  version: 2.1.0
147
147
  type: :runtime
148
148
  prerelease: false
149
149
  version_requirements: !ruby/object:Gem::Requirement
150
150
  requirements:
151
- - - "~>"
151
+ - - ~>
152
152
  - !ruby/object:Gem::Version
153
153
  version: 2.1.0
154
154
  - !ruby/object:Gem::Dependency
155
155
  name: methadone
156
156
  requirement: !ruby/object:Gem::Requirement
157
157
  requirements:
158
- - - ">="
158
+ - - '>='
159
159
  - !ruby/object:Gem::Version
160
160
  version: '0'
161
161
  type: :runtime
162
162
  prerelease: false
163
163
  version_requirements: !ruby/object:Gem::Requirement
164
164
  requirements:
165
- - - ">="
165
+ - - '>='
166
166
  - !ruby/object:Gem::Version
167
167
  version: '0'
168
168
  - !ruby/object:Gem::Dependency
169
169
  name: rm-digest
170
170
  requirement: !ruby/object:Gem::Requirement
171
171
  requirements:
172
- - - ">="
172
+ - - '>='
173
173
  - !ruby/object:Gem::Version
174
174
  version: '0'
175
175
  type: :runtime
176
176
  prerelease: false
177
177
  version_requirements: !ruby/object:Gem::Requirement
178
178
  requirements:
179
- - - ">="
179
+ - - '>='
180
180
  - !ruby/object:Gem::Version
181
181
  version: '0'
182
182
  - !ruby/object:Gem::Dependency
183
183
  name: thor
184
184
  requirement: !ruby/object:Gem::Requirement
185
185
  requirements:
186
- - - ">="
186
+ - - '>='
187
187
  - !ruby/object:Gem::Version
188
188
  version: '0'
189
189
  type: :runtime
190
190
  prerelease: false
191
191
  version_requirements: !ruby/object:Gem::Requirement
192
192
  requirements:
193
- - - ">="
193
+ - - '>='
194
194
  - !ruby/object:Gem::Version
195
195
  version: '0'
196
196
  - !ruby/object:Gem::Dependency
197
197
  name: activesupport
198
198
  requirement: !ruby/object:Gem::Requirement
199
199
  requirements:
200
- - - ">="
200
+ - - '>='
201
201
  - !ruby/object:Gem::Version
202
202
  version: '0'
203
203
  type: :runtime
204
204
  prerelease: false
205
205
  version_requirements: !ruby/object:Gem::Requirement
206
206
  requirements:
207
- - - ">="
207
+ - - '>='
208
208
  - !ruby/object:Gem::Version
209
209
  version: '0'
210
210
  description: RubyMotion apps development framework
@@ -215,9 +215,9 @@ executables:
215
215
  extensions: []
216
216
  extra_rdoc_files: []
217
217
  files:
218
- - ".gitignore"
219
- - ".travis.yml"
220
- - ".yardopts"
218
+ - .gitignore
219
+ - .travis.yml
220
+ - .yardopts
221
221
  - CHANGELOG.md
222
222
  - Gemfile
223
223
  - Gemfile.lock
@@ -260,6 +260,7 @@ files:
260
260
  - motion-prime/api_client.rb
261
261
  - motion-prime/config/base.rb
262
262
  - motion-prime/config/config.rb
263
+ - motion-prime/core_ext/hash.rb
263
264
  - motion-prime/core_ext/kernel.rb
264
265
  - motion-prime/core_ext/nil_class.rb
265
266
  - motion-prime/core_ext/time.rb
@@ -431,17 +432,17 @@ require_paths:
431
432
  - lib
432
433
  required_ruby_version: !ruby/object:Gem::Requirement
433
434
  requirements:
434
- - - ">="
435
+ - - '>='
435
436
  - !ruby/object:Gem::Version
436
437
  version: '0'
437
438
  required_rubygems_version: !ruby/object:Gem::Requirement
438
439
  requirements:
439
- - - ">="
440
+ - - '>='
440
441
  - !ruby/object:Gem::Version
441
442
  version: '0'
442
443
  requirements: []
443
444
  rubyforge_project:
444
- rubygems_version: 2.2.2
445
+ rubygems_version: 2.0.6
445
446
  signing_key:
446
447
  specification_version: 4
447
448
  summary: RubyMotion apps development framework