motion-prime 0.8.10 → 0.8.11

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NGJiNzlkZDEwMDg5OTE0MmRmYTE5OTdhNTYxNzE1NTI5NjJiNzNiMg==
5
- data.tar.gz: !binary |-
6
- ZmVlMzZmYmYwZWY2Y2Y1ZjMwYWQ1ODMyMDUzNDk2ZDQ1MDE3OGJhOQ==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- OGM2N2VhZmIyMGFmYTQ1MjJkZjdlZjc0NTkwYWViMTkzNjYxMzc0YjVkZTQ3
10
- YjdjNDE0MGVhNmZkYzhhZTA3NWYwOGMzYTdmN2ExZWU0MjhhMWZjOWMzNTAy
11
- ZTQxY2QwMGQ5YjQxYjQ3OTIwN2UzZDBlN2JkYTIwMGUyMDQzMmU=
12
- data.tar.gz: !binary |-
13
- Y2E0ZTZjMzBkMDZiMTRjZTE5NTM4MjFkZmZhN2Y3YTRiY2U0ZTZjMjZlOTE0
14
- OGM3ZTdkOWU2YjFhZDU1OGJiMmU1MGFiMmQyMDJiZmY2ZmU1MzFkYWUyYjU3
15
- YWFiZDYxMTk0MWFhNjI0NTA1ZjUzMmY1ZGZmN2QyZGZhMmFiYzQ=
2
+ SHA1:
3
+ metadata.gz: 2d46d1511acff3435a0cb081f7276b3728e2c5eb
4
+ data.tar.gz: fe0d22a532d8f2cfd7b4b4a66e9950498aae5296
5
+ SHA512:
6
+ metadata.gz: df56ca13d08064cf8e4a24e28101a45d2e86b46475743cdfeb23487e6c5ec8c46c9550a926a281954cfe1b4fc8a2f8b0f403bc708624b90543cec371eccdce7d
7
+ data.tar.gz: 1db69c0bf00648b86c335f4798958d2ee457d34dcd044c9b6b1404d4b41efab8a1eb6081c1bcbf6dd7ea771342666372871beab9ac24fa074bf9b07cc7725152
data/.gitignore CHANGED
@@ -1,4 +1,5 @@
1
1
  .repl_history
2
+ .bundle
2
3
  build
3
4
  tags
4
5
  app/pixate_code.rb
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ === 0.8.11
2
+ * Ability to send block to after_render/before_render
3
+ * Added ability to get all form field values via `field_values`
4
+ * Ability to automatically set models saved_at/created_at using `timestamp_attributes`.
5
+
1
6
  === 0.8.10
2
7
  * Added font_name/font_size options support.
3
8
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- motion-prime (0.8.10)
4
+ motion-prime (0.8.11)
5
5
  afmotion (~> 2.0.0)
6
6
  bubble-wrap (~> 1.5.0)
7
7
  cocoapods
@@ -201,7 +201,8 @@ module MotionPrime
201
201
  #
202
202
  # @return Nil
203
203
  def attribute(name, options = {})
204
- attributes << name
204
+ attributes << name.to_sym
205
+ attributes.uniq!
205
206
 
206
207
  define_method(:"#{name}=") do |value, &block|
207
208
  track_changed_attributes do
@@ -0,0 +1,33 @@
1
+ module MotionPrime
2
+ module ModelTimestampsMixin
3
+ extend ::MotionSupport::Concern
4
+
5
+ def self.included(base)
6
+ base.class_attribute :_timestamp_attributes
7
+ end
8
+
9
+ def save
10
+ time = Time.now
11
+ trigger_timestamp(:save, time)
12
+ trigger_timestamp(:create, time) if new_record?
13
+ super
14
+ end
15
+
16
+ def trigger_timestamp(action_name, time)
17
+ field = (_timestamp_attributes || {})[action_name]
18
+ return unless field
19
+ self.send(:"#{field}=", time)
20
+ end
21
+
22
+ module ClassMethods
23
+ def timestamp_attributes(actions = nil)
24
+ self._timestamp_attributes ||= {}
25
+ actions ||= {save: :saved_at, create: :created_at}
26
+ actions.each do |action_name, field|
27
+ _timestamp_attributes[action_name.to_sym] = field
28
+ self.attribute field, type: :time
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -16,6 +16,7 @@ module MotionPrime
16
16
  include MotionPrime::ModelSyncMixin
