motion_migrate 0.1.0 → 0.2.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7549283c381476dee74df55d48360b85abf62524
4
+ data.tar.gz: f73dfb6e0373195504b4ff7b81eb225b4ac73510
5
+ SHA512:
6
+ metadata.gz: 834385b7af6c8eaac27f4d605eff98fa276e0776fe85caa18f4093e709c35a6b6d34eec8561fe1b27213875ad7d3539826a5f3834972bc3487ea2bc4772d0acc
7
+ data.tar.gz: 047f4e2da54a8d373aecd7e79f10cc31aa1882497090755e5a5892b69440b8a74a796ae6273ad82f097b5c9696aae6e9320a41a22f6b1a043aafd9125f89af11
@@ -1,5 +1,5 @@
1
1
  module MotionMigrate
2
- module MotionGenerate
2
+ module MotionGenerate
3
3
  module Parser
4
4
  def self.included(base)
5
5
  base.extend(ClassMethods)
@@ -24,4 +24,4 @@ module MotionMigrate
24
24
  end
25
25
  end
26
26
  end
27
- end
27
+ end
@@ -1,5 +1,5 @@
1
1
  module MotionMigrate
2
- module MotionGenerate
2
+ module MotionGenerate
3
3
  module Property
4
4
  def self.included(base)
5
5
  base.extend(ClassMethods)
@@ -32,75 +32,80 @@ module MotionMigrate
32
32
  def raise_if_property_type_not_allowed(type)
33
33
  unless property_type_allowed?(type)
34
34
  raise <<-ERROR
35
- ! The type must be one of the following:
36
- ! :string
37
- ! :integer_16
38
- ! :integer_32
39
- ! :integer_64
40
- ! :decimal
41
- ! :double
42
- ! :float
43
- ! :boolean
44
- ! :date
45
- ! :binary_data
35
+ ! The type must be one of the following:
36
+ ! :string
37
+ ! :integer_16
38
+ ! :integer_32
39
+ ! :integer_64
40
+ ! :decimal
41
+ ! :double
42
+ ! :float
43
+ ! :boolean
44
+ ! :date
45
+ ! :binary_data
46
+ ! :transformable
46
47
  ERROR
47
48
  end
48
49
  end
49
50
 
50
51
  def property_type_allowed?(type)
51
52
  [
52
- :string,
53
- :integer_16,
54
- :integer_32,
55
- :integer_64,
56
- :decimal,
57
- :double,
58
- :float,
59
- :boolean,
60
- :date,
61
- :binary_data
53
+ :string,
54
+ :integer_16,
55
+ :integer_32,
56
+ :integer_64,
57
+ :decimal,
58
+ :double,
59
+ :float,
60
+ :boolean,
61
+ :date,
62
+ :binary_data,
63
+ :transformable
62
64
  ].include?(type)
63
65
  end
64
66
 
65
67
  def raise_if_property_option_not_allowed(type, option)
66
68
  unless property_option_allowed?(type, option)
67
69
  raise <<-ERROR
68
- ! The option must be one of the following:
70
+ ! The option must be one of the following:
71
+ !
72
+ ! For type :string:
73
+ ! :min
74
+ ! :max
75
+ ! :default
76
+ ! :regex
69
77
  !
70
- ! For type :string:
71
- ! :min
72
- ! :max
73
- ! :default
74
- ! :regex
78
+ ! For type :boolean:
79
+ ! :default
75
80
  !
76
- ! For type :boolean:
77
- ! :default
81
+ ! For type :date, :integer_16, :integer_32, :integer_64, :decimal, :double or :float:
82
+ ! :min
83
+ ! :max
84
+ ! :default
78
85
  !
79
- ! For type :date, :integer_16, :integer_32, :integer_64, :decimal, :double or :float:
80
- ! :min
81
- ! :max
82
- ! :default
86
+ ! For type :binary_data:
87
+ ! :external_storage
83
88
  !
84
- ! For type :binary_data:
85
- ! :external_storage
89
+ ! For type :transformable:
90
+ ! :transformer_name
86
91
  !
87
- ! Options allowed for all types:
88
- ! :required
89
- ! :transient
90
- ! :indexed
91
- ! :spotlight
92
- ! :truth_file
92
+ ! Options allowed for all types:
93
+ ! :required
94
+ ! :transient
95
+ ! :indexed
96
+ ! :spotlight
97
+ ! :truth_file
93
98
  ERROR
