parse-stack 1.0.4 → 1.0.5
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 +4 -4
- data/Changes.md +5 -0
- data/Gemfile.lock +1 -1
- data/lib/parse/model/core/properties.rb +22 -6
- data/lib/parse/model/object.rb +7 -0
- data/lib/parse/stack/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 93fb8b8b1962db48f30eb4e1ae2f7172b8377ed6
|
4
|
+
data.tar.gz: 8dbf85b25286a790c48d88dbc52228bbf8a66838
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3768e70a0e368697101e6a6d12e178cae15593950441876999b4e01377aa14ebb721be405d910651ffa399b5e6d760fa7f7a47b268665b760e5b47f4704f1b59
|
7
|
+
data.tar.gz: 56cb920091be91a880acd7667732f7d90f88fcd6dc174a7bd0bd5048b336a5538713f1117e0a5149beec612c13802669b1b28452bf4a9279a666d34f2f1dbe5e
|
data/Changes.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -61,6 +61,10 @@ module Parse
|
|
61
61
|
@attributes ||= BASE.dup
|
62
62
|
end
|
63
63
|
|
64
|
+
def defaults_list
|
65
|
+
@defaults_list ||= []
|
66
|
+
end
|
67
|
+
|
64
68
|
# property :songs, :array
|
65
69
|
# property :my_date, :date, field: "myRemoteCOLUMNName"
|
66
70
|
# property :my_int, :integer, required: true, default: ->{ rand(10) }
|
@@ -126,9 +130,8 @@ module Parse
|
|
126
130
|
validates_presence_of key
|
127
131
|
end
|
128
132
|
|
129
|
-
# get the default value if provided (or Proc)
|
130
|
-
default_value = opts[:default]
|
131
133
|
symbolize_value = opts[:symbolize]
|
134
|
+
|
132
135
|
#only support symbolization of string data types
|
133
136
|
if symbolize_value && data_type != :string
|
134
137
|
raise 'Symbolization is only supported on :string data types.'
|
@@ -137,6 +140,18 @@ module Parse
|
|
137
140
|
# Here is the where the 'magic' begins. For each property defined, we will
|
138
141
|
# generate special setters and getters that will take advantage of ActiveModel
|
139
142
|
# helpers.
|
143
|
+
# get the default value if provided (or Proc)
|
144
|
+
default_value = opts[:default]
|
145
|
+
if default_value.present?
|
146
|
+
defaults_list.push(key) if default_value.present?
|
147
|
+
|
148
|
+
define_method("#{key}_default") do
|
149
|
+
# If the default object provided is a Proc, then run the proc, otherwise
|
150
|
+
# we'll assume it's just a plain literal value
|
151
|
+
default_value.is_a?(Proc) ? default_value.call(self) : default_value
|
152
|
+
end
|
153
|
+
|
154
|
+
end
|
140
155
|
|
141
156
|
# We define a getter with the key
|
142
157
|
define_method(key) do
|
@@ -158,12 +173,12 @@ module Parse
|
|
158
173
|
|
159
174
|
# if value is nil (even after fetching), then lets see if the developer
|
160
175
|
# set a default value for this attribute.
|
161
|
-
if value.nil? &&
|
162
|
-
|
163
|
-
|
164
|
-
value = default_value.is_a?(Proc) ? default_value.call : default_value
|
176
|
+
if value.nil? && respond_to?("#{key}_default")
|
177
|
+
|
178
|
+
value = send("#{key}_default")
|
165
179
|
# lets set the variable with the updated value
|
166
180
|
instance_variable_set ivar, value
|
181
|
+
send "#{key}_will_change!"
|
167
182
|
end
|
168
183
|
|
169
184
|
# if the value is a String (like an iso8601 date) and the data type of
|
@@ -171,6 +186,7 @@ module Parse
|
|
171
186
|
if value.is_a?(String) && data_type == :date
|
172
187
|
value = Parse::Date.parse value
|
173
188
|
instance_variable_set ivar, value
|
189
|
+
send "#{key}_will_change!"
|
174
190
|
end
|
175
191
|
# finally return the value
|
176
192
|
symbolize_value && value.respond_to?(:to_sym) ? value.to_sym : value
|
data/lib/parse/model/object.rb
CHANGED
@@ -142,9 +142,16 @@ module Parse
|
|
142
142
|
self.acl = self.class.acl({}, owner: self) || Parse::ACL.new(owner: self)
|
143
143
|
end
|
144
144
|
clear_changes! if @id.present? #then it was an import
|
145
|
+
apply_defaults!
|
145
146
|
# do not call super since it is Pointer subclass
|
146
147
|
end
|
147
148
|
|
149
|
+
def apply_defaults!
|
150
|
+
self.class.defaults_list.each do |key|
|
151
|
+
send(key) # should call set default proc/values if nil
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
148
155
|
def self.pointer(id)
|
149
156
|
return nil if id.nil?
|
150
157
|
Parse::Pointer.new self.parse_class, id
|
data/lib/parse/stack/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parse-stack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anthony Persaud
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-02-
|
12
|
+
date: 2016-02-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activemodel
|