17
17
  include MotionPrime::ModelFinderMixin
18
18
  include MotionPrime::ModelDirtyMixin
19
+ include MotionPrime::ModelTimestampsMixin
19
20
 
20
21
  attribute :bag_key # need this as we use shared store; each nested resource must belong to parent bag
21
22
  attribute :id
@@ -70,11 +70,11 @@ module MotionPrime
70
70
  t ? @title = t : @title ||= self.to_s
71
71
  end
72
72
  end
73
- def before_render(method_name)
74
- set_callback :render, :before, method_name
73
+ def before_render(*method_names, &block)
74
+ set_callback :render, :before, *method_names, &block
75
75
  end
76
- def after_render(method_name)
77
- set_callback :render, :after, method_name
76
+ def after_render(*method_names)
77
+ set_callback :render, :after, *method_names, &block
78
78
  end
79
79
  def create_with_options(screen, navigation = true, options = {})
80
80
  screen = create_tab_bar(screen, options) if screen.is_a?(Array)
@@ -371,17 +371,17 @@ module MotionPrime
371
371
  def container(options)
372
372
  self.container_options = options
373
373
  end
374
- def before_render(method_name)
375
- set_callback :render, :before, method_name
374
+ def before_render(*method_names, &block)
375
+ set_callback :render, :before, *method_names, &block
376
376
  end
377
- def after_render(method_name)
378
- set_callback :render, :after, method_name
377
+ def after_render(*method_names, &block)
378
+ set_callback :render, :after, *method_names, &block
379
379
  end
380
- def before_initialize(method_name)
381
- set_callback :initialize, :before, method_name
380
+ def before_initialize(*method_names, &block)
381
+ set_callback :initialize, :before, *method_names, &block
382
382
  end
383
- def after_initialize(method_name)
384
- set_callback :initialize, :after, method_name
383
+ def after_initialize(*method_names, &block)
384
+ set_callback :initialize, :after, *method_names, &block
385
385
  end
386
386
  def bind_keyboard_close(options)
387
387
  self.keyboard_close_bindings = options
@@ -80,6 +80,14 @@ module MotionPrime
80
80
  fields.to_hash
81
81
  end
82
82
 
83
+ def field_values
84
+ values = {}
85
+ fields.each do |field_name, field|
86
+ values[field_name.to_sym] = field.value if field.input?
87
+ end
88
+ values
89
+ end
90
+
83
91
  def register_elements_from_section(section)
84
92
  self.rendered_views ||= {}
85
93
  section.elements.values.each do |element|
@@ -134,6 +134,14 @@ module MotionPrime
134
134
  end
135
135
  end
136
136
 
137
+ def value
138
+ raise "should be defined"
139
+ end
140
+
141
+ def input?
142
+ false
143
+ end
144
+
137
145
  def observing_errors?
138
146
  @errors_observer_options.present?
139
147
  end
@@ -21,6 +21,14 @@ module MotionPrime
21
21
  end
22
22
  end
23
23
 
24
+ def value
25
+ view(:input).date
26
+ end
27
+
28
+ def input?
29
+ true
30
+ end
31
+
24
32
  def dealloc
25
33
  picker = view(:input)
26
34
  picker.setDelegate nil
@@ -8,5 +8,13 @@ module MotionPrime
8
8
  end
9
9
  element :error_message, type: :error_message, text: proc { all_errors.join("\n") if observing_errors? }
10
10
  after_render :bind_text_input
11
+
12
+ def value
13
+ view(:input).text
14
+ end
15
+
16
+ def input?
17
+ true
18
+ end
11
19
  end
12
20
  end
@@ -18,5 +18,9 @@ module MotionPrime
18
18
  form.send(options[:action]) if options[:action]
19
19
  end
20
20
  end
21
+
22
+ def value
23
+ view(:button).title
24
+ end
21
25
  end
22
26
  end
@@ -10,5 +10,13 @@ module MotionPrime
10
10
 
11
11
  element :error_message, type: :error_message, text: proc { all_errors.join("\n") if observing_errors? }
12
12
  after_render :bind_text_input
13
+
14
+ def value
15
+ view(:input).text
16
+ end
17
+
18
+ def input?
19
+ true
20
+ end
13
21
  end
14
22
  end
@@ -9,5 +9,13 @@ module MotionPrime
9
9
  element :hint, type: :label do
10
10
  options[:hint] || {}
11
11
  end
12
+
13
+ def value
14
+ view(:input).isOn
15
+ end
16
+
17
+ def input?
18
+ true
19
+ end
12
20
  end
13
21
  end
@@ -9,5 +9,13 @@ module MotionPrime
9
9
 
10
10
  element :error_message, type: :error_message, text: proc { observing_errors? and all_errors.join("\n") }
11
11
  after_render :bind_text_input
12
+
13
+ def value
14
+ view(:input).text
15
+ end
16
+
17
+ def input?
18
+ true
19
+ end
12
20
  end
13
21
  end
@@ -1,3 +1,3 @@
1
1
  module MotionPrime
2
- VERSION = "0.8.10"
2
+ VERSION = "0.8.11"
3
3
  end
@@ -1,5 +1,6 @@
1
1
  class User < MotionPrime::Model
2
- attributes :name, :age, :created_at
2
+ attributes :name, :age, :birthday
3
+ timestamp_attributes
3
4
  end
4
5
  class Plane < MotionPrime::Model
5
6
  attributes :name, :age
@@ -43,12 +44,12 @@ class CustomModule::Car < MotionPrime::Model
43
44
  end
44
45
  Car = CustomModule::Car
45
46
 
46
- def stub_user(name, age, created_at, id = nil)
47
+ def stub_user(name, age, birthday, id = nil)
47
48
  user = User.new
48
49
  user.id = id || 1
49
50
  user.name = name
50
51
  user.age = age
51
- user.created_at = created_at
52
+ user.birthday = birthday
52
53
  user
53
54
  end
54
55
 
@@ -116,7 +116,6 @@ describe "Prime::Model Finder" do
116
116
  it "should return object by key" do
117
117
  name = "Julien"
118
118
  age = 32
119
- created_at = Time.now
120
119
  user = stub_user("Julien", 32, Time.now)
121
120
  user.save
122
121
  user2 = User.find_by_key(user.key)
@@ -21,11 +21,11 @@ describe MotionPrime::Model do
21
21
 
22
22
  user.info.keys.include?("name").should.be.true
23
23
  user.info.keys.include?("age").should.be.true
24
- user.info.keys.include?("created_at").should.be.true
24
+ user.info.keys.include?("birthday").should.be.true
25
25
 
26
26
  user.info["name"].should == "Bob"
27
27
  user.info["age"].should == 10
28
- user.info["created_at"].should == user.created_at
28
+ user.info["birthday"].should == user.birthday
29
29
 
30
30
  user.name.should == "Bob"
31
31
  user.age.should == 10
@@ -43,7 +43,7 @@ describe MotionPrime::Model do
43
43
  user = User.new({
44
44
  name: "Eddie",
45
45
  age: 12,
46
- created_at: Time.now,
46
+ birthday: Time.now,
47
47
  gender: "m",
48
48
  }, validate_attribute_presence: true )
49
49
  }.should.raise(::MotionPrime::StoreError)
@@ -53,7 +53,7 @@ describe MotionPrime::Model do
53
53
  user = User.new({
54
54
  name: "Eddie",
55
55
  age: 12,
56
- created_at: Time.now,
56
+ birthday: Time.now,
57
57
  gender: "m",
58
58
  })
59
59
  user.name.should == "Eddie"
@@ -64,18 +64,24 @@ describe MotionPrime::Model do
64
64
  it "create object with hash" do
65
65
  name = "Abby"
66
66
  age = 30
67
- created_at = Time.now
68
- user = User.create(:name => name, :age => age, :created_at => created_at)
67
+ birthday = Time.now
68
+ user = User.create(name: name, age: age, birthday: birthday)
69
69
  user.name.should == name
70
70
  user.age.should == age
71
- user.created_at.should == created_at
71
+ user.birthday.should == birthday
72
72
  end
73
73
 
74
74
  it "create object in their class" do
75
75
  @store.allObjectClasses.should == []
76
- Organization.create(:name => "Bumblebee")
76
+ Organization.create(name: "Droid Labs")
77
77
  @store.allObjectClasses.should == ["Organization"]
78
78
  end
79
+
80
+ it "sets timestamp" do
81
+ user = User.create(name: "Bob")
82
+ user.created_at.present?.should.be.true
83
+ user.saved_at.present?.should.be.true
84
+ end
79
85
  end
80
86
 
81
87
  describe "#save" do
@@ -96,6 +102,17 @@ describe MotionPrime::Model do
96
102
  user2.id.present?.should.be.true
97
103
  end
98
104
 
105
+ it "sets timestamp" do
106
+ user = stub_user("Bob", 10, Time.now)
107
+ user.id = nil
108
+ user.save
109
+ created_at = user.created_at
110
+ sleep(1)
111
+ user.save
112
+ user.created_at.should == created_at
113
+ user.saved_at.should != created_at
114
+ end
115
+
99
116
  # per object store since NanoStore 2.5.1
100
117
  it "user per instance store to save" do
101
118
  store1 = MotionPrime::Store.create
@@ -130,7 +147,7 @@ describe MotionPrime::Model do
130
147
 
131
148
  user1 = User.find(15).first
132
149
  user1.name.should == "Bob"
133
- user1.created_at.should.be.nil
150
+ user1.birthday.should.be.nil
134
151
  end
135
152
 
136
153
  it "create model in file store" do
@@ -141,7 +158,7 @@ describe MotionPrime::Model do
141
158
 
142
159
  user1 = User.find(15).first
143
160
  user1.name.should == "Bob"
144
- user1.created_at.should.be.nil
161
+ user1.birthday.should.be.nil
145
162
 
146
163
  File.delete(path) rescue nil
147
164
  end
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: 0.8.10
4
+ version: 0.8.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Iskander Haziev
@@ -9,174 +9,174 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-03-10 00:00:00.000000000 Z
12
+ date: 2014-03-14 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.5.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.5.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.5.2
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.5.2
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.0.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.0.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
  description: RubyMotion apps development framework
@@ -187,9 +187,9 @@ executables:
187
187
  extensions: []
188
188
  extra_rdoc_files: []
189
189
  files:
190
- - .gitignore
191
- - .travis.yml
192
- - .yardopts
190
+ - ".gitignore"
191
+ - ".travis.yml"
192
+ - ".yardopts"
193
193
  - CHANGELOG.md
194
194
  - Gemfile
195
195
  - Gemfile.lock
@@ -286,6 +286,7 @@ files:
286
286
  - motion-prime/models/_finder_mixin.rb
287
287
  - motion-prime/models/_nano_bag_mixin.rb
288
288
  - motion-prime/models/_sync_mixin.rb
289
+ - motion-prime/models/_timestamps_mixin.rb
289
290
  - motion-prime/models/association_collection.rb
290
291
  - motion-prime/models/errors.rb
291
292
  - motion-prime/models/exceptions.rb
@@ -385,17 +386,17 @@ require_paths:
385
386
  - lib
386
387
  required_ruby_version: !ruby/object:Gem::Requirement
387
388
  requirements:
388
- - - ! '>='
389
+ - - ">="
389
390
  - !ruby/object:Gem::Version
390
391
  version: '0'
391
392
  required_rubygems_version: !ruby/object:Gem::Requirement
392
393
  requirements:
393
- - - ! '>='
394
+ - - ">="
394
395
  - !ruby/object:Gem::Version
395
396
  version: '0'
396
397
  requirements: []
397
398
  rubyforge_project:
398
- rubygems_version: 2.0.5
399
+ rubygems_version: 2.2.1
399
400
  signing_key:
400
401
  specification_version: 4
401
402
  summary: RubyMotion apps development framework