94
99
  end
95
100
  end
96
101
 
97
102
  def property_option_allowed?(type, option)
98
103
  type = :number if [
99
- :integer_16,
100
- :integer_32,
101
- :integer_64,
102
- :decimal,
103
- :double,
104
+ :integer_16,
105
+ :integer_32,
106
+ :integer_64,
107
+ :decimal,
108
+ :double,
104
109
  :float,
105
110
  :date
106
111
  ].include?(type)
@@ -109,7 +114,8 @@ module MotionMigrate
109
114
  number: [:min, :max, :default],
110
115
  string: [:min, :max, :default, :regex],
111
116
  boolean: [:default],
112
- binary_data: [:external_storage]
117
+ binary_data: [:external_storage],
118
+ transformable: [:transformer_name]
113
119
  }[type]
114
120
 
115
121
  allowed_options += [
@@ -161,6 +167,8 @@ module MotionMigrate
161
167
  attributes[:regularExpressionString] = value
162
168
  when :external_storage
163
169
  attributes[:allowsExternalBinaryDataStorage] = core_data_boolean(value)
170
+ when :transformer_name
171
+ attributes[:valueTransformerName] = value
164
172
  end
165
173
  end
166
174
  attributes
@@ -168,4 +176,4 @@ module MotionMigrate
168
176
  end
169
177
  end
170
178
  end
171
- end
179
+ end
@@ -1,3 +1,3 @@
1
1
  module MotionMigrate
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -17,5 +17,6 @@ Gem::Specification.new do |gem|
17
17
  gem.require_paths = ["lib"]
18
18
 
19
19
  gem.add_development_dependency 'rake'
20
+ gem.add_development_dependency 'rspec'
20
21
  gem.add_dependency 'nokogiri'
21
22
  end
@@ -26,23 +26,23 @@ module MotionMigrate
26
26
  }
27
27
  end
28
28
 
29
- %w(string integer_16 integer_32 integer_64 decimal double float date binary_data boolean).each do |type|
29
+ %w(string integer_16 integer_32 integer_64 decimal double float date binary_data boolean transformable).each do |type|
30
30
  it "should be able to define #{type}" do
31
31
  type_string = type.split("_").each{|word| word.capitalize! }.join(" ")
32
32
  type_string = "Binary" if type == "binary_data"
33
- MotionMigrate::Model.property(:field, type).should == { :name => :field,
34
- :attributeType => type_string,
33
+ MotionMigrate::Model.property(:field, type).should == { :name => :field,
34
+ :attributeType => type_string,
35
35
  :optional=>"YES",
36
36
  :syncable => "YES" }
37
37
  end
38
38
  end
39
39
 
40
- it "should error on undiffened types" do
40
+ it "should error on undefined types" do
41
41
  lambda { MotionMigrate::Model.property(:field, :unknown) }.should raise_error
42
42
  end
43
43
 
44
- %w(string integer_16 integer_32 integer_64 decimal double float date binary_data boolean).each do |type|
45
- it "should error on undiffened options for #{type}" do
44
+ %w(string integer_16 integer_32 integer_64 decimal double float date binary_data boolean transformable).each do |type|
45
+ it "should error on undefined options for #{type}" do
46
46
  lambda { MotionMigrate::Model.property(:field, type, :unknown => true) }.should raise_error
47
47
  end
48
48
  end
@@ -54,7 +54,7 @@ module MotionMigrate
54
54
  default: "motion",
55
55
  regex: "/we/"
56
56
  })
