motion-prime 0.8.10 → 0.8.11

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.
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