state_mate 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/state_mate.rb +51 -3
- data/lib/state_mate/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: 5f01f81ae28c991389d0bb58e43f41fb551a690b
|
4
|
+
data.tar.gz: 0e888f119ce00d45046ec008aa63d43784b0ff52
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a3d7f7027493edc8aace942eb0cb15888a0145d500252f36e0d05edee3d953f4312fa009fdbb87cf9c6b86c45bee5ba177bdbb4540a3492e0284711b9979e1c
|
7
|
+
data.tar.gz: 1d4fbf23716276cb3688e7d73165802c20a4f4445cf688bd2ced4a3b64d2a52ec8e0ffacabcb82b9768de76846b3b7978f8b36a3dc0ebaeef59bf20e6e3481e6
|
data/lib/state_mate.rb
CHANGED
@@ -13,10 +13,48 @@ module StateMate
|
|
13
13
|
@debug_mode = 'a'
|
14
14
|
|
15
15
|
DIRECTIVES = Set.new [
|
16
|
+
# ensures that the key is set to the provided value
|
16
17
|
:set,
|
18
|
+
|
19
|
+
# ensures that the key is absent
|
17
20
|
:unset,
|
21
|
+
|
22
|
+
# ensures that the key is an array containing the provided items.
|
23
|
+
#
|
24
|
+
# if the key is missing and `create` or `clobber` options evaluate true, it
|
25
|
+
# will be created to have exactly the provided items. otherwise it will
|
26
|
+
# fail.
|
27
|
+
#
|
28
|
+
# if the value is not an array and `clobber` option evaluates true it will
|
29
|
+
# be replaced with an array of exactly the provided items. otherwise it
|
30
|
+
# will fail.
|
31
|
+
#
|
18
32
|
:array_contains,
|
33
|
+
|
34
|
+
# ensures that the value is an array that is missing the provided items.
|
35
|
+
#
|
36
|
+
# if the current value is:
|
37
|
+
#
|
38
|
+
# - missing/nil/null:
|
39
|
+
# - if the `unset_ok` option evaluates **true**:
|
40
|
+
# - it will validate as a correct state and no action will be
|
41
|
+
# taken.
|
42
|
+
# - **NOTE: this is the ONLY case where the action succeeds
|
43
|
+
# and the value IS NOT an array afterwards**.
|
44
|
+
# - if the `unset_ok` option evaluates **false** (default):
|
45
|
+
# - if the `create` or `clobber` options evaluate **true**:
|
46
|
+
# - the value will be set to an empty array.
|
47
|
+
# - otherwise:
|
48
|
+
# - fails.
|
49
|
+
# - something else that's not an array:
|
50
|
+
# - if the `clobber` option evaluates **true**:
|
51
|
+
# - value will be set to an empty array.
|
52
|
+
# - if the `clobber` option evaluates **false** (default):
|
53
|
+
# - fails.
|
19
54
|
:array_missing,
|
55
|
+
|
56
|
+
# initializes a value - setting it only if it is missing/nil
|
57
|
+
:init,
|
20
58
|
]
|
21
59
|
|
22
60
|
class StateSet
|
@@ -112,7 +150,7 @@ module StateMate
|
|
112
150
|
unset_when = StateMate.cast 'bool', v
|
113
151
|
else
|
114
152
|
# any other keys are set as options
|
115
|
-
# this is a little
|
153
|
+
# this is a little convenience feature that avoids having to
|
116
154
|
# nest inside an `options` key unless your option conflicts
|
117
155
|
# with 'key' or a directive.
|
118
156
|
#
|
@@ -143,7 +181,7 @@ module StateMate
|
|
143
181
|
end
|
144
182
|
|
145
183
|
# handle :unset_when_false option, which changes the operation to
|
146
|
-
# an unset when the *directive value* is
|
184
|
+
# an unset when the *directive value* is explicitly false
|
147
185
|
if unset_when_false &&
|
148
186
|
(value === false || ['False', 'false'].include?(value))
|
149
187
|
directive = :unset
|
@@ -485,7 +523,7 @@ module StateMate
|
|
485
523
|
|
486
524
|
# @param options [Hash]
|
487
525
|
# @option options [Boolean] :unset_ok if true, the value being unset is
|
488
|
-
#
|
526
|
+
# acceptable. many plist files will simply omit the key rather than
|
489
527
|
# store an empty array in the case that an array value is empty,
|
490
528
|
# and setting these to an empty array when all we want to do is make
|
491
529
|
# sure that *if it is there, it doesn't contain the value* seems
|
@@ -541,5 +579,15 @@ module StateMate
|
|
541
579
|
end
|
542
580
|
end # case current
|
543
581
|
end # array_missing
|
582
|
+
|
583
|
+
# the value is initialized if it's currently not nil
|
584
|
+
def self.init? key, current, value, adapter, options
|
585
|
+
return !current.nil?
|
586
|
+
end
|
587
|
+
|
588
|
+
# when a value needs to be initialized it is simply set to the value.
|
589
|
+
def self.init key, current, value, options
|
590
|
+
return value
|
591
|
+
end
|
544
592
|
|
545
593
|
end # StateMate
|
data/lib/state_mate/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: state_mate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nrser
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-11-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|