57
- MotionMigrate::Model.property(:field, :string, options).should == @filled_allowed_attributes.merge({ :name => :field,
57
+ MotionMigrate::Model.property(:field, :string, options).should == @filled_allowed_attributes.merge({ :name => :field,
58
58
  :attributeType => "String",
59
59
  :minValueString => "1",
60
60
  :maxValueString => "10",
@@ -69,7 +69,7 @@ module MotionMigrate
69
69
  max: "10",
70
70
  default: "5"
71
71
  })
72
- MotionMigrate::Model.property(:field, type, options).should == @filled_allowed_attributes.merge({ :name => :field,
72
+ MotionMigrate::Model.property(:field, type, options).should == @filled_allowed_attributes.merge({ :name => :field,
73
73
  :attributeType => type.split("_").each{|word| word.capitalize! }.join(" "),
74
74
  :minValueString => "1",
75
75
  :maxValueString => "10",
@@ -81,7 +81,7 @@ module MotionMigrate
81
81
  options = @allowed_options.merge({
82
82
  default: true
83
83
  })
84
- MotionMigrate::Model.property(:field, :boolean, options).should == @filled_allowed_attributes.merge({ :name => :field,
84
+ MotionMigrate::Model.property(:field, :boolean, options).should == @filled_allowed_attributes.merge({ :name => :field,
85
85
  :attributeType => "Boolean",
86
86
  :defaultValueString => "YES" })
87
87
  end
@@ -90,18 +90,28 @@ module MotionMigrate
90
90
  options = @allowed_options.merge({
91
91
  external_storage: true
92
92
  })
93
- MotionMigrate::Model.property(:field, :binary_data, options).should == @filled_allowed_attributes.merge({ :name => :field,
93
+ MotionMigrate::Model.property(:field, :binary_data, options).should == @filled_allowed_attributes.merge({ :name => :field,
94
94
  :attributeType => "Binary",
95
95
  :allowsExternalBinaryDataStorage => "YES" })
96
96
  end
97
97
 
98
+ it "should return the correct options for transformable" do
99
+ options = @allowed_options.merge({
100
+ transformer_name: 'JSONTransformer'
101
+ })
102
+
103
+ MotionMigrate::Model.property(:field, :transformable, options).should == @filled_allowed_attributes.merge({ :name => :field,
104
+ :attributeType => "Transformable",
105
+ :valueTransformerName => "JSONTransformer" })
106
+ end
107
+
98
108
  it "should return the correct options for date" do
99
109
  options = @allowed_options.merge({
100
110
  min: DateTime.new(2013, 1, 1, 12, 0, 0),
101
111
  max: DateTime.new(2013, 1, 31, 12, 0, 0),
102
112
  default: DateTime.new(2013, 1, 5, 12, 0, 0)
103
113
  })
104
- MotionMigrate::Model.property(:field, :date, options).should == @filled_allowed_attributes.merge({ :name => :field,
114
+ MotionMigrate::Model.property(:field, :date, options).should == @filled_allowed_attributes.merge({ :name => :field,
105
115
  :attributeType => "Date",
106
116
  :minDateTimeInterval => "378738000",
107
117
  :maxDateTimeInterval => "381330000",
@@ -110,4 +120,4 @@ module MotionMigrate
110
120
  end
111
121
  end
112
122
 
113
- # Test all types + properties
123
+ # Test all types + properties
@@ -1,6 +1,6 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
 
3
3
  gem "rake", "0.9.4"
4
4
  gem "motion_migrate", :path => "../../."
5
5
  gem 'cocoapods'
6
- gem "motion-cocoapods", "1.2.1"
6
+ gem "motion-cocoapods", "~> 1.3.6"
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  $:.unshift("/Library/RubyMotion/lib")
3
- require 'motion/project'
3
+ require 'motion/project/template/ios'
4
4
 
5
5
  require 'bundler'
6
6
  Bundler.require
@@ -1,7 +1,49 @@
1
1
  class AppDelegate
2
2
  def application(application, didFinishLaunchingWithOptions:launchOptions)
3
- MagicalRecord.setupCoreDataStackWithAutoMigratingSqliteStoreNamed("MotionMigrateSpec.sqlite")
4
-
3
+ if RUBYMOTION_ENV == 'test'
4
+ MagicalRecord.setupCoreDataStackWithAutoMigratingSqliteStoreNamed("MotionMigrateSpec.sqlite")
5
+ else
6
+ MagicalRecord.setupCoreDataStackWithAutoMigratingSqliteStoreNamed("MotionMigrateExample.sqlite")
7
+ end
8
+
9
+ initialize_data
10
+
11
+ @window = UIWindow.alloc.initWithFrame(UIScreen.mainScreen.bounds)
12
+ controller = PlanesViewController.new
13
+ navigation_controller = UINavigationController.alloc.initWithRootViewController(controller)
14
+ @window.rootViewController = navigation_controller
15
+ @window.makeKeyAndVisible
16
+
5
17
  true
6
18
  end
19
+
20
+ def initialize_data
21
+ MagicalRecord.saveUsingCurrentThreadContextWithBlockAndWait(lambda do |local_context|
22
+ Plane.MR_truncateAll
23
+ Pilot.MR_truncateAll
24
+
25
+ buck = Pilot.MR_createInContext(local_context)
26
+ buck.name = "Buck Danny"
27
+ sonny = Pilot.MR_createInContext(local_context)
28
+ sonny.name = "Sonny Tuckson:"
29
+ jerry = Pilot.MR_createInContext(local_context)
30
+ jerry.name = "Jerry Tumbler"
31
+
32
+ x = Plane.MR_createInContext(local_context)
33
+ x.name = "Bell X-1"
34
+ tomcat = Plane.MR_createInContext(local_context)
35
+ tomcat.name = "Grumman F-14 Tomcat"
36
+ hornet = Plane.MR_createInContext(local_context)
37
+ hornet.name = "McDonnell Douglas F/A-18 Hornet"
38
+
39
+ x.addFlown_by_pilotsObject buck
40
+
41
+ tomcat.addFlown_by_pilotsObject buck
42
+ tomcat.addFlown_by_pilotsObject sonny
43
+
44
+ hornet.addFlown_by_pilotsObject buck
45
+ hornet.addFlown_by_pilotsObject sonny
46
+ hornet.addFlown_by_pilotsObject jerry
47
+ end)
48
+ end
7
49
  end
@@ -0,0 +1,46 @@
1
+ class PlanesViewController < UITableViewController
2
+ CELL_IDENTIFIER = "CELL"
3
+
4
+ def viewDidLoad
5
+ @planes = Plane.MR_findAll
6
+
7
+ self.tableView.registerClass(UITableViewCell, forCellReuseIdentifier:CELL_IDENTIFIER)
8
+ end
9
+
10
+ def viewWillAppear(animated)
11
+ self.title = "Planes"
12
+ end
13
+
14
+ def numberOfSectionsInTableView(table_view)
15
+ @planes.count
16
+ end
17
+
18
+ def tableView(table_view, titleForHeaderInSection:section)
19
+ plane_for_section(section).name
20
+ end
21
+
22
+ def tableView(table_view, numberOfRowsInSection:section)
23
+ pilots_for_section(section).count
24
+ end
25
+
26
+ def tableView(table_view, cellForRowAtIndexPath:index_path)
27
+ cell = table_view.dequeueReusableCellWithIdentifier(CELL_IDENTIFIER)
28
+ cell.selectionStyle = UITableViewCellSelectionStyleNone
29
+ cell.textLabel.text = pilot_for_index_path(index_path).name
30
+ cell
31
+ end
32
+
33
+ protected
34
+
35
+ def plane_for_section section
36
+ @planes[section]
37
+ end
38
+
39
+ def pilots_for_section section
40
+ plane_for_section(section).flown_by_pilots.allObjects
41
+ end
42
+
43
+ def pilot_for_index_path index_path
44
+ pilots_for_section(index_path.section)[index_path.row]
45
+ end
46
+ end
@@ -0,0 +1,20 @@
1
+ class HashTransformer
2
+ class << self
3
+ def allowsReverseTransformation
4
+ true
5
+ end
6
+
7
+ def transformedValueClass
8
+ NSData
9
+ end
10
+ end
11
+
12
+ def transformedValue(value)
13
+ NSKeyedArchiver.archivedDataWithRootObject(value)
14
+ end
15
+
16
+ def reverseTransformedValue(value)
17
+ NSKeyedUnarchiver.unarchiveObjectWithData(value)
18
+ end
19
+ end
20
+
@@ -1,7 +1,8 @@
1
1
  class Pilot < MotionMigrate::Model
2
2
  property :name, :string
3
+ property :profile, :transformable, transformer_name: 'HashTransformer'
3
4
 
4
- belongs_to :plane, :class_name => "Plane", :inverse_of => :pilot
5
- has_many :owned_planes, :class_name => "Plane", :inverse_of => :owner
6
- has_many :flown_planes, :class_name => "Plane", :inverse_of => :flown_by_pilots
7
- end
5
+ belongs_to :plane, :class_name => "Plane", :inverse_of => :pilot, :deletion_rule => :nullify
6
+ has_many :owned_planes, :class_name => "Plane", :inverse_of => :owner, :deletion_rule => :nullify
7
+ has_many :flown_planes, :class_name => "Plane", :inverse_of => :flown_by_pilots, :deletion_rule => :nullify
8
+ end
@@ -4,8 +4,8 @@ class Plane < MotionMigrate::Model
4
4
  property :first_flight_at, :date
5
5
  property :flight_info, :binary_data
6
6
 
7
- belongs_to :pilot, :class_name => "Pilot", :inverse_of => :plane
8
- belongs_to :owner, :class_name => "Pilot", :inverse_of => :owned_planes
7
+ belongs_to :pilot, :class_name => "Pilot", :inverse_of => :plane, :deletion_rule => :nullify
8
+ belongs_to :owner, :class_name => "Pilot", :inverse_of => :owned_planes, :deletion_rule => :nullify
9
9
 
10
- has_many :flown_by_pilots, :class_name => "Pilot", :inverse_of => :flown_planes
10
+ has_many :flown_by_pilots, :class_name => "Pilot", :inverse_of => :flown_planes, :deletion_rule => :nullify
11
11
  end
@@ -3,6 +3,6 @@
3
3
  <plist version="1.0">
4
4
  <dict>
5
5
  <key>_XCCurrentVersionName</key>
6
- <string>schema.10.xcdatamodel</string>
6
+ <string>schema.11.xcdatamodel</string>
7
7
  </dict>
8
8
  </plist>
@@ -0,0 +1,19 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <model name="" userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="1811" systemVersion="11D50" minimumToolsVersion="Automatic" macOSVersion="Automatic" iOSVersion="Automatic">
3
+ <entity name="Pilot" representedClassName="Pilot" syncable="YES">
4
+ <attribute name="name" attributeType="String" optional="YES" syncable="YES"/>
5
+ <attribute name="profile" attributeType="Transformable" optional="YES" syncable="YES" valueTransformerName="HashTransformer"/>
6
+ <relationship name="plane" optional="YES" deletionRule="Nullify" syncable="YES" minCount="1" maxCount="1" inverseEntity="Plane" destinationEntity="Plane" inverseName="pilot" toMany="NO"/>
7
+ <relationship name="owned_planes" optional="YES" deletionRule="Nullify" syncable="YES" inverseEntity="Plane" destinationEntity="Plane" inverseName="owner" toMany="YES"/>
8
+ <relationship name="flown_planes" optional="YES" deletionRule="Nullify" syncable="YES" inverseEntity="Plane" destinationEntity="Plane" inverseName="flown_by_pilots" toMany="YES"/>
9
+ </entity>
10
+ <entity name="Plane" representedClassName="Plane" syncable="YES">
11
+ <attribute name="name" attributeType="String" optional="YES" syncable="YES"/>
12
+ <attribute name="multi_engine" attributeType="Boolean" optional="YES" syncable="YES" defaultValueString="NO"/>
13
+ <attribute name="first_flight_at" attributeType="Date" optional="YES" syncable="YES"/>
14
+ <attribute name="flight_info" attributeType="Binary" optional="YES" syncable="YES"/>
15
+ <relationship name="pilot" optional="YES" deletionRule="Nullify" syncable="YES" minCount="1" maxCount="1" inverseEntity="Pilot" destinationEntity="Pilot" inverseName="plane" toMany="NO"/>
16
+ <relationship name="owner" optional="YES" deletionRule="Nullify" syncable="YES" minCount="1" maxCount="1" inverseEntity="Pilot" destinationEntity="Pilot" inverseName="owned_planes" toMany="NO"/>
17
+ <relationship name="flown_by_pilots" optional="YES" deletionRule="Nullify" syncable="YES" inverseEntity="Pilot" destinationEntity="Pilot" inverseName="flown_planes" toMany="YES"/>
18
+ </entity>
19
+ </model>
@@ -54,4 +54,23 @@ describe "properties in a model" do
54
54
  fetched_plane = Plane.MR_findFirst
55
55
  fetched_plane.flight_info.should == flight_info
56
56
  end
57
+
58
+ it 'should set the transformable property on the model' do
59
+ reset
60
+
61
+ new_pilot = Pilot.MR_createEntity
62
+ new_pilot.profile.should == nil
63
+
64
+ profile = { nickname: 'Chuck'}
65
+
66
+ new_pilot.name = 'Chuck Yeager'
67
+ new_pilot.profile = profile
68
+
69
+ save
70
+
71
+ fetched_pilot = Pilot.MR_findFirst
72
+
73
+ fetched_pilot.profile.should == profile
74
+ fetched_pilot.profile.class.should == Hash
75
+ end
57
76
  end
@@ -1,11 +1,10 @@
1
-
2
1
  PODS:
3
- - MagicalRecord (2.1)
2
+ - MagicalRecord (2.1)
4
3
 
5
4
  DEPENDENCIES:
6
- - MagicalRecord (= 2.1)
5
+ - MagicalRecord (= 2.1)
7
6
 
8
7
  SPEC CHECKSUMS:
9
- MagicalRecord: aedbebe987d02d1215718a904c93d7965e48e398
8
+ MagicalRecord: 64e7184c240087a45e9588a722eaf05b0ad837f7
10
9
 
11
- COCOAPODS: 0.16.2
10
+ COCOAPODS: 0.24.0
metadata CHANGED
@@ -1,38 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: motion_migrate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
5
- prerelease:
4
+ version: 0.2.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Jelle Vandebeeck
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-02-21 00:00:00.000000000 Z
11
+ date: 2013-10-24 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake
16
- requirement: &70215316589340 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :development
23
21
  prerelease: false
24
- version_requirements: *70215316589340
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
25
41
  - !ruby/object:Gem::Dependency
26
42
  name: nokogiri
27
- requirement: &70215316588460 !ruby/object:Gem::Requirement
28
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
29
44
  requirements:
30
- - - ! '>='
45
+ - - '>='
31
46
  - !ruby/object:Gem::Version
32
47
  version: '0'
33
48
  type: :runtime
34
49
  prerelease: false
35
- version_requirements: *70215316588460
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
36
55
  description: Generate the Core Data model from your RubyMotion code.
37
56
  email:
38
57
  - jelle@fousa.be
@@ -65,11 +84,14 @@ files:
65
84
  - spec_project/Gemfile
66
85
  - spec_project/Rakefile
67
86
  - spec_project/app/app_delegate.rb
87
+ - spec_project/app/controllers/planes_view_controller.rb
88
+ - spec_project/app/hash_transformer.rb
68
89
  - spec_project/app/models/pilot.rb
69
90
  - spec_project/app/models/plane.rb
70
91
  - spec_project/db/schema.xcdatamodeld/.xccurrentversion
71
92
  - spec_project/db/schema.xcdatamodeld/schema.1.xcdatamodel/contents
72
93
  - spec_project/db/schema.xcdatamodeld/schema.10.xcdatamodel/contents
94
+ - spec_project/db/schema.xcdatamodeld/schema.11.xcdatamodel/contents
73
95
  - spec_project/db/schema.xcdatamodeld/schema.2.xcdatamodel/contents
74
96
  - spec_project/db/schema.xcdatamodeld/schema.3.xcdatamodel/contents
75
97
  - spec_project/db/schema.xcdatamodeld/schema.4.xcdatamodel/contents
@@ -84,30 +106,28 @@ files:
84
106
  - spec_project/vendor/Podfile.lock
85
107
  homepage: http://fousa.github.com/motion_migrate/
86
108
  licenses: []
109
+ metadata: {}
87
110
  post_install_message:
88
111
  rdoc_options: []
89
112
  require_paths:
90
113
  - lib
91
114
  required_ruby_version: !ruby/object:Gem::Requirement
92
- none: false
93
115
  requirements:
94
- - - ! '>='
116
+ - - '>='
95
117
  - !ruby/object:Gem::Version
96
118
  version: '0'
97
119
  required_rubygems_version: !ruby/object:Gem::Requirement
98
- none: false
99
120
  requirements:
100
- - - ! '>='
121
+ - - '>='
101
122
  - !ruby/object:Gem::Version
102
123
  version: '0'
103
124
  requirements: []
104
125
  rubyforge_project:
105
- rubygems_version: 1.8.15
126
+ rubygems_version: 2.0.3
106
127
  signing_key:
107
- specification_version: 3
128
+ specification_version: 4
108
129
  summary: Generate the Core Data model from your RubyMotion code. Never open XCode
109
130
  again!
110
131
  test_files:
111
132
  - spec/property_spec.rb
112
133
  - spec/relationship_spec.rb
113
- has_rdoc: