norton 0.1.1 → 0.1.2
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/CHANGLOG.md +4 -0
- data/lib/norton/counter.rb +1 -1
- data/lib/norton/helper.rb +16 -10
- data/lib/norton/timestamp.rb +12 -8
- data/lib/norton/version.rb +1 -1
- data/spec/norton/helper_spec.rb +8 -1
- data/spec/norton/timestamp_spec.rb +9 -0
- data/spec/norton_spec.rb +2 -0
- 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: 45ea8d2f8971be12351a0cd129ed8a851f2a7823
|
4
|
+
data.tar.gz: bd77674e841f9dd8c8e2603a46b75a4cf03ed281
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c4ca36139885b6ea121edc8c3b9ceb81ace3f9abe2c85e01f17c208f280748ef91cfc27b7f7d473e1fd4ca03cd79566193cf99e5e0b20de2273494212dce75f
|
7
|
+
data.tar.gz: 8e9c450ff7fc10a7d9c8007645ab60640f0be59549c2d952bd286e9babdfe023d3ad076fcf3ac46c27e9e993f6ab061b6cecdd02d693792dd0d9277aeb483fc0
|
data/CHANGLOG.md
CHANGED
data/lib/norton/counter.rb
CHANGED
data/lib/norton/helper.rb
CHANGED
@@ -15,12 +15,12 @@ module Norton
|
|
15
15
|
#
|
16
16
|
# @return [void]
|
17
17
|
#
|
18
|
-
def register_norton_value(name, norton_type)
|
18
|
+
def register_norton_value(name, norton_type, options = {})
|
19
19
|
if !Norton::SUPPORTED_TYPES.include?(norton_type.to_sym)
|
20
20
|
raise Norton::InvalidType.new("Norton Type: #{norton_type} invalid!")
|
21
21
|
end
|
22
22
|
|
23
|
-
@norton_values[name.to_sym] = norton_type.to_sym
|
23
|
+
@norton_values[name.to_sym] = options.symbolize_keys.merge(:type => norton_type.to_sym)
|
24
24
|
end
|
25
25
|
|
26
26
|
#
|
@@ -42,7 +42,7 @@ module Norton
|
|
42
42
|
# @return [Symbol]
|
43
43
|
#
|
44
44
|
def norton_value_type(name)
|
45
|
-
norton_values
|
45
|
+
norton_values.dig(name.to_sym, :type)
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
@@ -109,14 +109,20 @@ module Norton
|
|
109
109
|
def assign_values(new_values)
|
110
110
|
new_values.each do |field, val|
|
111
111
|
type = self.class.norton_value_type(field)
|
112
|
-
next unless %i[counter timestamp].include?(type)
|
113
112
|
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
113
|
+
case type
|
114
|
+
when :counter
|
115
|
+
value = cast_value(type, val || try("#{field}_default_value"))
|
116
|
+
instance_variable_set("@#{field}", value)
|
117
|
+
when :timestamp
|
118
|
+
if !val.nil?
|
119
|
+
instance_variable_set("@#{field}", cast_value(type, val))
|
120
|
+
elsif self.class.norton_values[field][:allow_nil]
|
121
|
+
instance_variable_set("@#{field}", nil)
|
122
|
+
else
|
123
|
+
value = cast_value(type, try("#{field}_default_value"))
|
124
|
+
instance_variable_set("@#{field}", value)
|
125
|
+
Norton.redis.with { |conn| conn.set(norton_value_key(field), value) }
|
120
126
|
end
|
121
127
|
end
|
122
128
|
end
|
data/lib/norton/timestamp.rb
CHANGED
@@ -14,19 +14,23 @@ module Norton
|
|
14
14
|
#
|
15
15
|
# @return [type] [description]
|
16
16
|
def timestamp(name, options={})
|
17
|
-
register_norton_value(name, :timestamp)
|
17
|
+
register_norton_value(name, :timestamp, options)
|
18
18
|
|
19
19
|
# Redis: GET
|
20
20
|
define_method(name) do
|
21
|
-
instance_variable_get("@#{name}")
|
22
|
-
value = Norton.redis.with do |conn|
|
23
|
-
raw_value = conn.get(norton_value_key(name))
|
24
|
-
break raw_value if raw_value.present?
|
21
|
+
return instance_variable_get("@#{name}") if instance_variable_defined?("@#{name}")
|
25
22
|
|
26
|
-
|
27
|
-
|
28
|
-
|
23
|
+
value = Norton.redis.with do |conn|
|
24
|
+
raw_value = conn.get(norton_value_key(name))
|
25
|
+
break raw_value if raw_value.present?
|
26
|
+
|
27
|
+
send("#{name}_default_value").tap do |default_value|
|
28
|
+
conn.set(norton_value_key(name), default_value)
|
29
29
|
end
|
30
|
+
end
|
31
|
+
if value.nil? && options[:allow_nil]
|
32
|
+
instance_variable_set("@#{name}", nil)
|
33
|
+
else
|
30
34
|
instance_variable_set("@#{name}", value.to_i)
|
31
35
|
end
|
32
36
|
end
|
data/lib/norton/version.rb
CHANGED
data/spec/norton/helper_spec.rb
CHANGED
@@ -35,7 +35,13 @@ describe Norton::Helper do
|
|
35
35
|
|
36
36
|
it "adds the fields with valid type to `@norton_values`" do
|
37
37
|
Dummy.register_norton_value("foo", "counter")
|
38
|
-
expect(Dummy.norton_values[:foo]).to eq(:counter)
|
38
|
+
expect(Dummy.norton_values[:foo][:type]).to eq(:counter)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "adds the fields with options" do
|
42
|
+
Dummy.register_norton_value("foo", "counter", :allow_nil => true)
|
43
|
+
expect(Dummy.norton_values[:foo][:type]).to eq(:counter)
|
44
|
+
expect(Dummy.norton_values[:foo][:allow_nil]).to eq(true)
|
39
45
|
end
|
40
46
|
end
|
41
47
|
|
@@ -158,6 +164,7 @@ describe Norton::Helper do
|
|
158
164
|
|
159
165
|
dummy.norton_mget(:time2)
|
160
166
|
|
167
|
+
expect(dummy.time2).to be_nil
|
161
168
|
expect(
|
162
169
|
Norton.redis.with { |conn| conn.exists(dummy.norton_value_key(:time2)) }
|
163
170
|
).to eq(false)
|
@@ -20,6 +20,11 @@ describe Norton::Timestamp do
|
|
20
20
|
expect(dummy.respond_to?(:born_at_default_value)).to be(true)
|
21
21
|
expect(dummy.respond_to?(:touch_born_at)).to be(true)
|
22
22
|
expect(dummy.respond_to?(:remove_born_at)).to be(true)
|
23
|
+
|
24
|
+
expect(Dummy.norton_values[:thirteen_ts][:type]).to eq(:timestamp)
|
25
|
+
expect(Dummy.norton_values[:thirteen_ts][:digits]).to eq(13)
|
26
|
+
expect(Dummy.norton_values[:first_kissed_at][:allow_nil]).to eq(true)
|
27
|
+
expect(Dummy.norton_values[:first_kissed_at][:allow_nil]).to eq(true)
|
23
28
|
end
|
24
29
|
|
25
30
|
describe "#born_at" do
|
@@ -41,6 +46,10 @@ describe Norton::Timestamp do
|
|
41
46
|
end
|
42
47
|
expect(value.to_i).to eq(456)
|
43
48
|
end
|
49
|
+
|
50
|
+
it "returns nil if no value in norton and the timestamp allows nil" do
|
51
|
+
expect(dummy.first_kissed_at).to be_nil
|
52
|
+
end
|
44
53
|
end
|
45
54
|
|
46
55
|
describe "#born_at_default_value" do
|
data/spec/norton_spec.rb
CHANGED
@@ -16,6 +16,7 @@ describe Norton do
|
|
16
16
|
|
17
17
|
counter :counter1
|
18
18
|
timestamp :time1
|
19
|
+
timestamp :time2, :allow_nil => true
|
19
20
|
hash_map :map1
|
20
21
|
|
21
22
|
def id
|
@@ -94,6 +95,7 @@ describe Norton do
|
|
94
95
|
|
95
96
|
dummy.norton_mget(:time2)
|
96
97
|
|
98
|
+
expect(dummy.time2).to be_nil
|
97
99
|
expect(
|
98
100
|
Norton.redis.with { |conn| conn.exists(dummy.norton_value_key(:time2)) }
|
99
101
|
).to eq(false)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: norton
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Larry Zhao
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-09-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|